aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/i2c
diff options
context:
space:
mode:
authorDirk Brandewie <dirk.brandewie@gmail.com>2011-10-06 14:26:32 -0400
committerBen Dooks <ben-linux@fluff.org>2011-10-29 06:03:50 -0400
commite18563fc560aba0d95a5a73145812a081fb38fac (patch)
treea244326e1d17deb93958bee1e10fed9acdfe8eb2 /drivers/i2c
parent2fa8326b4b1e5fdc889b57b03b1313f3229cb438 (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>
Diffstat (limited to 'drivers/i2c')
-rw-r--r--drivers/i2c/busses/i2c-designware-core.c6
-rw-r--r--drivers/i2c/busses/i2c-designware-core.h1
-rw-r--r--drivers/i2c/busses/i2c-designware-platdrv.c2
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)
143int i2c_dw_init(struct dw_i2c_dev *dev) 143int 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) {