0001
0002 #ifndef __LINUX_MFD_TPS6586X_H
0003 #define __LINUX_MFD_TPS6586X_H
0004
0005 #define TPS6586X_SLEW_RATE_INSTANTLY 0x00
0006 #define TPS6586X_SLEW_RATE_110UV 0x01
0007 #define TPS6586X_SLEW_RATE_220UV 0x02
0008 #define TPS6586X_SLEW_RATE_440UV 0x03
0009 #define TPS6586X_SLEW_RATE_880UV 0x04
0010 #define TPS6586X_SLEW_RATE_1760UV 0x05
0011 #define TPS6586X_SLEW_RATE_3520UV 0x06
0012 #define TPS6586X_SLEW_RATE_7040UV 0x07
0013
0014 #define TPS6586X_SLEW_RATE_SET 0x08
0015 #define TPS6586X_SLEW_RATE_MASK 0x07
0016
0017
0018 #define TPS658621A 0x15
0019 #define TPS658621CD 0x2c
0020 #define TPS658623 0x1b
0021 #define TPS658624 0x0a
0022 #define TPS658640 0x01
0023 #define TPS658640v2 0x02
0024 #define TPS658643 0x03
0025
0026 enum {
0027 TPS6586X_ID_SYS,
0028 TPS6586X_ID_SM_0,
0029 TPS6586X_ID_SM_1,
0030 TPS6586X_ID_SM_2,
0031 TPS6586X_ID_LDO_0,
0032 TPS6586X_ID_LDO_1,
0033 TPS6586X_ID_LDO_2,
0034 TPS6586X_ID_LDO_3,
0035 TPS6586X_ID_LDO_4,
0036 TPS6586X_ID_LDO_5,
0037 TPS6586X_ID_LDO_6,
0038 TPS6586X_ID_LDO_7,
0039 TPS6586X_ID_LDO_8,
0040 TPS6586X_ID_LDO_9,
0041 TPS6586X_ID_LDO_RTC,
0042 TPS6586X_ID_MAX_REGULATOR,
0043 };
0044
0045 enum {
0046 TPS6586X_INT_PLDO_0,
0047 TPS6586X_INT_PLDO_1,
0048 TPS6586X_INT_PLDO_2,
0049 TPS6586X_INT_PLDO_3,
0050 TPS6586X_INT_PLDO_4,
0051 TPS6586X_INT_PLDO_5,
0052 TPS6586X_INT_PLDO_6,
0053 TPS6586X_INT_PLDO_7,
0054 TPS6586X_INT_COMP_DET,
0055 TPS6586X_INT_ADC,
0056 TPS6586X_INT_PLDO_8,
0057 TPS6586X_INT_PLDO_9,
0058 TPS6586X_INT_PSM_0,
0059 TPS6586X_INT_PSM_1,
0060 TPS6586X_INT_PSM_2,
0061 TPS6586X_INT_PSM_3,
0062 TPS6586X_INT_RTC_ALM1,
0063 TPS6586X_INT_ACUSB_OVP,
0064 TPS6586X_INT_USB_DET,
0065 TPS6586X_INT_AC_DET,
0066 TPS6586X_INT_BAT_DET,
0067 TPS6586X_INT_CHG_STAT,
0068 TPS6586X_INT_CHG_TEMP,
0069 TPS6586X_INT_PP,
0070 TPS6586X_INT_RESUME,
0071 TPS6586X_INT_LOW_SYS,
0072 TPS6586X_INT_RTC_ALM2,
0073 };
0074
0075 struct tps6586x_settings {
0076 int slew_rate;
0077 };
0078
0079 struct tps6586x_subdev_info {
0080 int id;
0081 const char *name;
0082 void *platform_data;
0083 struct device_node *of_node;
0084 };
0085
0086 struct tps6586x_platform_data {
0087 int num_subdevs;
0088 struct tps6586x_subdev_info *subdevs;
0089
0090 int gpio_base;
0091 int irq_base;
0092 bool pm_off;
0093
0094 struct regulator_init_data *reg_init_data[TPS6586X_ID_MAX_REGULATOR];
0095 };
0096
0097
0098
0099
0100
0101 extern int tps6586x_write(struct device *dev, int reg, uint8_t val);
0102 extern int tps6586x_writes(struct device *dev, int reg, int len, uint8_t *val);
0103 extern int tps6586x_read(struct device *dev, int reg, uint8_t *val);
0104 extern int tps6586x_reads(struct device *dev, int reg, int len, uint8_t *val);
0105 extern int tps6586x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
0106 extern int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
0107 extern int tps6586x_update(struct device *dev, int reg, uint8_t val,
0108 uint8_t mask);
0109 extern int tps6586x_irq_get_virq(struct device *dev, int irq);
0110 extern int tps6586x_get_version(struct device *dev);
0111
0112 #endif