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

clk: ti: dm816: add clkctrl clock data

Add data for dm816 clkctrl clocks, and register it within the clkctrl
driver.

Signed-off-by: Tero Kristo <t-kristo@ti.com>

+49
+45
drivers/clk/ti/clk-816x.c
··· 13 13 #include <linux/list.h> 14 14 #include <linux/clk-provider.h> 15 15 #include <linux/clk/ti.h> 16 + #include <dt-bindings/clock/dm816.h> 16 17 17 18 #include "clock.h" 19 + 20 + static const struct omap_clkctrl_reg_data dm816_default_clkctrl_regs[] __initconst = { 21 + { DM816_USB_OTG_HS_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" }, 22 + { 0 }, 23 + }; 24 + 25 + static const struct omap_clkctrl_reg_data dm816_alwon_clkctrl_regs[] __initconst = { 26 + { DM816_UART1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 27 + { DM816_UART2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 28 + { DM816_UART3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 29 + { DM816_GPIO1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" }, 30 + { DM816_GPIO2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" }, 31 + { DM816_I2C1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 32 + { DM816_I2C2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 33 + { DM816_TIMER1_CLKCTRL, NULL, CLKF_SW_SUP, "timer1_fck" }, 34 + { DM816_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "timer2_fck" }, 35 + { DM816_TIMER3_CLKCTRL, NULL, CLKF_SW_SUP, "timer3_fck" }, 36 + { DM816_TIMER4_CLKCTRL, NULL, CLKF_SW_SUP, "timer4_fck" }, 37 + { DM816_TIMER5_CLKCTRL, NULL, CLKF_SW_SUP, "timer5_fck" }, 38 + { DM816_TIMER6_CLKCTRL, NULL, CLKF_SW_SUP, "timer6_fck" }, 39 + { DM816_TIMER7_CLKCTRL, NULL, CLKF_SW_SUP, "timer7_fck" }, 40 + { DM816_WD_TIMER_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk18_ck" }, 41 + { DM816_MCSPI1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 42 + { DM816_MAILBOX_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" }, 43 + { DM816_SPINBOX_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" }, 44 + { DM816_MMC1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk10_ck" }, 45 + { DM816_GPMC_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk6_ck" }, 46 + { DM816_DAVINCI_MDIO_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk24_ck" }, 47 + { DM816_EMAC1_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk24_ck" }, 48 + { DM816_MPU_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk2_ck" }, 49 + { DM816_RTC_CLKCTRL, NULL, CLKF_SW_SUP | CLKF_NO_IDLEST, "sysclk18_ck" }, 50 + { DM816_TPCC_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" }, 51 + { DM816_TPTC0_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" }, 52 + { DM816_TPTC1_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" }, 53 + { DM816_TPTC2_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" }, 54 + { DM816_TPTC3_CLKCTRL, NULL, CLKF_SW_SUP, "sysclk4_ck" }, 55 + { 0 }, 56 + }; 57 + 58 + const struct omap_clkctrl_data dm816_clkctrl_data[] __initconst = { 59 + { 0x48180500, dm816_default_clkctrl_regs }, 60 + { 0x48181400, dm816_alwon_clkctrl_regs }, 61 + { 0 }, 62 + }; 18 63 19 64 static struct ti_dt_clk dm816x_clks[] = { 20 65 DT_CLK(NULL, "sys_clkin", "sys_clkin_ck"),
+3
drivers/clk/ti/clkctrl.c
··· 469 469 #ifdef CONFIG_SOC_TI81XX 470 470 if (of_machine_is_compatible("ti,dm814")) 471 471 data = dm814_clkctrl_data; 472 + 473 + if (of_machine_is_compatible("ti,dm816")) 474 + data = dm816_clkctrl_data; 472 475 #endif 473 476 474 477 while (data->addr) {
+1
drivers/clk/ti/clock.h
··· 237 237 extern const struct omap_clkctrl_data am4_clkctrl_data[]; 238 238 extern const struct omap_clkctrl_data am438x_clkctrl_data[]; 239 239 extern const struct omap_clkctrl_data dm814_clkctrl_data[]; 240 + extern const struct omap_clkctrl_data dm816_clkctrl_data[]; 240 241 241 242 #define CLKF_SW_SUP BIT(0) 242 243 #define CLKF_HW_SUP BIT(1)