tps6586x.h 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100
  1. #ifndef __LINUX_MFD_TPS6586X_H
  2. #define __LINUX_MFD_TPS6586X_H
  3. #define TPS6586X_SLEW_RATE_INSTANTLY 0x00
  4. #define TPS6586X_SLEW_RATE_110UV 0x01
  5. #define TPS6586X_SLEW_RATE_220UV 0x02
  6. #define TPS6586X_SLEW_RATE_440UV 0x03
  7. #define TPS6586X_SLEW_RATE_880UV 0x04
  8. #define TPS6586X_SLEW_RATE_1760UV 0x05
  9. #define TPS6586X_SLEW_RATE_3520UV 0x06
  10. #define TPS6586X_SLEW_RATE_7040UV 0x07
  11. #define TPS6586X_SLEW_RATE_SET 0x08
  12. #define TPS6586X_SLEW_RATE_MASK 0x07
  13. enum {
  14. TPS6586X_ID_SYS,
  15. TPS6586X_ID_SM_0,
  16. TPS6586X_ID_SM_1,
  17. TPS6586X_ID_SM_2,
  18. TPS6586X_ID_LDO_0,
  19. TPS6586X_ID_LDO_1,
  20. TPS6586X_ID_LDO_2,
  21. TPS6586X_ID_LDO_3,
  22. TPS6586X_ID_LDO_4,
  23. TPS6586X_ID_LDO_5,
  24. TPS6586X_ID_LDO_6,
  25. TPS6586X_ID_LDO_7,
  26. TPS6586X_ID_LDO_8,
  27. TPS6586X_ID_LDO_9,
  28. TPS6586X_ID_LDO_RTC,
  29. TPS6586X_ID_MAX_REGULATOR,
  30. };
  31. enum {
  32. TPS6586X_INT_PLDO_0,
  33. TPS6586X_INT_PLDO_1,
  34. TPS6586X_INT_PLDO_2,
  35. TPS6586X_INT_PLDO_3,
  36. TPS6586X_INT_PLDO_4,
  37. TPS6586X_INT_PLDO_5,
  38. TPS6586X_INT_PLDO_6,
  39. TPS6586X_INT_PLDO_7,
  40. TPS6586X_INT_COMP_DET,
  41. TPS6586X_INT_ADC,
  42. TPS6586X_INT_PLDO_8,
  43. TPS6586X_INT_PLDO_9,
  44. TPS6586X_INT_PSM_0,
  45. TPS6586X_INT_PSM_1,
  46. TPS6586X_INT_PSM_2,
  47. TPS6586X_INT_PSM_3,
  48. TPS6586X_INT_RTC_ALM1,
  49. TPS6586X_INT_ACUSB_OVP,
  50. TPS6586X_INT_USB_DET,
  51. TPS6586X_INT_AC_DET,
  52. TPS6586X_INT_BAT_DET,
  53. TPS6586X_INT_CHG_STAT,
  54. TPS6586X_INT_CHG_TEMP,
  55. TPS6586X_INT_PP,
  56. TPS6586X_INT_RESUME,
  57. TPS6586X_INT_LOW_SYS,
  58. TPS6586X_INT_RTC_ALM2,
  59. };
  60. struct tps6586x_settings {
  61. int slew_rate;
  62. };
  63. struct tps6586x_subdev_info {
  64. int id;
  65. const char *name;
  66. void *platform_data;
  67. struct device_node *of_node;
  68. };
  69. struct tps6586x_platform_data {
  70. int num_subdevs;
  71. struct tps6586x_subdev_info *subdevs;
  72. int gpio_base;
  73. int irq_base;
  74. bool pm_off;
  75. struct regulator_init_data *reg_init_data[TPS6586X_ID_MAX_REGULATOR];
  76. };
  77. /*
  78. * NOTE: the functions below are not intended for use outside
  79. * of the TPS6586X sub-device drivers
  80. */
  81. extern int tps6586x_write(struct device *dev, int reg, uint8_t val);
  82. extern int tps6586x_writes(struct device *dev, int reg, int len, uint8_t *val);
  83. extern int tps6586x_read(struct device *dev, int reg, uint8_t *val);
  84. extern int tps6586x_reads(struct device *dev, int reg, int len, uint8_t *val);
  85. extern int tps6586x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
  86. extern int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
  87. extern int tps6586x_update(struct device *dev, int reg, uint8_t val,
  88. uint8_t mask);
  89. #endif /*__LINUX_MFD_TPS6586X_H */