7474#define MCR_APB_96M 7
7575#define MCR_APB_166M 12
7676
77- #define I2C_MODE_STANDARD 0
78- #define I2C_MODE_FAST 1
79-
8077#define WMT_I2C_TIMEOUT (msecs_to_jiffies(1000))
8178
8279struct wmt_i2c_dev {
@@ -85,7 +82,7 @@ struct wmt_i2c_dev {
8582 struct device * dev ;
8683 void __iomem * base ;
8784 struct clk * clk ;
88- int mode ;
85+ u16 tcr ;
8986 int irq ;
9087 u16 cmd_status ;
9188};
@@ -129,7 +126,7 @@ static int wmt_i2c_write(struct i2c_adapter *adap, struct i2c_msg *pmsg,
129126 int last )
130127{
131128 struct wmt_i2c_dev * i2c_dev = i2c_get_adapdata (adap );
132- u16 val , tcr_val ;
129+ u16 val , tcr_val = i2c_dev -> tcr ;
133130 int ret ;
134131 int xfer_len = 0 ;
135132
@@ -156,11 +153,6 @@ static int wmt_i2c_write(struct i2c_adapter *adap, struct i2c_msg *pmsg,
156153
157154 reinit_completion (& i2c_dev -> complete );
158155
159- if (i2c_dev -> mode == I2C_MODE_STANDARD )
160- tcr_val = TCR_STANDARD_MODE ;
161- else
162- tcr_val = TCR_FAST_MODE ;
163-
164156 tcr_val |= (TCR_MASTER_WRITE | (pmsg -> addr & TCR_SLAVE_ADDR_MASK ));
165157
166158 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,
207199 int last )
208200{
209201 struct wmt_i2c_dev * i2c_dev = i2c_get_adapdata (adap );
210- u16 val , tcr_val ;
202+ u16 val , tcr_val = i2c_dev -> tcr ;
211203 int ret ;
212204 u32 xfer_len = 0 ;
213205
@@ -233,11 +225,6 @@ static int wmt_i2c_read(struct i2c_adapter *adap, struct i2c_msg *pmsg,
233225
234226 reinit_completion (& i2c_dev -> complete );
235227
236- if (i2c_dev -> mode == I2C_MODE_STANDARD )
237- tcr_val = TCR_STANDARD_MODE ;
238- else
239- tcr_val = TCR_FAST_MODE ;
240-
241228 tcr_val |= TCR_MASTER_READ | (pmsg -> addr & TCR_SLAVE_ADDR_MASK );
242229
243230 writew (tcr_val , i2c_dev -> base + REG_TCR );
@@ -346,10 +333,10 @@ static int wmt_i2c_reset_hardware(struct wmt_i2c_dev *i2c_dev)
346333 readw (i2c_dev -> base + REG_CSR ); /* read clear */
347334 writew (ISR_WRITE_ALL , i2c_dev -> base + REG_ISR );
348335
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 )
352337 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 );
353340
354341 return 0 ;
355342}
@@ -382,10 +369,9 @@ static int wmt_i2c_probe(struct platform_device *pdev)
382369 return PTR_ERR (i2c_dev -> clk );
383370 }
384371
385- i2c_dev -> mode = I2C_MODE_STANDARD ;
386372 err = of_property_read_u32 (np , "clock-frequency" , & clk_rate );
387373 if (!err && (clk_rate == I2C_MAX_FAST_MODE_FREQ ))
388- i2c_dev -> mode = I2C_MODE_FAST ;
374+ i2c_dev -> tcr = TCR_FAST_MODE ;
389375
390376 i2c_dev -> dev = & pdev -> dev ;
391377
0 commit comments