diff options
Diffstat (limited to 'include/linux/mfd')
| -rw-r--r-- | include/linux/mfd/abx500.h | 2 | ||||
| -rw-r--r-- | include/linux/mfd/abx500/ab8500-bm.h | 29 | ||||
| -rw-r--r-- | include/linux/mfd/da9052/da9052.h | 66 | ||||
| -rw-r--r-- | include/linux/mfd/da9052/reg.h | 3 | ||||
| -rw-r--r-- | include/linux/mfd/rtsx_common.h | 3 | ||||
| -rw-r--r-- | include/linux/mfd/rtsx_pci.h | 25 |
6 files changed, 93 insertions, 35 deletions
diff --git a/include/linux/mfd/abx500.h b/include/linux/mfd/abx500.h index 2138bd33021a..e53dcfeaee69 100644 --- a/include/linux/mfd/abx500.h +++ b/include/linux/mfd/abx500.h | |||
| @@ -272,8 +272,6 @@ struct abx500_bm_data { | |||
| 272 | const struct abx500_fg_parameters *fg_params; | 272 | const struct abx500_fg_parameters *fg_params; |
| 273 | }; | 273 | }; |
| 274 | 274 | ||
| 275 | extern struct abx500_bm_data ab8500_bm_data; | ||
| 276 | |||
| 277 | enum { | 275 | enum { |
| 278 | NTC_EXTERNAL = 0, | 276 | NTC_EXTERNAL = 0, |
| 279 | NTC_INTERNAL, | 277 | NTC_INTERNAL, |
diff --git a/include/linux/mfd/abx500/ab8500-bm.h b/include/linux/mfd/abx500/ab8500-bm.h index 44310c98ee6e..9bd037df97d9 100644 --- a/include/linux/mfd/abx500/ab8500-bm.h +++ b/include/linux/mfd/abx500/ab8500-bm.h | |||
| @@ -422,7 +422,10 @@ struct ab8500_chargalg_platform_data { | |||
| 422 | struct ab8500_btemp; | 422 | struct ab8500_btemp; |
| 423 | struct ab8500_gpadc; | 423 | struct ab8500_gpadc; |
| 424 | struct ab8500_fg; | 424 | struct ab8500_fg; |
| 425 | |||
| 425 | #ifdef CONFIG_AB8500_BM | 426 | #ifdef CONFIG_AB8500_BM |
| 427 | extern struct abx500_bm_data ab8500_bm_data; | ||
| 428 | |||
| 426 | void ab8500_fg_reinit(void); | 429 | void ab8500_fg_reinit(void); |
| 427 | void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA); | 430 | void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA); |
| 428 | struct ab8500_btemp *ab8500_btemp_get(void); | 431 | struct ab8500_btemp *ab8500_btemp_get(void); |
| @@ -434,31 +437,7 @@ int ab8500_fg_inst_curr_finalize(struct ab8500_fg *di, int *res); | |||
| 434 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di); | 437 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di); |
| 435 | 438 | ||
| 436 | #else | 439 | #else |
| 437 | int ab8500_fg_inst_curr_done(struct ab8500_fg *di) | 440 | static struct abx500_bm_data ab8500_bm_data; |
| 438 | { | ||
| 439 | } | ||
| 440 | static void ab8500_fg_reinit(void) | ||
| 441 | { | ||
| 442 | } | ||
| 443 | static void ab8500_charger_usb_state_changed(u8 bm_usb_state, u16 mA) | ||
| 444 | { | ||
| 445 | } | ||
| 446 | static struct ab8500_btemp *ab8500_btemp_get(void) | ||
| 447 | { | ||
| 448 | return NULL; | ||
| 449 | } | ||
| 450 | static int ab8500_btemp_get_batctrl_temp(struct ab8500_btemp *btemp) | ||
| 451 | { | ||
| 452 | return 0; | ||
| 453 | } | ||
| 454 | struct ab8500_fg *ab8500_fg_get(void) | ||
| 455 | { | ||
| 456 | return NULL; | ||
| 457 | } | ||
| 458 | static int ab8500_fg_inst_curr_blocking(struct ab8500_fg *dev) | ||
| 459 | { | ||
| 460 | return -ENODEV; | ||
| 461 | } | ||
| 462 | 441 | ||
| 463 | static inline int ab8500_fg_inst_curr_start(struct ab8500_fg *di) | 442 | static inline int ab8500_fg_inst_curr_start(struct ab8500_fg *di) |
| 464 | { | 443 | { |
diff --git a/include/linux/mfd/da9052/da9052.h b/include/linux/mfd/da9052/da9052.h index 86dd93de6ff2..786d02eb79d2 100644 --- a/include/linux/mfd/da9052/da9052.h +++ b/include/linux/mfd/da9052/da9052.h | |||
| @@ -99,6 +99,9 @@ struct da9052 { | |||
| 99 | u8 chip_id; | 99 | u8 chip_id; |
| 100 | 100 | ||
| 101 | int chip_irq; | 101 | int chip_irq; |
| 102 | |||
| 103 | /* SOC I/O transfer related fixes for DA9052/53 */ | ||
| 104 | int (*fix_io) (struct da9052 *da9052, unsigned char reg); | ||
| 102 | }; | 105 | }; |
| 103 | 106 | ||
| 104 | /* ADC API */ | 107 | /* ADC API */ |
| @@ -113,32 +116,87 @@ static inline int da9052_reg_read(struct da9052 *da9052, unsigned char reg) | |||
| 113 | ret = regmap_read(da9052->regmap, reg, &val); | 116 | ret = regmap_read(da9052->regmap, reg, &val); |
| 114 | if (ret < 0) | 117 | if (ret < 0) |
| 115 | return ret; | 118 | return ret; |
| 119 | |||
| 120 | if (da9052->fix_io) { | ||
| 121 | ret = da9052->fix_io(da9052, reg); | ||
| 122 | if (ret < 0) | ||
| 123 | return ret; | ||
| 124 | } | ||
| 125 | |||
| 116 | return val; | 126 | return val; |
| 117 | } | 127 | } |
| 118 | 128 | ||
| 119 | static inline int da9052_reg_write(struct da9052 *da9052, unsigned char reg, | 129 | static inline int da9052_reg_write(struct da9052 *da9052, unsigned char reg, |
| 120 | unsigned char val) | 130 | unsigned char val) |
| 121 | { | 131 | { |
| 122 | return regmap_write(da9052->regmap, reg, val); | 132 | int ret; |
| 133 | |||
| 134 | ret = regmap_write(da9052->regmap, reg, val); | ||
| 135 | if (ret < 0) | ||
| 136 | return ret; | ||
| 137 | |||
| 138 | if (da9052->fix_io) { | ||
| 139 | ret = da9052->fix_io(da9052, reg); | ||
| 140 | if (ret < 0) | ||
| 141 | return ret; | ||
| 142 | } | ||
| 143 | |||
| 144 | return ret; | ||
| 123 | } | 145 | } |
| 124 | 146 | ||
| 125 | static inline int da9052_group_read(struct da9052 *da9052, unsigned char reg, | 147 | static inline int da9052_group_read(struct da9052 *da9052, unsigned char reg, |
| 126 | unsigned reg_cnt, unsigned char *val) | 148 | unsigned reg_cnt, unsigned char *val) |
| 127 | { | 149 | { |
| 128 | return regmap_bulk_read(da9052->regmap, reg, val, reg_cnt); | 150 | int ret; |
| 151 | |||
| 152 | ret = regmap_bulk_read(da9052->regmap, reg, val, reg_cnt); | ||
| 153 | if (ret < 0) | ||
| 154 | return ret; | ||
| 155 | |||
| 156 | if (da9052->fix_io) { | ||
| 157 | ret = da9052->fix_io(da9052, reg); | ||
| 158 | if (ret < 0) | ||
| 159 | return ret; | ||
| 160 | } | ||
| 161 | |||
| 162 | return ret; | ||
| 129 | } | 163 | } |
| 130 | 164 | ||
| 131 | static inline int da9052_group_write(struct da9052 *da9052, unsigned char reg, | 165 | static inline int da9052_group_write(struct da9052 *da9052, unsigned char reg, |
| 132 | unsigned reg_cnt, unsigned char *val) | 166 | unsigned reg_cnt, unsigned char *val) |
| 133 | { | 167 | { |
| 134 | return regmap_raw_write(da9052->regmap, reg, val, reg_cnt); | 168 | int ret; |
| 169 | |||
| 170 | ret = regmap_raw_write(da9052->regmap, reg, val, reg_cnt); | ||
| 171 | if (ret < 0) | ||
| 172 | return ret; | ||
| 173 | |||
| 174 | if (da9052->fix_io) { | ||
| 175 | ret = da9052->fix_io(da9052, reg); | ||
| 176 | if (ret < 0) | ||
| 177 | return ret; | ||
| 178 | } | ||
| 179 | |||
| 180 | return ret; | ||
| 135 | } | 181 | } |
| 136 | 182 | ||
| 137 | static inline int da9052_reg_update(struct da9052 *da9052, unsigned char reg, | 183 | static inline int da9052_reg_update(struct da9052 *da9052, unsigned char reg, |
| 138 | unsigned char bit_mask, | 184 | unsigned char bit_mask, |
| 139 | unsigned char reg_val) | 185 | unsigned char reg_val) |
| 140 | { | 186 | { |
| 141 | return regmap_update_bits(da9052->regmap, reg, bit_mask, reg_val); | 187 | int ret; |
| 188 | |||
| 189 | ret = regmap_update_bits(da9052->regmap, reg, bit_mask, reg_val); | ||
| 190 | if (ret < 0) | ||
| 191 | return ret; | ||
| 192 | |||
| 193 | if (da9052->fix_io) { | ||
| 194 | ret = da9052->fix_io(da9052, reg); | ||
| 195 | if (ret < 0) | ||
| 196 | return ret; | ||
| 197 | } | ||
| 198 | |||
| 199 | return ret; | ||
| 142 | } | 200 | } |
| 143 | 201 | ||
| 144 | int da9052_device_init(struct da9052 *da9052, u8 chip_id); | 202 | int da9052_device_init(struct da9052 *da9052, u8 chip_id); |
diff --git a/include/linux/mfd/da9052/reg.h b/include/linux/mfd/da9052/reg.h index b97f7309d7f6..c4dd3a8add21 100644 --- a/include/linux/mfd/da9052/reg.h +++ b/include/linux/mfd/da9052/reg.h | |||
| @@ -34,6 +34,9 @@ | |||
| 34 | #define DA9052_STATUS_C_REG 3 | 34 | #define DA9052_STATUS_C_REG 3 |
| 35 | #define DA9052_STATUS_D_REG 4 | 35 | #define DA9052_STATUS_D_REG 4 |
| 36 | 36 | ||
| 37 | /* PARK REGISTER */ | ||
| 38 | #define DA9052_PARK_REGISTER DA9052_STATUS_D_REG | ||
| 39 | |||
| 37 | /* EVENT REGISTERS */ | 40 | /* EVENT REGISTERS */ |
| 38 | #define DA9052_EVENT_A_REG 5 | 41 | #define DA9052_EVENT_A_REG 5 |
| 39 | #define DA9052_EVENT_B_REG 6 | 42 | #define DA9052_EVENT_B_REG 6 |
diff --git a/include/linux/mfd/rtsx_common.h b/include/linux/mfd/rtsx_common.h index a8d393e3066b..2b13970596f5 100644 --- a/include/linux/mfd/rtsx_common.h +++ b/include/linux/mfd/rtsx_common.h | |||
| @@ -38,6 +38,9 @@ | |||
| 38 | #define RTSX_SD_CARD 0 | 38 | #define RTSX_SD_CARD 0 |
| 39 | #define RTSX_MS_CARD 1 | 39 | #define RTSX_MS_CARD 1 |
| 40 | 40 | ||
| 41 | #define CLK_TO_DIV_N 0 | ||
| 42 | #define DIV_N_TO_CLK 1 | ||
| 43 | |||
| 41 | struct platform_device; | 44 | struct platform_device; |
| 42 | 45 | ||
| 43 | struct rtsx_slot { | 46 | struct rtsx_slot { |
diff --git a/include/linux/mfd/rtsx_pci.h b/include/linux/mfd/rtsx_pci.h index 060b721fcbfb..4b117a3f54d4 100644 --- a/include/linux/mfd/rtsx_pci.h +++ b/include/linux/mfd/rtsx_pci.h | |||
| @@ -158,10 +158,9 @@ | |||
| 158 | #define SG_TRANS_DATA (0x02 << 4) | 158 | #define SG_TRANS_DATA (0x02 << 4) |
| 159 | #define SG_LINK_DESC (0x03 << 4) | 159 | #define SG_LINK_DESC (0x03 << 4) |
| 160 | 160 | ||
| 161 | /* SD bank voltage */ | 161 | /* Output voltage */ |
| 162 | #define SD_IO_3V3 0 | 162 | #define OUTPUT_3V3 0 |
| 163 | #define SD_IO_1V8 1 | 163 | #define OUTPUT_1V8 1 |
| 164 | |||
| 165 | 164 | ||
| 166 | /* Card Clock Enable Register */ | 165 | /* Card Clock Enable Register */ |
| 167 | #define SD_CLK_EN 0x04 | 166 | #define SD_CLK_EN 0x04 |
| @@ -201,6 +200,20 @@ | |||
| 201 | #define CHANGE_CLK 0x01 | 200 | #define CHANGE_CLK 0x01 |
| 202 | 201 | ||
| 203 | /* LDO_CTL */ | 202 | /* LDO_CTL */ |
| 203 | #define BPP_ASIC_1V7 0x00 | ||
| 204 | #define BPP_ASIC_1V8 0x01 | ||
| 205 | #define BPP_ASIC_1V9 0x02 | ||
| 206 | #define BPP_ASIC_2V0 0x03 | ||
| 207 | #define BPP_ASIC_2V7 0x04 | ||
| 208 | #define BPP_ASIC_2V8 0x05 | ||
| 209 | #define BPP_ASIC_3V2 0x06 | ||
| 210 | #define BPP_ASIC_3V3 0x07 | ||
| 211 | #define BPP_REG_TUNED18 0x07 | ||
| 212 | #define BPP_TUNED18_SHIFT_8402 5 | ||
| 213 | #define BPP_TUNED18_SHIFT_8411 4 | ||
| 214 | #define BPP_PAD_MASK 0x04 | ||
| 215 | #define BPP_PAD_3V3 0x04 | ||
| 216 | #define BPP_PAD_1V8 0x00 | ||
| 204 | #define BPP_LDO_POWB 0x03 | 217 | #define BPP_LDO_POWB 0x03 |
| 205 | #define BPP_LDO_ON 0x00 | 218 | #define BPP_LDO_ON 0x00 |
| 206 | #define BPP_LDO_SUSPEND 0x02 | 219 | #define BPP_LDO_SUSPEND 0x02 |
| @@ -688,7 +701,10 @@ struct pcr_ops { | |||
| 688 | int (*disable_auto_blink)(struct rtsx_pcr *pcr); | 701 | int (*disable_auto_blink)(struct rtsx_pcr *pcr); |
| 689 | int (*card_power_on)(struct rtsx_pcr *pcr, int card); | 702 | int (*card_power_on)(struct rtsx_pcr *pcr, int card); |
| 690 | int (*card_power_off)(struct rtsx_pcr *pcr, int card); | 703 | int (*card_power_off)(struct rtsx_pcr *pcr, int card); |
| 704 | int (*switch_output_voltage)(struct rtsx_pcr *pcr, | ||
| 705 | u8 voltage); | ||
| 691 | unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); | 706 | unsigned int (*cd_deglitch)(struct rtsx_pcr *pcr); |
| 707 | int (*conv_clk_and_div_n)(int clk, int dir); | ||
| 692 | }; | 708 | }; |
| 693 | 709 | ||
| 694 | enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; | 710 | enum PDEV_STAT {PDEV_STAT_IDLE, PDEV_STAT_RUN}; |
| @@ -783,6 +799,7 @@ int rtsx_pci_switch_clock(struct rtsx_pcr *pcr, unsigned int card_clock, | |||
| 783 | u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk); | 799 | u8 ssc_depth, bool initial_mode, bool double_clk, bool vpclk); |
| 784 | int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card); | 800 | int rtsx_pci_card_power_on(struct rtsx_pcr *pcr, int card); |
| 785 | int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card); | 801 | int rtsx_pci_card_power_off(struct rtsx_pcr *pcr, int card); |
| 802 | int rtsx_pci_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage); | ||
| 786 | unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr); | 803 | unsigned int rtsx_pci_card_exist(struct rtsx_pcr *pcr); |
| 787 | void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr); | 804 | void rtsx_pci_complete_unfinished_transfer(struct rtsx_pcr *pcr); |
| 788 | 805 | ||
