aboutsummaryrefslogtreecommitdiffstats
path: root/arch/mips/alchemy
diff options
context:
space:
mode:
authorManuel Lauss <manuel.lauss@gmail.com>2014-08-20 15:36:32 -0400
committerRalf Baechle <ralf@linux-mips.org>2014-09-22 07:35:47 -0400
commitc02a505e5a7787ee7aa871152ba571e6c1d1dc62 (patch)
tree5eb900f8a3f1e9cc442b80421342379b65d6720c /arch/mips/alchemy
parent7ec32e4965ae69976de0fb0f340496904e23e113 (diff)
MIPS: Alchemy: DB1xxx: Explicitly set 50MHz clock for I2C/SPI units.
Add an explicit call to set the desired rate to get the correct clock routing for the PSC clocks. It wasn't broken before, but now it's less affected by bootloader changes. Signed-off-by: Manuel Lauss <manuel.lauss@gmail.com> Cc: Linux-MIPS <linux-mips@linux-mips.org> Patchwork: https://patchwork.linux-mips.org/patch/7554/ Signed-off-by: Ralf Baechle <ralf@linux-mips.org>
Diffstat (limited to 'arch/mips/alchemy')
-rw-r--r--arch/mips/alchemy/devboards/db1300.c3
-rw-r--r--arch/mips/alchemy/devboards/db1550.c9
2 files changed, 6 insertions, 6 deletions
diff --git a/arch/mips/alchemy/devboards/db1300.c b/arch/mips/alchemy/devboards/db1300.c
index ef93ee3f6a2c..e476ae9472b9 100644
--- a/arch/mips/alchemy/devboards/db1300.c
+++ b/arch/mips/alchemy/devboards/db1300.c
@@ -762,9 +762,10 @@ int __init db1300_dev_setup(void)
762 __raw_writel(PSC_SEL_CLK_SERCLK, 762 __raw_writel(PSC_SEL_CLK_SERCLK,
763 (void __iomem *)KSEG1ADDR(AU1300_PSC2_PHYS_ADDR) + PSC_SEL_OFFSET); 763 (void __iomem *)KSEG1ADDR(AU1300_PSC2_PHYS_ADDR) + PSC_SEL_OFFSET);
764 wmb(); 764 wmb();
765 /* I2C uses internal 48MHz EXTCLK1 */ 765 /* I2C driver wants 50MHz, get as close as possible */
766 c = clk_get(NULL, "psc3_intclk"); 766 c = clk_get(NULL, "psc3_intclk");
767 if (!IS_ERR(c)) { 767 if (!IS_ERR(c)) {
768 clk_set_rate(c, 50000000);
768 clk_prepare_enable(c); 769 clk_prepare_enable(c);
769 clk_put(c); 770 clk_put(c);
770 } 771 }
diff --git a/arch/mips/alchemy/devboards/db1550.c b/arch/mips/alchemy/devboards/db1550.c
index 7e89936f763e..0fd5177e35ab 100644
--- a/arch/mips/alchemy/devboards/db1550.c
+++ b/arch/mips/alchemy/devboards/db1550.c
@@ -34,12 +34,9 @@ static void __init db1550_hw_setup(void)
34 void __iomem *base; 34 void __iomem *base;
35 unsigned long v; 35 unsigned long v;
36 36
37 /* complete SPI setup: link psc0_intclk to a 48MHz source, 37 /* complete pin setup: assign GPIO16 to PSC0_SYNC1 (SPI cs# line)
38 * and assign GPIO16 to PSC0_SYNC1 (SPI cs# line) as well as PSC1_SYNC 38 * as well as PSC1_SYNC for AC97 on PB1550.
39 * for AC97 on PB1550.
40 */ 39 */
41 v = alchemy_rdsys(AU1000_SYS_CLKSRC);
42 alchemy_wrsys(v | 0x000001e0, AU1000_SYS_CLKSRC);
43 v = alchemy_rdsys(AU1000_SYS_PINFUNC); 40 v = alchemy_rdsys(AU1000_SYS_PINFUNC);
44 alchemy_wrsys(v | 1 | SYS_PF_PSC1_S1, AU1000_SYS_PINFUNC); 41 alchemy_wrsys(v | 1 | SYS_PF_PSC1_S1, AU1000_SYS_PINFUNC);
45 42
@@ -586,11 +583,13 @@ int __init db1550_dev_setup(void)
586 583
587 c = clk_get(NULL, "psc0_intclk"); 584 c = clk_get(NULL, "psc0_intclk");
588 if (!IS_ERR(c)) { 585 if (!IS_ERR(c)) {
586 clk_set_rate(c, 50000000);
589 clk_prepare_enable(c); 587 clk_prepare_enable(c);
590 clk_put(c); 588 clk_put(c);
591 } 589 }
592 c = clk_get(NULL, "psc2_intclk"); 590 c = clk_get(NULL, "psc2_intclk");
593 if (!IS_ERR(c)) { 591 if (!IS_ERR(c)) {
592 clk_set_rate(c, db1550_spi_platdata.mainclk_hz);
594 clk_prepare_enable(c); 593 clk_prepare_enable(c);
595 clk_put(c); 594 clk_put(c);
596 } 595 }