diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-11-20 07:46:07 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-02-12 12:32:39 -0500 |
commit | 6fff3da998ac3cc9ed8a84bf4f19911bd63c8c32 (patch) | |
tree | 97c80144615bbc9ff8c4baee20feb1cf2af20fef /drivers | |
parent | ebdbbf2003ae2342147c87c2a6c6ed8984b9cede (diff) |
ARM: PNX4008: get i2c clock rate from clk API
Acked-by: Vitaly Wool <vitalywool@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/i2c/busses/i2c-pnx.c | 15 |
1 files changed, 4 insertions, 11 deletions
diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c index 29f91774c4df..bfcd079e885c 100644 --- a/drivers/i2c/busses/i2c-pnx.c +++ b/drivers/i2c/busses/i2c-pnx.c | |||
@@ -31,7 +31,6 @@ | |||
31 | #define I2C_PNX_TIMEOUT 10 /* msec */ | 31 | #define I2C_PNX_TIMEOUT 10 /* msec */ |
32 | #define I2C_PNX_SPEED_KHZ 100 | 32 | #define I2C_PNX_SPEED_KHZ 100 |
33 | #define I2C_PNX_REGION_SIZE 0x100 | 33 | #define I2C_PNX_REGION_SIZE 0x100 |
34 | #define PNX_DEFAULT_FREQ 13 /* MHz */ | ||
35 | 34 | ||
36 | static inline int wait_timeout(long timeout, struct i2c_pnx_algo_data *data) | 35 | static inline int wait_timeout(long timeout, struct i2c_pnx_algo_data *data) |
37 | { | 36 | { |
@@ -578,7 +577,7 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
578 | unsigned long tmp; | 577 | unsigned long tmp; |
579 | int ret = 0; | 578 | int ret = 0; |
580 | struct i2c_pnx_algo_data *alg_data; | 579 | struct i2c_pnx_algo_data *alg_data; |
581 | int freq_mhz; | 580 | unsigned long freq; |
582 | struct i2c_pnx_data *i2c_pnx = pdev->dev.platform_data; | 581 | struct i2c_pnx_data *i2c_pnx = pdev->dev.platform_data; |
583 | 582 | ||
584 | if (!i2c_pnx || !i2c_pnx->adapter) { | 583 | if (!i2c_pnx || !i2c_pnx->adapter) { |
@@ -599,14 +598,6 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
599 | goto out_drvdata; | 598 | goto out_drvdata; |
600 | } | 599 | } |
601 | 600 | ||
602 | if (i2c_pnx->calculate_input_freq) | ||
603 | freq_mhz = i2c_pnx->calculate_input_freq(pdev); | ||
604 | else { | ||
605 | freq_mhz = PNX_DEFAULT_FREQ; | ||
606 | dev_info(&pdev->dev, "Setting bus frequency to default value: " | ||
607 | "%d MHz\n", freq_mhz); | ||
608 | } | ||
609 | |||
610 | init_timer(&alg_data->mif.timer); | 601 | init_timer(&alg_data->mif.timer); |
611 | alg_data->mif.timer.function = i2c_pnx_timeout; | 602 | alg_data->mif.timer.function = i2c_pnx_timeout; |
612 | alg_data->mif.timer.data = (unsigned long)i2c_pnx->adapter; | 603 | alg_data->mif.timer.data = (unsigned long)i2c_pnx->adapter; |
@@ -632,6 +623,8 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
632 | if (ret) | 623 | if (ret) |
633 | goto out_unmap; | 624 | goto out_unmap; |
634 | 625 | ||
626 | freq = clk_get_rate(alg_data->clk); | ||
627 | |||
635 | /* | 628 | /* |
636 | * Clock Divisor High This value is the number of system clocks | 629 | * Clock Divisor High This value is the number of system clocks |
637 | * the serial clock (SCL) will be high. | 630 | * the serial clock (SCL) will be high. |
@@ -643,7 +636,7 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
643 | * the deglitching filter length. | 636 | * the deglitching filter length. |
644 | */ | 637 | */ |
645 | 638 | ||
646 | tmp = ((freq_mhz * 1000) / I2C_PNX_SPEED_KHZ) / 2 - 2; | 639 | tmp = ((freq / 1000) / I2C_PNX_SPEED_KHZ) / 2 - 2; |
647 | iowrite32(tmp, I2C_REG_CKH(alg_data)); | 640 | iowrite32(tmp, I2C_REG_CKH(alg_data)); |
648 | iowrite32(tmp, I2C_REG_CKL(alg_data)); | 641 | iowrite32(tmp, I2C_REG_CKL(alg_data)); |
649 | 642 | ||