Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

clk: remove davinci dm3xx drivers

The davinci dm3xx machines are all removed, so the clk driver
is no longer needed. The da8xx platforms are now using DT
exclusively, so those drivers remain untouched.

Reviewed-by: David Lechner <david@lechnology.com>
Acked-by: Linus Walleij <linus.walleij@linaro.org>
Acked-by: Bartosz Golaszewski <bartosz.golaszewski@linaro.org>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Arnd Bergmann <arnd@arndb.de>

-427
-4
drivers/clk/davinci/Makefile
··· 6 6 obj-y += pll.o 7 7 obj-$(CONFIG_ARCH_DAVINCI_DA830) += pll-da830.o 8 8 obj-$(CONFIG_ARCH_DAVINCI_DA850) += pll-da850.o 9 - obj-$(CONFIG_ARCH_DAVINCI_DM355) += pll-dm355.o 10 - obj-$(CONFIG_ARCH_DAVINCI_DM365) += pll-dm365.o 11 9 12 10 obj-y += psc.o 13 11 obj-$(CONFIG_ARCH_DAVINCI_DA830) += psc-da830.o 14 12 obj-$(CONFIG_ARCH_DAVINCI_DA850) += psc-da850.o 15 - obj-$(CONFIG_ARCH_DAVINCI_DM355) += psc-dm355.o 16 - obj-$(CONFIG_ARCH_DAVINCI_DM365) += psc-dm365.o 17 13 endif
-77
drivers/clk/davinci/pll-dm355.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * PLL clock descriptions for TI DM355 4 - * 5 - * Copyright (C) 2018 David Lechner <david@lechnology.com> 6 - */ 7 - 8 - #include <linux/bitops.h> 9 - #include <linux/clk/davinci.h> 10 - #include <linux/clkdev.h> 11 - #include <linux/init.h> 12 - #include <linux/types.h> 13 - 14 - #include "pll.h" 15 - 16 - static const struct davinci_pll_clk_info dm355_pll1_info = { 17 - .name = "pll1", 18 - .pllm_mask = GENMASK(7, 0), 19 - .pllm_min = 92, 20 - .pllm_max = 184, 21 - .flags = PLL_HAS_CLKMODE | PLL_HAS_PREDIV | PLL_PREDIV_ALWAYS_ENABLED | 22 - PLL_PREDIV_FIXED8 | PLL_HAS_POSTDIV | 23 - PLL_POSTDIV_ALWAYS_ENABLED | PLL_POSTDIV_FIXED_DIV, 24 - }; 25 - 26 - SYSCLK(1, pll1_sysclk1, pll1_pllen, 5, SYSCLK_FIXED_DIV | SYSCLK_ALWAYS_ENABLED); 27 - SYSCLK(2, pll1_sysclk2, pll1_pllen, 5, SYSCLK_FIXED_DIV | SYSCLK_ALWAYS_ENABLED); 28 - SYSCLK(3, pll1_sysclk3, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 29 - SYSCLK(4, pll1_sysclk4, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 30 - 31 - int dm355_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip) 32 - { 33 - struct clk *clk; 34 - 35 - davinci_pll_clk_register(dev, &dm355_pll1_info, "ref_clk", base, cfgchip); 36 - 37 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk1, base); 38 - clk_register_clkdev(clk, "pll1_sysclk1", "dm355-psc"); 39 - 40 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk2, base); 41 - clk_register_clkdev(clk, "pll1_sysclk2", "dm355-psc"); 42 - 43 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk3, base); 44 - clk_register_clkdev(clk, "pll1_sysclk3", "dm355-psc"); 45 - 46 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk4, base); 47 - clk_register_clkdev(clk, "pll1_sysclk4", "dm355-psc"); 48 - 49 - clk = davinci_pll_auxclk_register(dev, "pll1_auxclk", base); 50 - clk_register_clkdev(clk, "pll1_auxclk", "dm355-psc"); 51 - 52 - davinci_pll_sysclkbp_clk_register(dev, "pll1_sysclkbp", base); 53 - 54 - return 0; 55 - } 56 - 57 - static const struct davinci_pll_clk_info dm355_pll2_info = { 58 - .name = "pll2", 59 - .pllm_mask = GENMASK(7, 0), 60 - .pllm_min = 92, 61 - .pllm_max = 184, 62 - .flags = PLL_HAS_PREDIV | PLL_PREDIV_ALWAYS_ENABLED | PLL_HAS_POSTDIV | 63 - PLL_POSTDIV_ALWAYS_ENABLED | PLL_POSTDIV_FIXED_DIV, 64 - }; 65 - 66 - SYSCLK(1, pll2_sysclk1, pll2_pllen, 5, SYSCLK_FIXED_DIV | SYSCLK_ALWAYS_ENABLED); 67 - 68 - int dm355_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip) 69 - { 70 - davinci_pll_clk_register(dev, &dm355_pll2_info, "oscin", base, cfgchip); 71 - 72 - davinci_pll_sysclk_register(dev, &pll2_sysclk1, base); 73 - 74 - davinci_pll_sysclkbp_clk_register(dev, "pll2_sysclkbp", base); 75 - 76 - return 0; 77 - }
-146
drivers/clk/davinci/pll-dm365.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * PLL clock descriptions for TI DM365 4 - * 5 - * Copyright (C) 2018 David Lechner <david@lechnology.com> 6 - */ 7 - 8 - #include <linux/bitops.h> 9 - #include <linux/clkdev.h> 10 - #include <linux/clk/davinci.h> 11 - #include <linux/init.h> 12 - #include <linux/kernel.h> 13 - #include <linux/types.h> 14 - 15 - #include "pll.h" 16 - 17 - #define OCSEL_OCSRC_ENABLE 0 18 - 19 - static const struct davinci_pll_clk_info dm365_pll1_info = { 20 - .name = "pll1", 21 - .pllm_mask = GENMASK(9, 0), 22 - .pllm_min = 1, 23 - .pllm_max = 1023, 24 - .flags = PLL_HAS_CLKMODE | PLL_HAS_PREDIV | PLL_HAS_POSTDIV | 25 - PLL_POSTDIV_ALWAYS_ENABLED | PLL_PLLM_2X, 26 - }; 27 - 28 - SYSCLK(1, pll1_sysclk1, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 29 - SYSCLK(2, pll1_sysclk2, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 30 - SYSCLK(3, pll1_sysclk3, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 31 - SYSCLK(4, pll1_sysclk4, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 32 - SYSCLK(5, pll1_sysclk5, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 33 - SYSCLK(6, pll1_sysclk6, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 34 - SYSCLK(7, pll1_sysclk7, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 35 - SYSCLK(8, pll1_sysclk8, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 36 - SYSCLK(9, pll1_sysclk9, pll1_pllen, 5, SYSCLK_ALWAYS_ENABLED); 37 - 38 - /* 39 - * This is a bit of a hack to make OCSEL[OCSRC] on DM365 look like OCSEL[OCSRC] 40 - * on DA850. On DM365, OCSEL[OCSRC] is just an enable/disable bit instead of a 41 - * multiplexer. By modeling it as a single parent mux clock, the clock code will 42 - * still do the right thing in this case. 43 - */ 44 - static const char * const dm365_pll_obsclk_parent_names[] = { 45 - "oscin", 46 - }; 47 - 48 - static u32 dm365_pll_obsclk_table[] = { 49 - OCSEL_OCSRC_ENABLE, 50 - }; 51 - 52 - static const struct davinci_pll_obsclk_info dm365_pll1_obsclk_info = { 53 - .name = "pll1_obsclk", 54 - .parent_names = dm365_pll_obsclk_parent_names, 55 - .num_parents = ARRAY_SIZE(dm365_pll_obsclk_parent_names), 56 - .table = dm365_pll_obsclk_table, 57 - .ocsrc_mask = BIT(4), 58 - }; 59 - 60 - int dm365_pll1_init(struct device *dev, void __iomem *base, struct regmap *cfgchip) 61 - { 62 - struct clk *clk; 63 - 64 - davinci_pll_clk_register(dev, &dm365_pll1_info, "ref_clk", base, cfgchip); 65 - 66 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk1, base); 67 - clk_register_clkdev(clk, "pll1_sysclk1", "dm365-psc"); 68 - 69 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk2, base); 70 - clk_register_clkdev(clk, "pll1_sysclk2", "dm365-psc"); 71 - 72 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk3, base); 73 - clk_register_clkdev(clk, "pll1_sysclk3", "dm365-psc"); 74 - 75 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk4, base); 76 - clk_register_clkdev(clk, "pll1_sysclk4", "dm365-psc"); 77 - 78 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk5, base); 79 - clk_register_clkdev(clk, "pll1_sysclk5", "dm365-psc"); 80 - 81 - davinci_pll_sysclk_register(dev, &pll1_sysclk6, base); 82 - 83 - davinci_pll_sysclk_register(dev, &pll1_sysclk7, base); 84 - 85 - clk = davinci_pll_sysclk_register(dev, &pll1_sysclk8, base); 86 - clk_register_clkdev(clk, "pll1_sysclk8", "dm365-psc"); 87 - 88 - davinci_pll_sysclk_register(dev, &pll1_sysclk9, base); 89 - 90 - clk = davinci_pll_auxclk_register(dev, "pll1_auxclk", base); 91 - clk_register_clkdev(clk, "pll1_auxclk", "dm355-psc"); 92 - 93 - davinci_pll_sysclkbp_clk_register(dev, "pll1_sysclkbp", base); 94 - 95 - davinci_pll_obsclk_register(dev, &dm365_pll1_obsclk_info, base); 96 - 97 - return 0; 98 - } 99 - 100 - static const struct davinci_pll_clk_info dm365_pll2_info = { 101 - .name = "pll2", 102 - .pllm_mask = GENMASK(9, 0), 103 - .pllm_min = 1, 104 - .pllm_max = 1023, 105 - .flags = PLL_HAS_PREDIV | PLL_HAS_POSTDIV | PLL_POSTDIV_ALWAYS_ENABLED | 106 - PLL_PLLM_2X, 107 - }; 108 - 109 - SYSCLK(1, pll2_sysclk1, pll2_pllen, 5, SYSCLK_ALWAYS_ENABLED); 110 - SYSCLK(2, pll2_sysclk2, pll2_pllen, 5, SYSCLK_ALWAYS_ENABLED); 111 - SYSCLK(3, pll2_sysclk3, pll2_pllen, 5, SYSCLK_ALWAYS_ENABLED); 112 - SYSCLK(4, pll2_sysclk4, pll2_pllen, 5, SYSCLK_ALWAYS_ENABLED); 113 - SYSCLK(5, pll2_sysclk5, pll2_pllen, 5, SYSCLK_ALWAYS_ENABLED); 114 - 115 - static const struct davinci_pll_obsclk_info dm365_pll2_obsclk_info = { 116 - .name = "pll2_obsclk", 117 - .parent_names = dm365_pll_obsclk_parent_names, 118 - .num_parents = ARRAY_SIZE(dm365_pll_obsclk_parent_names), 119 - .table = dm365_pll_obsclk_table, 120 - .ocsrc_mask = BIT(4), 121 - }; 122 - 123 - int dm365_pll2_init(struct device *dev, void __iomem *base, struct regmap *cfgchip) 124 - { 125 - struct clk *clk; 126 - 127 - davinci_pll_clk_register(dev, &dm365_pll2_info, "oscin", base, cfgchip); 128 - 129 - davinci_pll_sysclk_register(dev, &pll2_sysclk1, base); 130 - 131 - clk = davinci_pll_sysclk_register(dev, &pll2_sysclk2, base); 132 - clk_register_clkdev(clk, "pll1_sysclk2", "dm365-psc"); 133 - 134 - davinci_pll_sysclk_register(dev, &pll2_sysclk3, base); 135 - 136 - clk = davinci_pll_sysclk_register(dev, &pll2_sysclk4, base); 137 - clk_register_clkdev(clk, "pll1_sysclk4", "dm365-psc"); 138 - 139 - davinci_pll_sysclk_register(dev, &pll2_sysclk5, base); 140 - 141 - davinci_pll_auxclk_register(dev, "pll2_auxclk", base); 142 - 143 - davinci_pll_obsclk_register(dev, &dm365_pll2_obsclk_info, base); 144 - 145 - return 0; 146 - }
-89
drivers/clk/davinci/psc-dm355.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * PSC clock descriptions for TI DaVinci DM355 4 - * 5 - * Copyright (C) 2018 David Lechner <david@lechnology.com> 6 - */ 7 - 8 - #include <linux/clk-provider.h> 9 - #include <linux/clk/davinci.h> 10 - #include <linux/clk.h> 11 - #include <linux/clkdev.h> 12 - #include <linux/init.h> 13 - #include <linux/kernel.h> 14 - #include <linux/types.h> 15 - 16 - #include "psc.h" 17 - 18 - LPSC_CLKDEV1(vpss_master_clkdev, "master", "vpss"); 19 - LPSC_CLKDEV1(vpss_slave_clkdev, "slave", "vpss"); 20 - LPSC_CLKDEV1(spi1_clkdev, NULL, "spi_davinci.1"); 21 - LPSC_CLKDEV1(mmcsd1_clkdev, NULL, "dm6441-mmc.1"); 22 - LPSC_CLKDEV1(mcbsp1_clkdev, NULL, "davinci-mcbsp.1"); 23 - LPSC_CLKDEV1(usb_clkdev, "usb", NULL); 24 - LPSC_CLKDEV1(spi2_clkdev, NULL, "spi_davinci.2"); 25 - LPSC_CLKDEV1(aemif_clkdev, "aemif", NULL); 26 - LPSC_CLKDEV1(mmcsd0_clkdev, NULL, "dm6441-mmc.0"); 27 - LPSC_CLKDEV1(mcbsp0_clkdev, NULL, "davinci-mcbsp.0"); 28 - LPSC_CLKDEV1(i2c_clkdev, NULL, "i2c_davinci.1"); 29 - LPSC_CLKDEV1(uart0_clkdev, NULL, "serial8250.0"); 30 - LPSC_CLKDEV1(uart1_clkdev, NULL, "serial8250.1"); 31 - LPSC_CLKDEV1(uart2_clkdev, NULL, "serial8250.2"); 32 - LPSC_CLKDEV1(spi0_clkdev, NULL, "spi_davinci.0"); 33 - /* REVISIT: gpio-davinci.c should be modified to drop con_id */ 34 - LPSC_CLKDEV1(gpio_clkdev, "gpio", NULL); 35 - LPSC_CLKDEV1(timer0_clkdev, "timer0", NULL); 36 - LPSC_CLKDEV1(timer2_clkdev, NULL, "davinci-wdt"); 37 - LPSC_CLKDEV1(vpss_dac_clkdev, "vpss_dac", NULL); 38 - 39 - static const struct davinci_lpsc_clk_info dm355_psc_info[] = { 40 - LPSC(0, 0, vpss_master, pll1_sysclk4, vpss_master_clkdev, 0), 41 - LPSC(1, 0, vpss_slave, pll1_sysclk4, vpss_slave_clkdev, 0), 42 - LPSC(5, 0, timer3, pll1_auxclk, NULL, 0), 43 - LPSC(6, 0, spi1, pll1_sysclk2, spi1_clkdev, 0), 44 - LPSC(7, 0, mmcsd1, pll1_sysclk2, mmcsd1_clkdev, 0), 45 - LPSC(8, 0, asp1, pll1_sysclk2, mcbsp1_clkdev, 0), 46 - LPSC(9, 0, usb, pll1_sysclk2, usb_clkdev, 0), 47 - LPSC(10, 0, pwm3, pll1_auxclk, NULL, 0), 48 - LPSC(11, 0, spi2, pll1_sysclk2, spi2_clkdev, 0), 49 - LPSC(12, 0, rto, pll1_auxclk, NULL, 0), 50 - LPSC(14, 0, aemif, pll1_sysclk2, aemif_clkdev, 0), 51 - LPSC(15, 0, mmcsd0, pll1_sysclk2, mmcsd0_clkdev, 0), 52 - LPSC(17, 0, asp0, pll1_sysclk2, mcbsp0_clkdev, 0), 53 - LPSC(18, 0, i2c, pll1_auxclk, i2c_clkdev, 0), 54 - LPSC(19, 0, uart0, pll1_auxclk, uart0_clkdev, 0), 55 - LPSC(20, 0, uart1, pll1_auxclk, uart1_clkdev, 0), 56 - LPSC(21, 0, uart2, pll1_sysclk2, uart2_clkdev, 0), 57 - LPSC(22, 0, spi0, pll1_sysclk2, spi0_clkdev, 0), 58 - LPSC(23, 0, pwm0, pll1_auxclk, NULL, 0), 59 - LPSC(24, 0, pwm1, pll1_auxclk, NULL, 0), 60 - LPSC(25, 0, pwm2, pll1_auxclk, NULL, 0), 61 - LPSC(26, 0, gpio, pll1_sysclk2, gpio_clkdev, 0), 62 - LPSC(27, 0, timer0, pll1_auxclk, timer0_clkdev, LPSC_ALWAYS_ENABLED), 63 - LPSC(28, 0, timer1, pll1_auxclk, NULL, 0), 64 - /* REVISIT: why can't this be disabled? */ 65 - LPSC(29, 0, timer2, pll1_auxclk, timer2_clkdev, LPSC_ALWAYS_ENABLED), 66 - LPSC(31, 0, arm, pll1_sysclk1, NULL, LPSC_ALWAYS_ENABLED), 67 - LPSC(40, 0, mjcp, pll1_sysclk1, NULL, 0), 68 - LPSC(41, 0, vpss_dac, pll1_sysclk3, vpss_dac_clkdev, 0), 69 - { } 70 - }; 71 - 72 - int dm355_psc_init(struct device *dev, void __iomem *base) 73 - { 74 - return davinci_psc_register_clocks(dev, dm355_psc_info, 42, base); 75 - } 76 - 77 - static struct clk_bulk_data dm355_psc_parent_clks[] = { 78 - { .id = "pll1_sysclk1" }, 79 - { .id = "pll1_sysclk2" }, 80 - { .id = "pll1_sysclk3" }, 81 - { .id = "pll1_sysclk4" }, 82 - { .id = "pll1_auxclk" }, 83 - }; 84 - 85 - const struct davinci_psc_init_data dm355_psc_init_data = { 86 - .parent_clks = dm355_psc_parent_clks, 87 - .num_parent_clks = ARRAY_SIZE(dm355_psc_parent_clks), 88 - .psc_init = &dm355_psc_init, 89 - };
-111
drivers/clk/davinci/psc-dm365.c
··· 1 - // SPDX-License-Identifier: GPL-2.0 2 - /* 3 - * PSC clock descriptions for TI DaVinci DM365 4 - * 5 - * Copyright (C) 2018 David Lechner <david@lechnology.com> 6 - */ 7 - 8 - #include <linux/clk-provider.h> 9 - #include <linux/clk/davinci.h> 10 - #include <linux/clk.h> 11 - #include <linux/clkdev.h> 12 - #include <linux/init.h> 13 - #include <linux/kernel.h> 14 - #include <linux/types.h> 15 - 16 - #include "psc.h" 17 - 18 - LPSC_CLKDEV1(vpss_slave_clkdev, "slave", "vpss"); 19 - LPSC_CLKDEV1(spi1_clkdev, NULL, "spi_davinci.1"); 20 - LPSC_CLKDEV1(mmcsd1_clkdev, NULL, "da830-mmc.1"); 21 - LPSC_CLKDEV1(asp0_clkdev, NULL, "davinci-mcbsp"); 22 - LPSC_CLKDEV1(usb_clkdev, "usb", NULL); 23 - LPSC_CLKDEV1(spi2_clkdev, NULL, "spi_davinci.2"); 24 - LPSC_CLKDEV2(aemif_clkdev, "aemif", NULL, 25 - NULL, "ti-aemif"); 26 - LPSC_CLKDEV1(mmcsd0_clkdev, NULL, "da830-mmc.0"); 27 - LPSC_CLKDEV1(i2c_clkdev, NULL, "i2c_davinci.1"); 28 - LPSC_CLKDEV1(uart0_clkdev, NULL, "serial8250.0"); 29 - LPSC_CLKDEV1(uart1_clkdev, NULL, "serial8250.1"); 30 - LPSC_CLKDEV1(spi0_clkdev, NULL, "spi_davinci.0"); 31 - /* REVISIT: gpio-davinci.c should be modified to drop con_id */ 32 - LPSC_CLKDEV1(gpio_clkdev, "gpio", NULL); 33 - LPSC_CLKDEV1(timer0_clkdev, "timer0", NULL); 34 - LPSC_CLKDEV1(timer2_clkdev, NULL, "davinci-wdt"); 35 - LPSC_CLKDEV1(spi3_clkdev, NULL, "spi_davinci.3"); 36 - LPSC_CLKDEV1(spi4_clkdev, NULL, "spi_davinci.4"); 37 - LPSC_CLKDEV2(emac_clkdev, NULL, "davinci_emac.1", 38 - "fck", "davinci_mdio.0"); 39 - LPSC_CLKDEV1(voice_codec_clkdev, NULL, "davinci_voicecodec"); 40 - LPSC_CLKDEV1(vpss_dac_clkdev, "vpss_dac", NULL); 41 - LPSC_CLKDEV1(vpss_master_clkdev, "master", "vpss"); 42 - 43 - static const struct davinci_lpsc_clk_info dm365_psc_info[] = { 44 - LPSC(1, 0, vpss_slave, pll1_sysclk5, vpss_slave_clkdev, 0), 45 - LPSC(5, 0, timer3, pll1_auxclk, NULL, 0), 46 - LPSC(6, 0, spi1, pll1_sysclk4, spi1_clkdev, 0), 47 - LPSC(7, 0, mmcsd1, pll1_sysclk4, mmcsd1_clkdev, 0), 48 - LPSC(8, 0, asp0, pll1_sysclk4, asp0_clkdev, 0), 49 - LPSC(9, 0, usb, pll1_auxclk, usb_clkdev, 0), 50 - LPSC(10, 0, pwm3, pll1_auxclk, NULL, 0), 51 - LPSC(11, 0, spi2, pll1_sysclk4, spi2_clkdev, 0), 52 - LPSC(12, 0, rto, pll1_sysclk4, NULL, 0), 53 - LPSC(14, 0, aemif, pll1_sysclk4, aemif_clkdev, 0), 54 - LPSC(15, 0, mmcsd0, pll1_sysclk8, mmcsd0_clkdev, 0), 55 - LPSC(18, 0, i2c, pll1_auxclk, i2c_clkdev, 0), 56 - LPSC(19, 0, uart0, pll1_auxclk, uart0_clkdev, 0), 57 - LPSC(20, 0, uart1, pll1_sysclk4, uart1_clkdev, 0), 58 - LPSC(22, 0, spi0, pll1_sysclk4, spi0_clkdev, 0), 59 - LPSC(23, 0, pwm0, pll1_auxclk, NULL, 0), 60 - LPSC(24, 0, pwm1, pll1_auxclk, NULL, 0), 61 - LPSC(25, 0, pwm2, pll1_auxclk, NULL, 0), 62 - LPSC(26, 0, gpio, pll1_sysclk4, gpio_clkdev, 0), 63 - LPSC(27, 0, timer0, pll1_auxclk, timer0_clkdev, LPSC_ALWAYS_ENABLED), 64 - LPSC(28, 0, timer1, pll1_auxclk, NULL, 0), 65 - /* REVISIT: why can't this be disabled? */ 66 - LPSC(29, 0, timer2, pll1_auxclk, timer2_clkdev, LPSC_ALWAYS_ENABLED), 67 - LPSC(31, 0, arm, pll2_sysclk2, NULL, LPSC_ALWAYS_ENABLED), 68 - LPSC(38, 0, spi3, pll1_sysclk4, spi3_clkdev, 0), 69 - LPSC(39, 0, spi4, pll1_auxclk, spi4_clkdev, 0), 70 - LPSC(40, 0, emac, pll1_sysclk4, emac_clkdev, 0), 71 - /* 72 - * The TRM (ARM Subsystem User's Guide) shows two clocks input into 73 - * voice codec module (PLL2 SYSCLK4 with a DIV2 and PLL1 SYSCLK4). Its 74 - * not fully clear from documentation which clock should be considered 75 - * as parent for PSC. The clock chosen here is to maintain 76 - * compatibility with existing code in arch/arm/mach-davinci/dm365.c 77 - */ 78 - LPSC(44, 0, voice_codec, pll2_sysclk4, voice_codec_clkdev, 0), 79 - /* 80 - * Its not fully clear from TRM (ARM Subsystem User's Guide) as to what 81 - * the parent of VPSS DAC LPSC should actually be. PLL1 SYSCLK3 feeds 82 - * into HDVICP and MJCP. The clock chosen here is to remain compatible 83 - * with code existing in arch/arm/mach-davinci/dm365.c 84 - */ 85 - LPSC(46, 0, vpss_dac, pll1_sysclk3, vpss_dac_clkdev, 0), 86 - LPSC(47, 0, vpss_master, pll1_sysclk5, vpss_master_clkdev, 0), 87 - LPSC(50, 0, mjcp, pll1_sysclk3, NULL, 0), 88 - { } 89 - }; 90 - 91 - int dm365_psc_init(struct device *dev, void __iomem *base) 92 - { 93 - return davinci_psc_register_clocks(dev, dm365_psc_info, 52, base); 94 - } 95 - 96 - static struct clk_bulk_data dm365_psc_parent_clks[] = { 97 - { .id = "pll1_sysclk1" }, 98 - { .id = "pll1_sysclk3" }, 99 - { .id = "pll1_sysclk4" }, 100 - { .id = "pll1_sysclk5" }, 101 - { .id = "pll1_sysclk8" }, 102 - { .id = "pll2_sysclk2" }, 103 - { .id = "pll2_sysclk4" }, 104 - { .id = "pll1_auxclk" }, 105 - }; 106 - 107 - const struct davinci_psc_init_data dm365_psc_init_data = { 108 - .parent_clks = dm365_psc_parent_clks, 109 - .num_parent_clks = ARRAY_SIZE(dm365_psc_parent_clks), 110 - .psc_init = &dm365_psc_init, 111 - };