Skip to content

Commit 7108ecf

Browse files
Hans Huwsakernel
authored andcommitted
i2c: wmt: Reduce redundant: clock mode setting
The frequency setting mode is adjusted to reduce the code redundancy, and it is also convenient to share with zhaoxin Signed-off-by: Hans Hu <[email protected]> Signed-off-by: Wolfram Sang <[email protected]>
1 parent 8a22991 commit 7108ecf

File tree

1 file changed

+7
-21
lines changed

1 file changed

+7
-21
lines changed

drivers/i2c/busses/i2c-wmt.c

Lines changed: 7 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -74,9 +74,6 @@
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

8279
struct 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

Comments
 (0)