tps6586x.h 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697
  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. };
  30. enum {
  31. TPS6586X_INT_PLDO_0,
  32. TPS6586X_INT_PLDO_1,
  33. TPS6586X_INT_PLDO_2,
  34. TPS6586X_INT_PLDO_3,
  35. TPS6586X_INT_PLDO_4,
  36. TPS6586X_INT_PLDO_5,
  37. TPS6586X_INT_PLDO_6,
  38. TPS6586X_INT_PLDO_7,
  39. TPS6586X_INT_COMP_DET,
  40. TPS6586X_INT_ADC,
  41. TPS6586X_INT_PLDO_8,
  42. TPS6586X_INT_PLDO_9,
  43. TPS6586X_INT_PSM_0,
  44. TPS6586X_INT_PSM_1,
  45. TPS6586X_INT_PSM_2,
  46. TPS6586X_INT_PSM_3,
  47. TPS6586X_INT_RTC_ALM1,
  48. TPS6586X_INT_ACUSB_OVP,
  49. TPS6586X_INT_USB_DET,
  50. TPS6586X_INT_AC_DET,
  51. TPS6586X_INT_BAT_DET,
  52. TPS6586X_INT_CHG_STAT,
  53. TPS6586X_INT_CHG_TEMP,
  54. TPS6586X_INT_PP,
  55. TPS6586X_INT_RESUME,
  56. TPS6586X_INT_LOW_SYS,
  57. TPS6586X_INT_RTC_ALM2,
  58. };
  59. struct tps6586x_settings {
  60. int slew_rate;
  61. };
  62. struct tps6586x_subdev_info {
  63. int id;
  64. const char *name;
  65. void *platform_data;
  66. struct device_node *of_node;
  67. };
  68. struct tps6586x_platform_data {
  69. int num_subdevs;
  70. struct tps6586x_subdev_info *subdevs;
  71. int gpio_base;
  72. int irq_base;
  73. bool pm_off;
  74. };
  75. /*
  76. * NOTE: the functions below are not intended for use outside
  77. * of the TPS6586X sub-device drivers
  78. */
  79. extern int tps6586x_write(struct device *dev, int reg, uint8_t val);
  80. extern int tps6586x_writes(struct device *dev, int reg, int len, uint8_t *val);
  81. extern int tps6586x_read(struct device *dev, int reg, uint8_t *val);
  82. extern int tps6586x_reads(struct device *dev, int reg, int len, uint8_t *val);
  83. extern int tps6586x_set_bits(struct device *dev, int reg, uint8_t bit_mask);
  84. extern int tps6586x_clr_bits(struct device *dev, int reg, uint8_t bit_mask);
  85. extern int tps6586x_update(struct device *dev, int reg, uint8_t val,
  86. uint8_t mask);
  87. #endif /*__LINUX_MFD_TPS6586X_H */