Back to home page

OSCL-LXR

 
 

    


0001 /* SPDX-License-Identifier: GPL-2.0 */
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 /* VERSION CRC */
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  * NOTE: the functions below are not intended for use outside
0099  * of the TPS6586X sub-device drivers
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 /*__LINUX_MFD_TPS6586X_H */