74
74
#define MCR_APB_96M 7
75
75
#define MCR_APB_166M 12
76
76
77
- #define I2C_MODE_STANDARD 0
78
- #define I2C_MODE_FAST 1
79
-
80
77
#define WMT_I2C_TIMEOUT (msecs_to_jiffies(1000))
81
78
82
79
struct wmt_i2c_dev {
@@ -85,7 +82,7 @@ struct wmt_i2c_dev {
85
82
struct device * dev ;
86
83
void __iomem * base ;
87
84
struct clk * clk ;
88
- int mode ;
85
+ u16 tcr ;
89
86
int irq ;
90
87
u16 cmd_status ;
91
88
};
@@ -129,7 +126,7 @@ static int wmt_i2c_write(struct i2c_adapter *adap, struct i2c_msg *pmsg,
129
126
int last )
130
127
{
131
128
struct wmt_i2c_dev * i2c_dev = i2c_get_adapdata (adap );
132
- u16 val , tcr_val ;
129
+ u16 val , tcr_val = i2c_dev -> tcr ;
133
130
int ret ;
134
131
int xfer_len = 0 ;
135
132
@@ -156,11 +153,6 @@ static int wmt_i2c_write(struct i2c_adapter *adap, struct i2c_msg *pmsg,
156
153
157
154
reinit_completion (& i2c_dev -> complete );
158
155
159
- if (i2c_dev -> mode == I2C_MODE_STANDARD )
160
- tcr_val = TCR_STANDARD_MODE ;
161
- else
162
- tcr_val = TCR_FAST_MODE ;
163
-
164
156
tcr_val |= (TCR_MASTER_WRITE | (pmsg -> addr & TCR_SLAVE_ADDR_MASK ));
165
157
166
158
writew (tcr_val , i2c_dev -> base + REG_TCR );
@@ -207,7 +199,7 @@ static int wmt_i2c_read(struct i2c_adapter *adap, struct i2c_msg *pmsg,
207
199
int last )
208
200
{
209
201
struct wmt_i2c_dev * i2c_dev = i2c_get_adapdata (adap );
210
- u16 val , tcr_val ;
202
+ u16 val , tcr_val = i2c_dev -> tcr ;
211
203
int ret ;
212
204
u32 xfer_len = 0 ;
213
205
@@ -233,11 +225,6 @@ static int wmt_i2c_read(struct i2c_adapter *adap, struct i2c_msg *pmsg,
233
225
234
226
reinit_completion (& i2c_dev -> complete );
235
227
236
- if (i2c_dev -> mode == I2C_MODE_STANDARD )
237
- tcr_val = TCR_STANDARD_MODE ;
238
- else
239
- tcr_val = TCR_FAST_MODE ;
240
-
241
228
tcr_val |= TCR_MASTER_READ | (pmsg -> addr & TCR_SLAVE_ADDR_MASK );
242
229
243
230
writew (tcr_val , i2c_dev -> base + REG_TCR );
@@ -346,10 +333,10 @@ static int wmt_i2c_reset_hardware(struct wmt_i2c_dev *i2c_dev)
346
333
readw (i2c_dev -> base + REG_CSR ); /* read clear */
347
334
writew (ISR_WRITE_ALL , i2c_dev -> base + REG_ISR );
348
335
349
- if (i2c_dev -> mode == I2C_MODE_STANDARD )
350
- writew (SCL_TIMEOUT (128 ) | TR_STD , i2c_dev -> base + REG_TR );
351
- else
336
+ if (i2c_dev -> tcr == TCR_FAST_MODE )
352
337
writew (SCL_TIMEOUT (128 ) | TR_HS , i2c_dev -> base + REG_TR );
338
+ else
339
+ writew (SCL_TIMEOUT (128 ) | TR_STD , i2c_dev -> base + REG_TR );
353
340
354
341
return 0 ;
355
342
}
@@ -382,10 +369,9 @@ static int wmt_i2c_probe(struct platform_device *pdev)
382
369
return PTR_ERR (i2c_dev -> clk );
383
370
}
384
371
385
- i2c_dev -> mode = I2C_MODE_STANDARD ;
386
372
err = of_property_read_u32 (np , "clock-frequency" , & clk_rate );
387
373
if (!err && (clk_rate == I2C_MAX_FAST_MODE_FREQ ))
388
- i2c_dev -> mode = I2C_MODE_FAST ;
374
+ i2c_dev -> tcr = TCR_FAST_MODE ;
389
375
390
376
i2c_dev -> dev = & pdev -> dev ;
391
377
0 commit comments