summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJin Park <jinyoungp@nvidia.com>2011-09-26 14:39:22 +0900
committerSimone Willett <swillett@nvidia.com>2011-09-27 15:16:12 -0700
commit6c06d12f10bc221cde89f5a1738b9f003796dd45 (patch)
tree67ca19b9d01dd37c4854aa981dd2bbab610cbff9
parent488785f279a5642fffde3d48d62c77f46a20b63a (diff)
mfd: max77663: Add power off function
Bug 849360 Change-Id: I74b99b76570bf0731d39f63d87eb3f4f9d152270 Signed-off-by: Jin Park <jinyoungp@nvidia.com> Reviewed-on: http://git-master/r/54428 Reviewed-by: Laxman Dewangan <ldewangan@nvidia.com> Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
-rw-r--r--drivers/mfd/max77663-core.c13
-rw-r--r--include/linux/mfd/max77663-core.h1
2 files changed, 14 insertions, 0 deletions
diff --git a/drivers/mfd/max77663-core.c b/drivers/mfd/max77663-core.c
index 7ab53f5b5390..8cc7a5b83893 100644
--- a/drivers/mfd/max77663-core.c
+++ b/drivers/mfd/max77663-core.c
@@ -56,6 +56,7 @@
#define MAX77663_REG_GPIO_PU 0x3E
#define MAX77663_REG_GPIO_PD 0x3F
#define MAX77663_REG_GPIO_ALT 0x40
+#define MAX77663_REG_ONOFF_CFG1 0x41
#define IRQ_TOP_GLBL_MASK (1 << 7)
#define IRQ_TOP_GLBL_SHIFT 7
@@ -110,6 +111,8 @@
#define GPIO_DBNC_16MS 2
#define GPIO_DBNC_32MS 3
+#define ONOFF_SFT_RST_MASK (1 << 7)
+
enum {
CACHE_IRQ_LBT,
CACHE_IRQ_SD,
@@ -349,6 +352,16 @@ int max77663_set_bits(struct device *dev, u8 addr, u8 mask, u8 value,
}
EXPORT_SYMBOL(max77663_set_bits);
+int max77663_power_off(void)
+{
+ struct max77663_chip *chip = max77663_chip;
+
+ dev_info(chip->dev, "%s: Global shutdown\n", __func__);
+ return max77663_set_bits(chip->dev, MAX77663_REG_ONOFF_CFG1,
+ ONOFF_SFT_RST_MASK, ONOFF_SFT_RST_MASK, 0);
+}
+EXPORT_SYMBOL(max77663_power_off);
+
static inline int max77663_cache_write(struct device *dev, u8 addr, u8 mask,
u8 val, u8 *cache)
{
diff --git a/include/linux/mfd/max77663-core.h b/include/linux/mfd/max77663-core.h
index 621df417b7fb..59f8dbecd502 100644
--- a/include/linux/mfd/max77663-core.h
+++ b/include/linux/mfd/max77663-core.h
@@ -94,6 +94,7 @@ int max77663_write(struct device *dev, u8 addr, void *values, u32 len,
bool is_rtc);
int max77663_set_bits(struct device *dev, u8 addr, u8 mask, u8 value,
bool is_rtc);
+int max77663_power_off(void);
int max77663_gpio_set_alternate(int gpio, int alternate);
#endif /* __LINUX_MFD_MAX77663_CORE_H__ */