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

clk: ti: dra7: disable the RNG and TIMER12 clkctrl clocks on HS devices

RNG and TIMER12 are reserved for secure side usage only on HS devices,
so disable their clkctrl clocks on HS SoCs also.

Signed-off-by: Tero Kristo <t-kristo@ti.com>
Tested-by: Andrew F. Davis <afd@ti.com>
Signed-off-by: Stephen Boyd <sboyd@kernel.org>

authored by

Tero Kristo and committed by
Stephen Boyd
869decd1 2b1202d7

+16 -8
+3
arch/arm/mach-omap2/clock.c
··· 119 119 if (cpu_is_omap343x()) 120 120 features.flags |= TI_CLK_DPLL_HAS_FREQSEL; 121 121 122 + if (omap_type() == OMAP2_DEVICE_TYPE_GP) 123 + features.flags |= TI_CLK_DEVICE_TYPE_GP; 124 + 122 125 /* Idlest value for interface clocks. 123 126 * 24xx uses 0 to indicate not ready, and 1 to indicate ready. 124 127 * 34xx reverses this, just to keep us on our toes
+2 -2
drivers/clk/ti/clk-7xx-compat.c
··· 662 662 { DRA7_AES1_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" }, 663 663 { DRA7_AES2_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" }, 664 664 { DRA7_DES_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" }, 665 - { DRA7_RNG_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" }, 665 + { DRA7_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "l3_iclk_div", "l4sec_clkdm" }, 666 666 { DRA7_SHAM_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div", "l4sec_clkdm" }, 667 667 { DRA7_UART7_CLKCTRL, dra7_uart7_bit_data, CLKF_SW_SUP, "l4per_cm:clk:01d0:24", "l4per2_clkdm" }, 668 668 { DRA7_UART8_CLKCTRL, dra7_uart8_bit_data, CLKF_SW_SUP, "l4per_cm:clk:01e0:24", "l4per2_clkdm" }, ··· 704 704 { DRA7_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 705 705 { DRA7_GPIO1_CLKCTRL, dra7_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" }, 706 706 { DRA7_TIMER1_CLKCTRL, dra7_timer1_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0020:24" }, 707 - { DRA7_TIMER12_CLKCTRL, NULL, 0, "secure_32k_clk_src_ck" }, 707 + { DRA7_TIMER12_CLKCTRL, NULL, CLKF_SOC_NONSEC, "secure_32k_clk_src_ck" }, 708 708 { DRA7_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" }, 709 709 { DRA7_UART10_CLKCTRL, dra7_uart10_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0060:24" }, 710 710 { DRA7_DCAN1_CLKCTRL, dra7_dcan1_bit_data, CLKF_SW_SUP, "wkupaon_cm:clk:0068:24" },
+2 -2
drivers/clk/ti/clk-7xx.c
··· 590 590 { DRA7_L4SEC_AES1_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 591 591 { DRA7_L4SEC_AES2_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 592 592 { DRA7_L4SEC_DES_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 593 - { DRA7_L4SEC_RNG_CLKCTRL, NULL, CLKF_HW_SUP, "" }, 593 + { DRA7_L4SEC_RNG_CLKCTRL, NULL, CLKF_HW_SUP | CLKF_SOC_NONSEC, "" }, 594 594 { DRA7_L4SEC_SHAM_CLKCTRL, NULL, CLKF_HW_SUP, "l3_iclk_div" }, 595 595 { 0 }, 596 596 }; ··· 757 757 { DRA7_WKUPAON_WD_TIMER2_CLKCTRL, NULL, CLKF_SW_SUP, "sys_32k_ck" }, 758 758 { DRA7_WKUPAON_GPIO1_CLKCTRL, dra7_gpio1_bit_data, CLKF_HW_SUP, "wkupaon_iclk_mux" }, 759 759 { DRA7_WKUPAON_TIMER1_CLKCTRL, dra7_timer1_bit_data, CLKF_SW_SUP, "wkupaon-clkctrl:0020:24" }, 760 - { DRA7_WKUPAON_TIMER12_CLKCTRL, NULL, 0, "secure_32k_clk_src_ck" }, 760 + { DRA7_WKUPAON_TIMER12_CLKCTRL, NULL, CLKF_SOC_NONSEC, "secure_32k_clk_src_ck" }, 761 761 { DRA7_WKUPAON_COUNTER_32K_CLKCTRL, NULL, 0, "wkupaon_iclk_mux" }, 762 762 { DRA7_WKUPAON_UART10_CLKCTRL, dra7_uart10_bit_data, CLKF_SW_SUP, "wkupaon-clkctrl:0060:24" }, 763 763 { DRA7_WKUPAON_DCAN1_CLKCTRL, dra7_dcan1_bit_data, CLKF_SW_SUP, "wkupaon-clkctrl:0068:24" },
+3
drivers/clk/ti/clkctrl.c
··· 509 509 data = dm816_clkctrl_data; 510 510 #endif 511 511 512 + if (ti_clk_get_features()->flags & TI_CLK_DEVICE_TYPE_GP) 513 + soc_mask |= CLKF_SOC_NONSEC; 514 + 512 515 while (data->addr) { 513 516 if (addr == data->addr) 514 517 break;
+5 -4
drivers/clk/ti/clock.h
··· 83 83 #define CLKF_HW_SUP BIT(6) 84 84 #define CLKF_NO_IDLEST BIT(7) 85 85 86 - #define CLKF_SOC_MASK GENMASK(10, 8) 86 + #define CLKF_SOC_MASK GENMASK(11, 8) 87 87 88 - #define CLKF_SOC_DRA72 BIT(8) 89 - #define CLKF_SOC_DRA74 BIT(9) 90 - #define CLKF_SOC_DRA76 BIT(10) 88 + #define CLKF_SOC_NONSEC BIT(8) 89 + #define CLKF_SOC_DRA72 BIT(9) 90 + #define CLKF_SOC_DRA74 BIT(10) 91 + #define CLKF_SOC_DRA76 BIT(11) 91 92 92 93 #define CLK(dev, con, ck) \ 93 94 { \
+1
include/linux/clk/ti.h
··· 294 294 #define TI_CLK_DISABLE_CLKDM_CONTROL BIT(2) 295 295 #define TI_CLK_ERRATA_I810 BIT(3) 296 296 #define TI_CLK_CLKCTRL_COMPAT BIT(4) 297 + #define TI_CLK_DEVICE_TYPE_GP BIT(5) 297 298 298 299 void ti_clk_setup_features(struct ti_clk_features *features); 299 300 const struct ti_clk_features *ti_clk_get_features(void);