diff options
author | Rajeshwari Shinde <rajeshwari.s@samsung.com> | 2011-10-24 11:05:58 -0400 |
---|---|---|
committer | Kukjin Kim <kgene.kim@samsung.com> | 2011-12-22 20:09:16 -0500 |
commit | a361d10a2b490812b051433b1aad5b4351372597 (patch) | |
tree | 7132392c01d78d275d12313056803e15e97c5f6b /arch/arm/mach-s5pv210/clock.c | |
parent | a60879e7ca17ea41bacd57e3cb2b56e48135f7a3 (diff) |
ARM: SAMSUNG: Add lookup of sdhci-s3c clocks using generic names
Add support for lookup of sdhci-s3c controller clocks using generic names
for s3c2416, s3c64xx, s5pc100, s5pv210 and exynos4 SoC's.
Signed-off-by: Rajeshwari Shinde <rajeshwari.s@samsung.com>
[kgene.kim@samsung.com: fixed trailing whitespace]
Signed-off-by: Kukjin Kim <kgene.kim@samsung.com>
Diffstat (limited to 'arch/arm/mach-s5pv210/clock.c')
-rw-r--r-- | arch/arm/mach-s5pv210/clock.c | 167 |
1 files changed, 103 insertions, 64 deletions
diff --git a/arch/arm/mach-s5pv210/clock.c b/arch/arm/mach-s5pv210/clock.c index 43a045d354ec..dc4586b2b322 100644 --- a/arch/arm/mach-s5pv210/clock.c +++ b/arch/arm/mach-s5pv210/clock.c | |||
@@ -399,30 +399,6 @@ static struct clk init_clocks_off[] = { | |||
399 | .enable = s5pv210_clk_ip1_ctrl, | 399 | .enable = s5pv210_clk_ip1_ctrl, |
400 | .ctrlbit = (1<<25), | 400 | .ctrlbit = (1<<25), |
401 | }, { | 401 | }, { |
402 | .name = "hsmmc", | ||
403 | .devname = "s3c-sdhci.0", | ||
404 | .parent = &clk_hclk_psys.clk, | ||
405 | .enable = s5pv210_clk_ip2_ctrl, | ||
406 | .ctrlbit = (1<<16), | ||
407 | }, { | ||
408 | .name = "hsmmc", | ||
409 | .devname = "s3c-sdhci.1", | ||
410 | .parent = &clk_hclk_psys.clk, | ||
411 | .enable = s5pv210_clk_ip2_ctrl, | ||
412 | .ctrlbit = (1<<17), | ||
413 | }, { | ||
414 | .name = "hsmmc", | ||
415 | .devname = "s3c-sdhci.2", | ||
416 | .parent = &clk_hclk_psys.clk, | ||
417 | .enable = s5pv210_clk_ip2_ctrl, | ||
418 | .ctrlbit = (1<<18), | ||
419 | }, { | ||
420 | .name = "hsmmc", | ||
421 | .devname = "s3c-sdhci.3", | ||
422 | .parent = &clk_hclk_psys.clk, | ||
423 | .enable = s5pv210_clk_ip2_ctrl, | ||
424 | .ctrlbit = (1<<19), | ||
425 | }, { | ||
426 | .name = "systimer", | 402 | .name = "systimer", |
427 | .parent = &clk_pclk_psys.clk, | 403 | .parent = &clk_pclk_psys.clk, |
428 | .enable = s5pv210_clk_ip3_ctrl, | 404 | .enable = s5pv210_clk_ip3_ctrl, |
@@ -559,6 +535,38 @@ static struct clk init_clocks[] = { | |||
559 | }, | 535 | }, |
560 | }; | 536 | }; |
561 | 537 | ||
538 | static struct clk clk_hsmmc0 = { | ||
539 | .name = "hsmmc", | ||
540 | .devname = "s3c-sdhci.0", | ||
541 | .parent = &clk_hclk_psys.clk, | ||
542 | .enable = s5pv210_clk_ip2_ctrl, | ||
543 | .ctrlbit = (1<<16), | ||
544 | }; | ||
545 | |||
546 | static struct clk clk_hsmmc1 = { | ||
547 | .name = "hsmmc", | ||
548 | .devname = "s3c-sdhci.1", | ||
549 | .parent = &clk_hclk_psys.clk, | ||
550 | .enable = s5pv210_clk_ip2_ctrl, | ||
551 | .ctrlbit = (1<<17), | ||
552 | }; | ||
553 | |||
554 | static struct clk clk_hsmmc2 = { | ||
555 | .name = "hsmmc", | ||
556 | .devname = "s3c-sdhci.2", | ||
557 | .parent = &clk_hclk_psys.clk, | ||
558 | .enable = s5pv210_clk_ip2_ctrl, | ||
559 | .ctrlbit = (1<<18), | ||
560 | }; | ||
561 | |||
562 | static struct clk clk_hsmmc3 = { | ||
563 | .name = "hsmmc", | ||
564 | .devname = "s3c-sdhci.3", | ||
565 | .parent = &clk_hclk_psys.clk, | ||
566 | .enable = s5pv210_clk_ip2_ctrl, | ||
567 | .ctrlbit = (1<<19), | ||
568 | }; | ||
569 | |||
562 | static struct clk *clkset_uart_list[] = { | 570 | static struct clk *clkset_uart_list[] = { |
563 | [6] = &clk_mout_mpll.clk, | 571 | [6] = &clk_mout_mpll.clk, |
564 | [7] = &clk_mout_epll.clk, | 572 | [7] = &clk_mout_epll.clk, |
@@ -866,46 +874,6 @@ static struct clksrc_clk clksrcs[] = { | |||
866 | .reg_div = { .reg = S5P_CLK_DIV1, .shift = 20, .size = 4 }, | 874 | .reg_div = { .reg = S5P_CLK_DIV1, .shift = 20, .size = 4 }, |
867 | }, { | 875 | }, { |
868 | .clk = { | 876 | .clk = { |
869 | .name = "sclk_mmc", | ||
870 | .devname = "s3c-sdhci.0", | ||
871 | .enable = s5pv210_clk_mask0_ctrl, | ||
872 | .ctrlbit = (1 << 8), | ||
873 | }, | ||
874 | .sources = &clkset_group2, | ||
875 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 0, .size = 4 }, | ||
876 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 0, .size = 4 }, | ||
877 | }, { | ||
878 | .clk = { | ||
879 | .name = "sclk_mmc", | ||
880 | .devname = "s3c-sdhci.1", | ||
881 | .enable = s5pv210_clk_mask0_ctrl, | ||
882 | .ctrlbit = (1 << 9), | ||
883 | }, | ||
884 | .sources = &clkset_group2, | ||
885 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 4, .size = 4 }, | ||
886 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 4, .size = 4 }, | ||
887 | }, { | ||
888 | .clk = { | ||
889 | .name = "sclk_mmc", | ||
890 | .devname = "s3c-sdhci.2", | ||
891 | .enable = s5pv210_clk_mask0_ctrl, | ||
892 | .ctrlbit = (1 << 10), | ||
893 | }, | ||
894 | .sources = &clkset_group2, | ||
895 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 8, .size = 4 }, | ||
896 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 8, .size = 4 }, | ||
897 | }, { | ||
898 | .clk = { | ||
899 | .name = "sclk_mmc", | ||
900 | .devname = "s3c-sdhci.3", | ||
901 | .enable = s5pv210_clk_mask0_ctrl, | ||
902 | .ctrlbit = (1 << 11), | ||
903 | }, | ||
904 | .sources = &clkset_group2, | ||
905 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 12, .size = 4 }, | ||
906 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 12, .size = 4 }, | ||
907 | }, { | ||
908 | .clk = { | ||
909 | .name = "sclk_mfc", | 877 | .name = "sclk_mfc", |
910 | .devname = "s5p-mfc", | 878 | .devname = "s5p-mfc", |
911 | .enable = s5pv210_clk_ip0_ctrl, | 879 | .enable = s5pv210_clk_ip0_ctrl, |
@@ -1030,11 +998,70 @@ static struct clksrc_clk clk_sclk_uart3 = { | |||
1030 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 28, .size = 4 }, | 998 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 28, .size = 4 }, |
1031 | }; | 999 | }; |
1032 | 1000 | ||
1001 | static struct clksrc_clk clk_sclk_mmc0 = { | ||
1002 | .clk = { | ||
1003 | .name = "sclk_mmc", | ||
1004 | .devname = "s3c-sdhci.0", | ||
1005 | .enable = s5pv210_clk_mask0_ctrl, | ||
1006 | .ctrlbit = (1 << 8), | ||
1007 | }, | ||
1008 | .sources = &clkset_group2, | ||
1009 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 0, .size = 4 }, | ||
1010 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 0, .size = 4 }, | ||
1011 | }; | ||
1012 | |||
1013 | static struct clksrc_clk clk_sclk_mmc1 = { | ||
1014 | .clk = { | ||
1015 | .name = "sclk_mmc", | ||
1016 | .devname = "s3c-sdhci.1", | ||
1017 | .enable = s5pv210_clk_mask0_ctrl, | ||
1018 | .ctrlbit = (1 << 9), | ||
1019 | }, | ||
1020 | .sources = &clkset_group2, | ||
1021 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 4, .size = 4 }, | ||
1022 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 4, .size = 4 }, | ||
1023 | }; | ||
1024 | |||
1025 | static struct clksrc_clk clk_sclk_mmc2 = { | ||
1026 | .clk = { | ||
1027 | .name = "sclk_mmc", | ||
1028 | .devname = "s3c-sdhci.2", | ||
1029 | .enable = s5pv210_clk_mask0_ctrl, | ||
1030 | .ctrlbit = (1 << 10), | ||
1031 | }, | ||
1032 | .sources = &clkset_group2, | ||
1033 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 8, .size = 4 }, | ||
1034 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 8, .size = 4 }, | ||
1035 | }; | ||
1036 | |||
1037 | static struct clksrc_clk clk_sclk_mmc3 = { | ||
1038 | .clk = { | ||
1039 | .name = "sclk_mmc", | ||
1040 | .devname = "s3c-sdhci.3", | ||
1041 | .enable = s5pv210_clk_mask0_ctrl, | ||
1042 | .ctrlbit = (1 << 11), | ||
1043 | }, | ||
1044 | .sources = &clkset_group2, | ||
1045 | .reg_src = { .reg = S5P_CLK_SRC4, .shift = 12, .size = 4 }, | ||
1046 | .reg_div = { .reg = S5P_CLK_DIV4, .shift = 12, .size = 4 }, | ||
1047 | }; | ||
1048 | |||
1033 | static struct clksrc_clk *clksrc_cdev[] = { | 1049 | static struct clksrc_clk *clksrc_cdev[] = { |
1034 | &clk_sclk_uart0, | 1050 | &clk_sclk_uart0, |
1035 | &clk_sclk_uart1, | 1051 | &clk_sclk_uart1, |
1036 | &clk_sclk_uart2, | 1052 | &clk_sclk_uart2, |
1037 | &clk_sclk_uart3, | 1053 | &clk_sclk_uart3, |
1054 | &clk_sclk_mmc0, | ||
1055 | &clk_sclk_mmc1, | ||
1056 | &clk_sclk_mmc2, | ||
1057 | &clk_sclk_mmc3, | ||
1058 | }; | ||
1059 | |||
1060 | static struct clk *clk_cdev[] = { | ||
1061 | &clk_hsmmc0, | ||
1062 | &clk_hsmmc1, | ||
1063 | &clk_hsmmc2, | ||
1064 | &clk_hsmmc3, | ||
1038 | }; | 1065 | }; |
1039 | 1066 | ||
1040 | /* Clock initialisation code */ | 1067 | /* Clock initialisation code */ |
@@ -1282,6 +1309,14 @@ static struct clk_lookup s5pv210_clk_lookup[] = { | |||
1282 | CLKDEV_INIT("s5pv210-uart.1", "clk_uart_baud1", &clk_sclk_uart1.clk), | 1309 | CLKDEV_INIT("s5pv210-uart.1", "clk_uart_baud1", &clk_sclk_uart1.clk), |
1283 | CLKDEV_INIT("s5pv210-uart.2", "clk_uart_baud1", &clk_sclk_uart2.clk), | 1310 | CLKDEV_INIT("s5pv210-uart.2", "clk_uart_baud1", &clk_sclk_uart2.clk), |
1284 | CLKDEV_INIT("s5pv210-uart.3", "clk_uart_baud1", &clk_sclk_uart3.clk), | 1311 | CLKDEV_INIT("s5pv210-uart.3", "clk_uart_baud1", &clk_sclk_uart3.clk), |
1312 | CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.0", &clk_hsmmc0), | ||
1313 | CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.0", &clk_hsmmc1), | ||
1314 | CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.0", &clk_hsmmc2), | ||
1315 | CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.0", &clk_hsmmc3), | ||
1316 | CLKDEV_INIT("s3c-sdhci.0", "mmc_busclk.2", &clk_sclk_mmc0.clk), | ||
1317 | CLKDEV_INIT("s3c-sdhci.1", "mmc_busclk.2", &clk_sclk_mmc1.clk), | ||
1318 | CLKDEV_INIT("s3c-sdhci.2", "mmc_busclk.2", &clk_sclk_mmc2.clk), | ||
1319 | CLKDEV_INIT("s3c-sdhci.3", "mmc_busclk.2", &clk_sclk_mmc3.clk), | ||
1285 | }; | 1320 | }; |
1286 | 1321 | ||
1287 | void __init s5pv210_register_clocks(void) | 1322 | void __init s5pv210_register_clocks(void) |
@@ -1306,6 +1341,10 @@ void __init s5pv210_register_clocks(void) | |||
1306 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); | 1341 | s3c_disable_clocks(init_clocks_off, ARRAY_SIZE(init_clocks_off)); |
1307 | clkdev_add_table(s5pv210_clk_lookup, ARRAY_SIZE(s5pv210_clk_lookup)); | 1342 | clkdev_add_table(s5pv210_clk_lookup, ARRAY_SIZE(s5pv210_clk_lookup)); |
1308 | 1343 | ||
1344 | s3c24xx_register_clocks(clk_cdev, ARRAY_SIZE(clk_cdev)); | ||
1345 | for (ptr = 0; ptr < ARRAY_SIZE(clk_cdev); ptr++) | ||
1346 | s3c_disable_clocks(clk_cdev[ptr], 1); | ||
1347 | |||
1309 | s3c24xx_register_clock(&dummy_apb_pclk); | 1348 | s3c24xx_register_clock(&dummy_apb_pclk); |
1310 | s3c_pwmclk_init(); | 1349 | s3c_pwmclk_init(); |
1311 | } | 1350 | } |