.resource_config = twl4030_rconfig,
};
+#ifdef CONFIG_HAS_EARLYSUSPEND
+void twl60xx_pmu_early_suspend(struct regulator_dev *rdev)
+{
+ printk("%s\n", __func__);
+
+ twl_reg_write(0x06,TWL_MODULE_PIH, 0x00);
+}
+void twl60xx_pmu_early_resume(struct regulator_dev *rdev)
+{
+ printk("%s\n", __func__);
+
+ twl_reg_write(0x06,TWL_MODULE_PIH, 0x04);
+}
+#else
+void twl60xx_pmu_early_suspend(struct regulator_dev *rdev)
+{
+}
+void twl60xx_pmu_early_resume(struct regulator_dev *rdev)
+{
+}
+#endif
void __sramfunc board_pmu_suspend(void)
{
#include <linux/i2c/twl.h>
#include "twl-core.h"
+#include <linux/earlysuspend.h>
+#ifdef CONFIG_HAS_EARLYSUSPEND
+static struct early_suspend twl60xx_early_suspend;
+#endif
+
#if defined(CONFIG_ARCH_OMAP2) || defined(CONFIG_ARCH_OMAP3)
#include <plat/cpu.h>
#endif
}
/* NOTE: this driver only handles a single twl4030/tps659x0 chip */
+__weak void twl60xx_pmu_early_suspend(struct regulator_dev *rdev) {}
+__weak void twl60xx_pmu_early_resume(struct regulator_dev *rdev) {}
+
static int __devinit
twl_probe(struct i2c_client *client, const struct i2c_device_id *id)
{
printk(" tps80032 set_init() failed\n");
}
}
+ #ifdef CONFIG_HAS_EARLYSUSPEND
+ twl60xx_early_suspend.level = 0xffff;
+ twl60xx_early_suspend.suspend = twl60xx_pmu_early_suspend;
+ twl60xx_early_suspend.resume = twl60xx_pmu_early_resume;
+ register_early_suspend(&twl60xx_early_suspend);
+ #endif
+
fail:
if (status < 0)
#include "twl-core.h"
+#include <mach/board.h>
/*
* TWL6030 (unlike its predecessors, which had two level interrupt handling)
* three interrupt registers INT_STS_A, INT_STS_B and INT_STS_C.
*/
static irqreturn_t handle_twl6030_vlow(int irq, void *unused)
{
+#ifdef CONFIG_TWL60xx_VBAT_LOW_DETECTION
+ rk28_send_wakeup_key();
+#else
pr_err("twl6030: BAT_VLOW interrupt; threshold=%dmV\n",
2300 + (vbatmin_hi_threshold - 0b110) * 50);
-
#if 1 /* temporary */
pr_err("%s: disabling BAT_VLOW interrupt\n", __func__);
disable_irq_nosync(twl6030_irq_base + TWL_VLOW_INTR_OFFSET);
#else
pr_emerg("handle_twl6030_vlow: kernel_power_off()\n");
kernel_power_off();
+#endif
#endif
return IRQ_HANDLED;
}
tristate "Support for WM8326 battery voltage detection."
default n
+config TWL60xx_VBAT_LOW_DETECTION
+ tristate "Support for twl60xx low battery detection."
+ default n
+
endif # POWER_SUPPLY