2 * include/linux/mfd/max77663-core.h
4 * Copyright 2011 Maxim Integrated Products, Inc.
5 * Copyright (C) 2011-2012 NVIDIA Corporation
7 * This program is free software; you can redistribute it and/or
8 * modify it under the terms of the GNU General Public License as
9 * published by the Free Software Foundation; either version 2 of the
10 * License, or (at your option) any later version.
14 #ifndef __LINUX_MFD_MAX77663_CORE_H__
15 #define __LINUX_MFD_MAX77663_CORE_H__
17 #include <linux/irq.h>
18 #include <linux/mfd/core.h>
24 MAX77663_IRQ_INT_TOP_GPIO, /* TOP GPIO internal int to max77663 */
25 MAX77663_IRQ_LBT_LB, /* Low-Battery */
26 MAX77663_IRQ_LBT_THERM_ALRM1, /* Thermal alarm status, > 120C */
27 MAX77663_IRQ_LBT_THERM_ALRM2, /* Thermal alarm status, > 140C */
29 MAX77663_IRQ_GPIO0, /* GPIO0 edge detection */
30 MAX77663_IRQ_GPIO1, /* GPIO1 edge detection */
31 MAX77663_IRQ_GPIO2, /* GPIO2 edge detection */
32 MAX77663_IRQ_GPIO3, /* GPIO3 edge detection */
33 MAX77663_IRQ_GPIO4, /* GPIO4 edge detection */
34 MAX77663_IRQ_GPIO5, /* GPIO5 edge detection */
35 MAX77663_IRQ_GPIO6, /* GPIO6 edge detection */
36 MAX77663_IRQ_GPIO7, /* GPIO7 edge detection */
38 MAX77663_IRQ_ONOFF_HRDPOWRN, /* Hard power off warnning */
39 MAX77663_IRQ_ONOFF_EN0_1SEC, /* EN0 active for 1s */
40 MAX77663_IRQ_ONOFF_EN0_FALLING, /* EN0 falling */
41 MAX77663_IRQ_ONOFF_EN0_RISING, /* EN0 rising */
42 MAX77663_IRQ_ONOFF_LID_FALLING, /* LID falling */
43 MAX77663_IRQ_ONOFF_LID_RISING, /* LID rising */
44 MAX77663_IRQ_ONOFF_ACOK_FALLING,/* ACOK falling */
45 MAX77663_IRQ_ONOFF_ACOK_RISING, /* ACOK rising */
47 MAX77663_IRQ_RTC, /* RTC */
48 MAX77663_IRQ_SD_PF, /* SD power fail */
49 MAX77663_IRQ_LDO_PF, /* LDO power fail */
50 MAX77663_IRQ_32K, /* 32kHz oscillator */
51 MAX77663_IRQ_NVER, /* Non-Volatile Event Recorder */
73 enum max77663_gpio_dir {
80 enum max77663_gpio_data_out {
87 enum max77663_gpio_out_drv {
89 GPIO_OUT_DRV_PUSH_PULL,
90 GPIO_OUT_DRV_OPEN_DRAIN,
94 enum max77663_gpio_pull_up {
101 enum max77663_gpio_pull_down {
108 enum max77663_gpio_alt {
117 #define SLP_LPM_ENABLE 0x01
119 struct max77663_gpio_config {
120 int gpio; /* gpio number */
121 enum max77663_gpio_dir dir;
122 enum max77663_gpio_data_out dout;
123 enum max77663_gpio_out_drv out_drv;
124 enum max77663_gpio_pull_up pull_up;
125 enum max77663_gpio_pull_down pull_down;
126 enum max77663_gpio_alt alternate;
129 struct max77663_platform_data {
134 struct max77663_gpio_config *gpio_cfgs;
137 struct mfd_cell *sub_devices;
141 unsigned char rtc_i2c_addr;
146 #if defined(CONFIG_MFD_MAX77663)
147 int max77663_read(struct device *dev, u8 addr, void *values, u32 len,
149 int max77663_write(struct device *dev, u8 addr, void *values, u32 len,
151 int max77663_set_bits(struct device *dev, u8 addr, u8 mask, u8 value,
153 int max77663_gpio_set_alternate(int gpio, int alternate);
155 static inline int max77663_read(struct device *dev, u8 addr, void *values,
156 u32 len, bool is_rtc)
161 static inline int max77663_write(struct device *dev, u8 addr, void *values,
162 u32 len, bool is_rtc)
167 static inline int max77663_set_bits(struct device *dev, u8 addr, u8 mask,
168 u8 value, bool is_rtc)
173 static inline int max77663_gpio_set_alternate(int gpio, int alternate)
177 #endif /* defined(CONFIG_MFD_MAX77663) */
179 #endif /* __LINUX_MFD_MAX77663_CORE_H__ */