diff options
author | Dirk Brandewie <dirk.brandewie@gmail.com> | 2011-10-06 14:26:30 -0400 |
---|---|---|
committer | Ben Dooks <ben-linux@fluff.org> | 2011-10-29 06:03:49 -0400 |
commit | 1d31b58f648c4f754b23fed4d57acc941080e5ee (patch) | |
tree | b67bc0f388bbc108747add9ef6ee7700d7737821 /drivers/i2c/busses/i2c-designware-platdrv.c | |
parent | 2373f6b9744d5373b886f3ce1a985193cca0a356 (diff) |
i2c-designware: Move retriveving the clock speed out of core code.
The clock frequecy supplied to the IP core is specific to a single
instance of the driver. This patch makes it possible to have multiple
Designware I2C cores in the system possibly running at different core
frequencies.
Signed-off-by: Dirk Brandewie <dirk.brandewie@gmail.com>
Signed-off-by: Ben Dooks <ben-linux@fluff.org>
Diffstat (limited to 'drivers/i2c/busses/i2c-designware-platdrv.c')
-rw-r--r-- | drivers/i2c/busses/i2c-designware-platdrv.c | 6 |
1 files changed, 6 insertions, 0 deletions
diff --git a/drivers/i2c/busses/i2c-designware-platdrv.c b/drivers/i2c/busses/i2c-designware-platdrv.c index 9d10ae8c6957..08783a6ff1a2 100644 --- a/drivers/i2c/busses/i2c-designware-platdrv.c +++ b/drivers/i2c/busses/i2c-designware-platdrv.c | |||
@@ -43,6 +43,10 @@ static struct i2c_algorithm i2c_dw_algo = { | |||
43 | .master_xfer = i2c_dw_xfer, | 43 | .master_xfer = i2c_dw_xfer, |
44 | .functionality = i2c_dw_func, | 44 | .functionality = i2c_dw_func, |
45 | }; | 45 | }; |
46 | static u32 i2c_dw_get_clk_rate_khz(struct dw_i2c_dev *dev) | ||
47 | { | ||
48 | return clk_get_rate(dev->clk)/1000; | ||
49 | } | ||
46 | 50 | ||
47 | static int __devinit dw_i2c_probe(struct platform_device *pdev) | 51 | static int __devinit dw_i2c_probe(struct platform_device *pdev) |
48 | { | 52 | { |
@@ -84,6 +88,8 @@ static int __devinit dw_i2c_probe(struct platform_device *pdev) | |||
84 | platform_set_drvdata(pdev, dev); | 88 | platform_set_drvdata(pdev, dev); |
85 | 89 | ||
86 | dev->clk = clk_get(&pdev->dev, NULL); | 90 | dev->clk = clk_get(&pdev->dev, NULL); |
91 | dev->get_clk_rate_khz = i2c_dw_get_clk_rate_khz; | ||
92 | |||
87 | if (IS_ERR(dev->clk)) { | 93 | if (IS_ERR(dev->clk)) { |
88 | r = -ENODEV; | 94 | r = -ENODEV; |
89 | goto err_free_mem; | 95 | goto err_free_mem; |