|
31 | 31 | #define AMD_TIMEOUT_MAX_US 250 |
32 | 32 | #define AMD_MASTERCFG_MASK GENMASK(15, 0) |
33 | 33 |
|
34 | | -static void i2c_dw_configure_fifo_master(struct dw_i2c_dev *dev) |
35 | | -{ |
36 | | - /* Configure Tx/Rx FIFO threshold levels */ |
37 | | - regmap_write(dev->map, DW_IC_TX_TL, dev->tx_fifo_depth / 2); |
38 | | - regmap_write(dev->map, DW_IC_RX_TL, 0); |
39 | | - |
40 | | - /* Configure the I2C master */ |
41 | | - regmap_write(dev->map, DW_IC_CON, dev->master_cfg); |
42 | | -} |
43 | | - |
44 | 34 | static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev) |
45 | 35 | { |
46 | 36 | unsigned int comp_param1; |
@@ -195,58 +185,6 @@ static int i2c_dw_set_timings_master(struct dw_i2c_dev *dev) |
195 | 185 | return 0; |
196 | 186 | } |
197 | 187 |
|
198 | | -/** |
199 | | - * i2c_dw_init_master() - Initialize the DesignWare I2C master hardware |
200 | | - * @dev: device private data |
201 | | - * |
202 | | - * This functions configures and enables the I2C master. |
203 | | - * This function is called during I2C init function, and in case of timeout at |
204 | | - * run time. |
205 | | - * |
206 | | - * Return: 0 on success, or negative errno otherwise. |
207 | | - */ |
208 | | -static int i2c_dw_init_master(struct dw_i2c_dev *dev) |
209 | | -{ |
210 | | - int ret; |
211 | | - |
212 | | - ret = i2c_dw_acquire_lock(dev); |
213 | | - if (ret) |
214 | | - return ret; |
215 | | - |
216 | | - /* Disable the adapter */ |
217 | | - __i2c_dw_disable(dev); |
218 | | - |
219 | | - /* |
220 | | - * Mask SMBus interrupts to block storms from broken |
221 | | - * firmware that leaves IC_SMBUS=1; the handler never |
222 | | - * services them. |
223 | | - */ |
224 | | - regmap_write(dev->map, DW_IC_SMBUS_INTR_MASK, 0); |
225 | | - |
226 | | - /* Write standard speed timing parameters */ |
227 | | - regmap_write(dev->map, DW_IC_SS_SCL_HCNT, dev->ss_hcnt); |
228 | | - regmap_write(dev->map, DW_IC_SS_SCL_LCNT, dev->ss_lcnt); |
229 | | - |
230 | | - /* Write fast mode/fast mode plus timing parameters */ |
231 | | - regmap_write(dev->map, DW_IC_FS_SCL_HCNT, dev->fs_hcnt); |
232 | | - regmap_write(dev->map, DW_IC_FS_SCL_LCNT, dev->fs_lcnt); |
233 | | - |
234 | | - /* Write high speed timing parameters if supported */ |
235 | | - if (dev->hs_hcnt && dev->hs_lcnt) { |
236 | | - regmap_write(dev->map, DW_IC_HS_SCL_HCNT, dev->hs_hcnt); |
237 | | - regmap_write(dev->map, DW_IC_HS_SCL_LCNT, dev->hs_lcnt); |
238 | | - } |
239 | | - |
240 | | - /* Write SDA hold time if supported */ |
241 | | - if (dev->sda_hold_time) |
242 | | - regmap_write(dev->map, DW_IC_SDA_HOLD, dev->sda_hold_time); |
243 | | - |
244 | | - i2c_dw_configure_fifo_master(dev); |
245 | | - i2c_dw_release_lock(dev); |
246 | | - |
247 | | - return 0; |
248 | | -} |
249 | | - |
250 | 188 | static void i2c_dw_xfer_init(struct dw_i2c_dev *dev) |
251 | 189 | { |
252 | 190 | struct i2c_msg *msgs = dev->msgs; |
@@ -843,9 +781,9 @@ i2c_dw_xfer_common(struct dw_i2c_dev *dev, struct i2c_msg msgs[], int num) |
843 | 781 | ret = i2c_dw_wait_transfer(dev); |
844 | 782 | if (ret) { |
845 | 783 | dev_err(dev->dev, "controller timed out\n"); |
846 | | - /* i2c_dw_init_master() implicitly disables the adapter */ |
| 784 | + /* i2c_dw_init() implicitly disables the adapter */ |
847 | 785 | i2c_recover_bus(&dev->adapter); |
848 | | - i2c_dw_init_master(dev); |
| 786 | + i2c_dw_init(dev); |
849 | 787 | goto done; |
850 | 788 | } |
851 | 789 |
|
@@ -950,7 +888,7 @@ static void i2c_dw_unprepare_recovery(struct i2c_adapter *adap) |
950 | 888 |
|
951 | 889 | i2c_dw_prepare_clk(dev, true); |
952 | 890 | reset_control_deassert(dev->rst); |
953 | | - i2c_dw_init_master(dev); |
| 891 | + i2c_dw_init(dev); |
954 | 892 | } |
955 | 893 |
|
956 | 894 | static int i2c_dw_init_recovery_info(struct dw_i2c_dev *dev) |
@@ -999,8 +937,6 @@ int i2c_dw_probe_master(struct dw_i2c_dev *dev) |
999 | 937 |
|
1000 | 938 | init_completion(&dev->cmd_complete); |
1001 | 939 |
|
1002 | | - dev->init = i2c_dw_init_master; |
1003 | | - |
1004 | 940 | ret = i2c_dw_set_timings_master(dev); |
1005 | 941 | if (ret) |
1006 | 942 | return ret; |
|
0 commit comments