Merge commit 'main-jb-2012.08.03-B4' into t114-0806
[linux-2.6.git] / include / linux / mfd / tps80031.h
index 0daf37a..974fc0d 100644 (file)
 
 #include <linux/rtc.h>
 
-#define tps80031_rails(_name) "tps80031_"#_name
-
-enum {
-       TPS80031_ID_VIO,
-       TPS80031_ID_SMPS1,
-       TPS80031_ID_SMPS2,
-       TPS80031_ID_SMPS3,
-       TPS80031_ID_SMPS4,
-       TPS80031_ID_VANA,
-       TPS80031_ID_LDO1,
-       TPS80031_ID_LDO2,
-       TPS80031_ID_LDO3,
-       TPS80031_ID_LDO4,
-       TPS80031_ID_LDO5,
-       TPS80031_ID_LDO6,
-       TPS80031_ID_LDO7,
-       TPS80031_ID_LDOLN,
-       TPS80031_ID_LDOUSB,
-       TPS80031_ID_VBUS,
+/* Supported chips */
+enum chips {
+       TPS80031 = 0x00000001,
+       TPS80032 = 0x00000002,
 };
 
 enum {
@@ -72,6 +57,55 @@ enum {
        TPS80031_INT_EXT_CHRG,
        TPS80031_INT_INT_CHRG,
        TPS80031_INT_RES2,
+       TPS80031_INT_BAT_TEMP_OVRANGE,
+       TPS80031_INT_BAT_REMOVED,
+       TPS80031_INT_VBUS_DET,
+       TPS80031_INT_VAC_DET,
+       TPS80031_INT_FAULT_WDG,
+       TPS80031_INT_LINCH_GATED,
+
+       /* Last interrupt id to get the end number */
+       TPS80031_INT_NR,
+};
+
+enum adc_channel {
+       BATTERY_TYPE                    = 0,  /* External ADC */
+       BATTERY_TEMPERATURE             = 1,  /* External ADC */
+       AUDIO_ACCESSORY                 = 2,  /* External ADC */
+       TEMPERATURE_EXTERNAL_DIODE      = 3,  /* External ADC */
+       TEMPERATURE_MEASUREMENT         = 4,  /* External ADC */
+       GENERAL_PURPOSE_1               = 5,  /* External ADC */
+       GENERAL_PURPOSE_2               = 6,  /* External ADC */
+       SYSTEM_SUPPLY                   = 7,  /* Internal ADC */
+       BACKUP_BATTERY                  = 8,  /* Internal ADC */
+       EXTERNAL_CHARGER_INPUT          = 9,  /* Internal ADC */
+       VBUS                            = 10, /* Internal ADC */
+       VBUS_DCDC_OUTPUT_CURRENT        = 11, /* Internal ADC */
+       DIE_TEMPERATURE_1               = 12, /* Internal ADC */
+       DIE_TEMPERATURE_2               = 13, /* Internal ADC */
+       USB_ID_LINE                     = 14, /* Internal ADC */
+       TEST_NETWORK_1                  = 15, /* Internal ADC */
+       TEST_NETWORK_2                  = 16, /* Internal ADC */
+       BATTERY_CHARGING_CURRENT        = 17, /* Internal ADC */
+       BATTERY_VOLTAGE                 = 18, /* Internal ADC */
+};
+
+enum TPS80031_GPIO {
+       TPS80031_GPIO_REGEN1,
+       TPS80031_GPIO_REGEN2,
+       TPS80031_GPIO_SYSEN,
+
+       /* Last entry */
+       TPS80031_GPIO_NR,
+};
+
+enum TPS80031_CLOCK32K {
+       TPS80031_CLOCK32K_AO,
+       TPS80031_CLOCK32K_G,
+       TPS80031_CLOCK32K_AUDIO,
+
+       /* Last entry */
+       TPS80031_CLOCK32K_NR,
 };
 
 enum {
@@ -88,6 +122,40 @@ enum {
        I2C_ID3_ADDR = 0x4A,
 };
 
+/* External controls requests */
+enum tps80031_ext_control {
+       PWR_REQ_INPUT_NONE      = 0x00000000,
+       PWR_REQ_INPUT_PREQ1     = 0x00000001,
+       PWR_REQ_INPUT_PREQ2     = 0x00000002,
+       PWR_REQ_INPUT_PREQ3     = 0x00000004,
+       PWR_OFF_ON_SLEEP        = 0x00000008,
+       PWR_ON_ON_SLEEP         = 0x00000010,
+};
+
+enum tps80031_pupd_pins {
+       TPS80031_PREQ1 = 0,
+       TPS80031_PREQ2A,
+       TPS80031_PREQ2B,
+       TPS80031_PREQ2C,
+       TPS80031_PREQ3,
+       TPS80031_NRES_WARM,
+       TPS80031_PWM_FORCE,
+       TPS80031_CHRG_EXT_CHRG_STATZ,
+       TPS80031_SIM,
+       TPS80031_MMC,
+       TPS80031_GPADC_START,
+       TPS80031_DVSI2C_SCL,
+       TPS80031_DVSI2C_SDA,
+       TPS80031_CTLI2C_SCL,
+       TPS80031_CTLI2C_SDA,
+};
+
+enum tps80031_pupd_settings {
+       TPS80031_PUPD_NORMAL,
+       TPS80031_PUPD_PULLDOWN,
+       TPS80031_PUPD_PULLUP,
+};
+
 struct tps80031_subdev_info {
        int             id;
        const char      *name;
@@ -97,12 +165,23 @@ struct tps80031_subdev_info {
 struct tps80031_rtc_platform_data {
        int irq;
        struct rtc_time time;
+       int msecure_gpio;
+};
+
+struct tps80031_clk32k_init_data {
+       int clk32k_nr;
+       bool enable;
+       unsigned long ext_ctrl_flag;
+};
+
+struct tps80031_gpio_init_data {
+       int gpio_nr;
+       unsigned long ext_ctrl_flag;
 };
 
-struct tps80031_32kclock_plat_data {
-       unsigned en_clk32kao:1;
-       unsigned en_clk32kg:1;
-       unsigned en_clk32kaudio:1;
+struct tps80031_pupd_init_data {
+       int input_pin;
+       int setting;
 };
 
 struct tps80031_platform_data {
@@ -111,6 +190,20 @@ struct tps80031_platform_data {
        int gpio_base;
        int irq_base;
        struct tps80031_32kclock_plat_data *clk32k_pdata;
+       struct tps80031_gpio_init_data *gpio_init_data;
+       int gpio_init_data_size;
+       struct tps80031_clk32k_init_data *clk32k_init_data;
+       int clk32k_init_data_size;
+       bool use_power_off;
+       struct tps80031_pupd_init_data *pupd_init_data;
+       int pupd_init_data_size;
+       struct tps80031_regulator_platform_data **regulator_pdata;
+       int num_regulator_pdata;
+};
+
+struct tps80031_bg_platform_data {
+       int irq_base;
+       int battery_present;
 };
 
 /*
@@ -129,6 +222,16 @@ extern int tps80031_clr_bits(struct device *dev, int sid, int reg,
                                uint8_t bit_mask);
 extern int tps80031_update(struct device *dev, int sid, int reg, uint8_t val,
                           uint8_t mask);
-extern int tps80031_power_off(void);
+extern int tps80031_force_update(struct device *dev, int sid, int reg,
+                                uint8_t val, uint8_t mask);
+extern int tps80031_ext_power_req_config(struct device *dev,
+               unsigned long ext_ctrl_flag, int preq_bit,
+               int state_reg_add, int trans_reg_add);
+
+extern unsigned long tps80031_get_chip_info(struct device *dev);
+
+extern int tps80031_gpadc_conversion(int channle_no);
+
+extern int tps80031_get_pmu_version(struct device *dev);
 
 #endif /*__LINUX_MFD_TPS80031_H */