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

clk: ti: Fix missing omap5 mcbsp functional clock and aliases

We are using a wrong mcbsp functional clock. The interconnect target module
driver provided clock for mcbsp is not same as the mcbsp functional clock
known as the gfclk main_clk. The mcbsp functional clocks for mcbsp should
have been added before we dropped the legacy platform data.

Additionally we are also missing the clock aliases for the clocks used by
the audio driver if reparenting is needed. This causes audio driver errors
like "CLKS: could not clk_get() prcm_fck" for mcbsp as reported by Andreas.
The mcbsp clock aliases too should have been added before we dropped the
legacy platform data.

Let's add the clocks and aliases with a single patch to fix the issue
similar to omap4. On omap5, there is no mcbsp4 instance on the l4_per
interconnect.

Fixes: b1da0fa21bd1 ("ARM: OMAP2+: Drop legacy platform data for omap5 mcbsp")
Cc: H. Nikolaus Schaller <hns@goldelico.com>
Reported-by: Andreas Kemnade <andreas@kemnade.info>
Reported-by: Péter Ujfalusi <peter.ujfalusi@gmail.com>
Acked-by: Stephen Boyd <sboyd@kernel.org>
Signed-off-by: Tony Lindgren <tony@atomide.com>

+10
+6
arch/arm/boot/dts/ti/omap/omap5-l4-abe.dtsi
··· 109 109 reg = <0x0 0xff>, /* MPU private access */ 110 110 <0x49022000 0xff>; /* L3 Interconnect */ 111 111 reg-names = "mpu", "dma"; 112 + clocks = <&abe_clkctrl OMAP5_MCBSP1_CLKCTRL 24>; 113 + clock-names = "fck"; 112 114 interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>; 113 115 interrupt-names = "common"; 114 116 ti,buffer-size = <128>; ··· 144 142 reg = <0x0 0xff>, /* MPU private access */ 145 143 <0x49024000 0xff>; /* L3 Interconnect */ 146 144 reg-names = "mpu", "dma"; 145 + clocks = <&abe_clkctrl OMAP5_MCBSP2_CLKCTRL 24>; 146 + clock-names = "fck"; 147 147 interrupts = <GIC_SPI 22 IRQ_TYPE_LEVEL_HIGH>; 148 148 interrupt-names = "common"; 149 149 ti,buffer-size = <128>; ··· 179 175 reg = <0x0 0xff>, /* MPU private access */ 180 176 <0x49026000 0xff>; /* L3 Interconnect */ 181 177 reg-names = "mpu", "dma"; 178 + clocks = <&abe_clkctrl OMAP5_MCBSP3_CLKCTRL 24>; 179 + clock-names = "fck"; 182 180 interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>; 183 181 interrupt-names = "common"; 184 182 ti,buffer-size = <128>;
+4
drivers/clk/ti/clk-54xx.c
··· 565 565 DT_CLK(NULL, "gpio8_dbclk", "l4per-clkctrl:00f8:8"), 566 566 DT_CLK(NULL, "mcbsp1_gfclk", "abe-clkctrl:0028:24"), 567 567 DT_CLK(NULL, "mcbsp1_sync_mux_ck", "abe-clkctrl:0028:26"), 568 + DT_CLK("40122000.mcbsp", "prcm_fck", "abe-clkctrl:0028:26"), 568 569 DT_CLK(NULL, "mcbsp2_gfclk", "abe-clkctrl:0030:24"), 569 570 DT_CLK(NULL, "mcbsp2_sync_mux_ck", "abe-clkctrl:0030:26"), 571 + DT_CLK("40124000.mcbsp", "prcm_fck", "abe-clkctrl:0030:26"), 570 572 DT_CLK(NULL, "mcbsp3_gfclk", "abe-clkctrl:0038:24"), 571 573 DT_CLK(NULL, "mcbsp3_sync_mux_ck", "abe-clkctrl:0038:26"), 574 + DT_CLK("40126000.mcbsp", "prcm_fck", "abe-clkctrl:0038:26"), 572 575 DT_CLK(NULL, "mmc1_32khz_clk", "l3init-clkctrl:0008:8"), 573 576 DT_CLK(NULL, "mmc1_fclk", "l3init-clkctrl:0008:25"), 574 577 DT_CLK(NULL, "mmc1_fclk_mux", "l3init-clkctrl:0008:24"), 575 578 DT_CLK(NULL, "mmc2_fclk", "l3init-clkctrl:0010:25"), 576 579 DT_CLK(NULL, "mmc2_fclk_mux", "l3init-clkctrl:0010:24"), 580 + DT_CLK(NULL, "pad_fck", "pad_clks_ck"), 577 581 DT_CLK(NULL, "sata_ref_clk", "l3init-clkctrl:0068:8"), 578 582 DT_CLK(NULL, "timer10_gfclk_mux", "l4per-clkctrl:0008:24"), 579 583 DT_CLK(NULL, "timer11_gfclk_mux", "l4per-clkctrl:0010:24"),