diff options
author | Dirk Brandewie <dirk.brandewie@gmail.com> | 2011-10-06 14:26:32 -0400 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2011-10-29 06:03:50 -0400 |
commit | e18563fc560aba0d95a5a73145812a081fb38fac (patch) | |
tree | a244326e1d17deb93958bee1e10fed9acdfe8eb2 | |
parent | 2fa8326b4b1e5fdc889b57b03b1313f3229cb438 (diff) |
i2c-designware: move controller config to bus specific portion of driver
With multiple I2C adapters possible in the system each running at
(possibly) different speeds we need to move the controller
configuration bit field to the adapter.
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
-rw-r--r-- | drivers/i2c/busses/i2c-designware-core.c | 6 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-designware-core.h | 1 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-designware-platdrv.c | 2 |
3 files changed, 5 insertions, 4 deletions
diff --git a/drivers/i2c/busses/i2c-designware-core.c b/drivers/i2c/busses/i2c-designware-core.c index 71055114bd80..6195df3c1c29 100644 --- a/drivers/i2c/busses/i2c-designware-core.c +++ b/drivers/i2c/busses/i2c-designware-core.c | |||
@@ -143,7 +143,7 @@ static u32 i2c_dw_scl_lcnt(u32 ic_clk, u32 tLOW, u32 tf, int offset) | |||
143 | int i2c_dw_init(struct dw_i2c_dev *dev) | 143 | int i2c_dw_init(struct dw_i2c_dev *dev) |
144 | { | 144 | { |
145 | u32 input_clock_khz; | 145 | u32 input_clock_khz; |
146 | u32 ic_con, hcnt, lcnt; | 146 | u32 hcnt, lcnt; |
147 | u32 reg; | 147 | u32 reg; |
148 | 148 | ||
149 | input_clock_khz = dev->get_clk_rate_khz(dev); | 149 | input_clock_khz = dev->get_clk_rate_khz(dev); |
@@ -199,9 +199,7 @@ int i2c_dw_init(struct dw_i2c_dev *dev) | |||
199 | dw_writel(dev, 0, DW_IC_RX_TL); | 199 | dw_writel(dev, 0, DW_IC_RX_TL); |
200 | 200 | ||
201 | /* configure the i2c master */ | 201 | /* configure the i2c master */ |
202 | ic_con = DW_IC_CON_MASTER | DW_IC_CON_SLAVE_DISABLE | | 202 | dw_writel(dev, dev->master_cfg , DW_IC_CON); |
203 | DW_IC_CON_RESTART_EN | DW_IC_CON_SPEED_FAST; | ||
204 | dw_writel(dev, ic_con, DW_IC_CON); | ||
205 | return 0; | 203 | return 0; |
206 | } | 204 | } |
207 | 205 | ||
diff --git a/drivers/i2c/busses/i2c-designware-core.h b/drivers/i2c/busses/i2c-designware-core.h index ab4e655a6c61..29386215fe3c 100644 --- a/drivers/i2c/busses/i2c-designware-core.h +++ b/drivers/i2c/busses/i2c-designware-core.h | |||
@@ -183,6 +183,7 @@ struct dw_i2c_dev { | |||
183 | int swab; | 183 | int swab; |
184 | struct i2c_adapter adapter; | 184 | struct i2c_adapter adapter; |
185 | u32 functionality; | 185 | u32 functionality; |
186 | u32 master_cfg; | ||
186 | unsigned int tx_fifo_depth; | 187 | unsigned int tx_fifo_depth; |
187 | unsigned int rx_fifo_depth; | 188 | unsigned int rx_fifo_depth; |
188 | }; | 189 | }; |
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c index 36db7a80cbb2..1258cae3555d 100644 --- a/drivers/i2c/busses/i2c-designware-platdrv.c +++ b/drivers/i2c/busses/i2c-designware-platdrv.c | |||
@@ -103,6 +103,8 @@ static int __devinit dw_i2c_probe(struct platform_device *pdev) | |||
103 | I2C_FUNC_SMBUS_BYTE_DATA | | 103 | I2C_FUNC_SMBUS_BYTE_DATA | |
104 | I2C_FUNC_SMBUS_WORD_DATA | | 104 | I2C_FUNC_SMBUS_WORD_DATA | |
105 | I2C_FUNC_SMBUS_I2C_BLOCK; | 105 | I2C_FUNC_SMBUS_I2C_BLOCK; |
106 | dev->master_cfg = DW_IC_CON_MASTER | DW_IC_CON_SLAVE_DISABLE | | ||
107 | DW_IC_CON_RESTART_EN | DW_IC_CON_SPEED_FAST; | ||
106 | 108 | ||
107 | dev->base = ioremap(mem->start, resource_size(mem)); | 109 | dev->base = ioremap(mem->start, resource_size(mem)); |
108 | if (dev->base == NULL) { | 110 | if (dev->base == NULL) { |