diff options
Diffstat (limited to 'drivers/mfd/rts5229.c')
-rw-r--r-- | drivers/mfd/rts5229.c | 21 |
1 files changed, 21 insertions, 0 deletions
diff --git a/drivers/mfd/rts5229.c b/drivers/mfd/rts5229.c index b9dbab266fda..29d889cbb9c5 100644 --- a/drivers/mfd/rts5229.c +++ b/drivers/mfd/rts5229.c | |||
@@ -114,6 +114,25 @@ static int rts5229_card_power_off(struct rtsx_pcr *pcr, int card) | |||
114 | return rtsx_pci_send_cmd(pcr, 100); | 114 | return rtsx_pci_send_cmd(pcr, 100); |
115 | } | 115 | } |
116 | 116 | ||
117 | static int rts5229_switch_output_voltage(struct rtsx_pcr *pcr, u8 voltage) | ||
118 | { | ||
119 | int err; | ||
120 | |||
121 | if (voltage == OUTPUT_3V3) { | ||
122 | err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4FC0 | 0x24); | ||
123 | if (err < 0) | ||
124 | return err; | ||
125 | } else if (voltage == OUTPUT_1V8) { | ||
126 | err = rtsx_pci_write_phy_register(pcr, 0x08, 0x4C40 | 0x24); | ||
127 | if (err < 0) | ||
128 | return err; | ||
129 | } else { | ||
130 | return -EINVAL; | ||
131 | } | ||
132 | |||
133 | return 0; | ||
134 | } | ||
135 | |||
117 | static const struct pcr_ops rts5229_pcr_ops = { | 136 | static const struct pcr_ops rts5229_pcr_ops = { |
118 | .extra_init_hw = rts5229_extra_init_hw, | 137 | .extra_init_hw = rts5229_extra_init_hw, |
119 | .optimize_phy = rts5229_optimize_phy, | 138 | .optimize_phy = rts5229_optimize_phy, |
@@ -123,7 +142,9 @@ static const struct pcr_ops rts5229_pcr_ops = { | |||
123 | .disable_auto_blink = rts5229_disable_auto_blink, | 142 | .disable_auto_blink = rts5229_disable_auto_blink, |
124 | .card_power_on = rts5229_card_power_on, | 143 | .card_power_on = rts5229_card_power_on, |
125 | .card_power_off = rts5229_card_power_off, | 144 | .card_power_off = rts5229_card_power_off, |
145 | .switch_output_voltage = rts5229_switch_output_voltage, | ||
126 | .cd_deglitch = NULL, | 146 | .cd_deglitch = NULL, |
147 | .conv_clk_and_div_n = NULL, | ||
127 | }; | 148 | }; |
128 | 149 | ||
129 | /* SD Pull Control Enable: | 150 | /* SD Pull Control Enable: |