diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2009-11-20 06:44:46 -0500 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2010-02-12 12:32:39 -0500 |
commit | ebdbbf2003ae2342147c87c2a6c6ed8984b9cede (patch) | |
tree | 2d3228b7a0b556e00f9082a5f4d09d426d03f11b | |
parent | 0321cb83e1c3f3a4282bd620c6cec78c5b80b572 (diff) |
ARM: PNX4008: convert i2c-pnx to use clk API enable/disable calls
clk_set_rate() is not supposed to be used to turn clocks on and off.
That's what clk_enable/clk_disable is for.
Acked-by: Vitaly Wool <vitalywool@gmail.com>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
-rw-r--r-- | arch/arm/mach-pnx4008/clock.c | 12 | ||||
-rw-r--r-- | drivers/i2c/busses/i2c-pnx.c | 18 |
2 files changed, 15 insertions, 15 deletions
diff --git a/arch/arm/mach-pnx4008/clock.c b/arch/arm/mach-pnx4008/clock.c index 5a1515210969..692625cd2001 100644 --- a/arch/arm/mach-pnx4008/clock.c +++ b/arch/arm/mach-pnx4008/clock.c | |||
@@ -639,30 +639,30 @@ static struct clk i2c0_ck = { | |||
639 | .name = "i2c0_ck", | 639 | .name = "i2c0_ck", |
640 | .parent = &per_ck, | 640 | .parent = &per_ck, |
641 | .flags = NEEDS_INITIALIZATION, | 641 | .flags = NEEDS_INITIALIZATION, |
642 | .round_rate = &on_off_round_rate, | ||
643 | .set_rate = &on_off_set_rate, | ||
644 | .enable_shift = 0, | 642 | .enable_shift = 0, |
645 | .enable_reg = I2CCLKCTRL_REG, | 643 | .enable_reg = I2CCLKCTRL_REG, |
644 | .enable = clk_reg_enable, | ||
645 | .disable = clk_reg_disable, | ||
646 | }; | 646 | }; |
647 | 647 | ||
648 | static struct clk i2c1_ck = { | 648 | static struct clk i2c1_ck = { |
649 | .name = "i2c1_ck", | 649 | .name = "i2c1_ck", |
650 | .parent = &per_ck, | 650 | .parent = &per_ck, |
651 | .flags = NEEDS_INITIALIZATION, | 651 | .flags = NEEDS_INITIALIZATION, |
652 | .round_rate = &on_off_round_rate, | ||
653 | .set_rate = &on_off_set_rate, | ||
654 | .enable_shift = 1, | 652 | .enable_shift = 1, |
655 | .enable_reg = I2CCLKCTRL_REG, | 653 | .enable_reg = I2CCLKCTRL_REG, |
654 | .enable = clk_reg_enable, | ||
655 | .disable = clk_reg_disable, | ||
656 | }; | 656 | }; |
657 | 657 | ||
658 | static struct clk i2c2_ck = { | 658 | static struct clk i2c2_ck = { |
659 | .name = "i2c2_ck", | 659 | .name = "i2c2_ck", |
660 | .parent = &per_ck, | 660 | .parent = &per_ck, |
661 | .flags = NEEDS_INITIALIZATION, | 661 | .flags = NEEDS_INITIALIZATION, |
662 | .round_rate = &on_off_round_rate, | ||
663 | .set_rate = &on_off_set_rate, | ||
664 | .enable_shift = 2, | 662 | .enable_shift = 2, |
665 | .enable_reg = USB_OTG_CLKCTRL_REG, | 663 | .enable_reg = USB_OTG_CLKCTRL_REG, |
664 | .enable = clk_reg_enable, | ||
665 | .disable = clk_reg_disable, | ||
666 | }; | 666 | }; |
667 | 667 | ||
668 | static struct clk spi0_ck = { | 668 | static struct clk spi0_ck = { |
diff --git a/drivers/i2c/busses/i2c-pnx.c b/drivers/i2c/busses/i2c-pnx.c index 98462671cdf7..29f91774c4df 100644 --- a/drivers/i2c/busses/i2c-pnx.c +++ b/drivers/i2c/busses/i2c-pnx.c | |||
@@ -555,8 +555,8 @@ static int i2c_pnx_controller_suspend(struct platform_device *pdev, | |||
555 | struct i2c_pnx_data *i2c_pnx = platform_get_drvdata(pdev); | 555 | struct i2c_pnx_data *i2c_pnx = platform_get_drvdata(pdev); |
556 | struct i2c_pnx_algo_data *alg_data = i2c_pnx->adapter->algo_data; | 556 | struct i2c_pnx_algo_data *alg_data = i2c_pnx->adapter->algo_data; |
557 | 557 | ||
558 | /* FIXME: disable clock? */ | 558 | /* FIXME: shouldn't this be clk_disable? */ |
559 | clk_set_rate(alg_data->clk, 1); | 559 | clk_enable(alg_data->clk); |
560 | 560 | ||
561 | return 0; | 561 | return 0; |
562 | } | 562 | } |
@@ -566,9 +566,7 @@ static int i2c_pnx_controller_resume(struct platform_device *pdev) | |||
566 | struct i2c_pnx_data *i2c_pnx = platform_get_drvdata(pdev); | 566 | struct i2c_pnx_data *i2c_pnx = platform_get_drvdata(pdev); |
567 | struct i2c_pnx_algo_data *alg_data = i2c_pnx->adapter->algo_data; | 567 | struct i2c_pnx_algo_data *alg_data = i2c_pnx->adapter->algo_data; |
568 | 568 | ||
569 | clk_set_rate(alg_data->clk, 1); | 569 | return clk_enable(alg_data->clk); |
570 | |||
571 | return 0; | ||
572 | } | 570 | } |
573 | #else | 571 | #else |
574 | #define i2c_pnx_controller_suspend NULL | 572 | #define i2c_pnx_controller_suspend NULL |
@@ -630,7 +628,9 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
630 | goto out_release; | 628 | goto out_release; |
631 | } | 629 | } |
632 | 630 | ||
633 | clk_set_rate(alg_data->clk, 1); | 631 | ret = clk_enable(alg_data->clk); |
632 | if (ret) | ||
633 | goto out_unmap; | ||
634 | 634 | ||
635 | /* | 635 | /* |
636 | * Clock Divisor High This value is the number of system clocks | 636 | * Clock Divisor High This value is the number of system clocks |
@@ -650,7 +650,7 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
650 | iowrite32(mcntrl_reset, I2C_REG_CTL(alg_data)); | 650 | iowrite32(mcntrl_reset, I2C_REG_CTL(alg_data)); |
651 | if (wait_reset(I2C_PNX_TIMEOUT, alg_data)) { | 651 | if (wait_reset(I2C_PNX_TIMEOUT, alg_data)) { |
652 | ret = -ENODEV; | 652 | ret = -ENODEV; |
653 | goto out_unmap; | 653 | goto out_clock; |
654 | } | 654 | } |
655 | init_completion(&alg_data->mif.complete); | 655 | init_completion(&alg_data->mif.complete); |
656 | 656 | ||
@@ -676,7 +676,7 @@ static int __devinit i2c_pnx_probe(struct platform_device *pdev) | |||
676 | out_irq: | 676 | out_irq: |
677 | free_irq(alg_data->irq, i2c_pnx->adapter); | 677 | free_irq(alg_data->irq, i2c_pnx->adapter); |
678 | out_clock: | 678 | out_clock: |
679 | clk_set_rate(alg_data->clk, 0); | 679 | clk_disable(alg_data->clk); |
680 | out_unmap: | 680 | out_unmap: |
681 | iounmap((void *)alg_data->ioaddr); | 681 | iounmap((void *)alg_data->ioaddr); |
682 | out_release: | 682 | out_release: |
@@ -697,7 +697,7 @@ static int __devexit i2c_pnx_remove(struct platform_device *pdev) | |||
697 | 697 | ||
698 | free_irq(alg_data->irq, i2c_pnx->adapter); | 698 | free_irq(alg_data->irq, i2c_pnx->adapter); |
699 | i2c_del_adapter(adap); | 699 | i2c_del_adapter(adap); |
700 | clk_set_rate(alg_data->clk, 0); | 700 | clk_disable(alg_data->clk); |
701 | iounmap((void *)alg_data->ioaddr); | 701 | iounmap((void *)alg_data->ioaddr); |
702 | release_mem_region(alg_data->base, I2C_PNX_REGION_SIZE); | 702 | release_mem_region(alg_data->base, I2C_PNX_REGION_SIZE); |
703 | clk_put(alg_data->clk); | 703 | clk_put(alg_data->clk); |