diff options
author | Kevin Hilman <khilman@linaro.org> | 2015-12-11 19:14:34 -0500 |
---|---|---|
committer | Kevin Hilman <khilman@linaro.org> | 2015-12-11 19:14:34 -0500 |
commit | 7f4c977849d494a1ff173fbc226b69192ec02c90 (patch) | |
tree | 32308c431266cf92ab3971632a238836df2de28f | |
parent | 6534778371b157e375a28a70290201d9aa20ab08 (diff) | |
parent | 9c17190595840b4ed30e8d5f286636ceb28aae4f (diff) |
Merge tag 'imx-fixes-4.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux into fixes
Merge "ARM: imx: fixes for 4.4, 2nd round" from Shawn Guo:
The i.MX fixes for 4.4, 2nd round:
- Fix vf610 SAI clock configuration bug which is discovered by the newly
added master mode support in SAI audio driver.
- Fix buggy L2 cache latency values in vf610 device trees, which may
cause system hang when cpu runs at a higher frequency.
* tag 'imx-fixes-4.4-2' of git://git.kernel.org/pub/scm/linux/kernel/git/shawnguo/linux:
ARM: dts: vf610: use reset values for L2 cache latencies
ARM: dts: vf610: fix clock definition for SAI2
ARM: imx: clk-vf610: fix SAI clock tree
-rw-r--r-- | arch/arm/boot/dts/vf610-colibri.dtsi | 5 | ||||
-rw-r--r-- | arch/arm/boot/dts/vf610.dtsi | 2 | ||||
-rw-r--r-- | arch/arm/boot/dts/vfxxx.dtsi | 6 | ||||
-rw-r--r-- | drivers/clk/imx/clk-vf610.c | 8 |
4 files changed, 9 insertions, 12 deletions
diff --git a/arch/arm/boot/dts/vf610-colibri.dtsi b/arch/arm/boot/dts/vf610-colibri.dtsi index 19fe045b8334..2d7eab755210 100644 --- a/arch/arm/boot/dts/vf610-colibri.dtsi +++ b/arch/arm/boot/dts/vf610-colibri.dtsi | |||
@@ -18,8 +18,3 @@ | |||
18 | reg = <0x80000000 0x10000000>; | 18 | reg = <0x80000000 0x10000000>; |
19 | }; | 19 | }; |
20 | }; | 20 | }; |
21 | |||
22 | &L2 { | ||
23 | arm,data-latency = <2 1 2>; | ||
24 | arm,tag-latency = <3 2 3>; | ||
25 | }; | ||
diff --git a/arch/arm/boot/dts/vf610.dtsi b/arch/arm/boot/dts/vf610.dtsi index 5f8eb1bd782b..58bc6e448be5 100644 --- a/arch/arm/boot/dts/vf610.dtsi +++ b/arch/arm/boot/dts/vf610.dtsi | |||
@@ -19,7 +19,7 @@ | |||
19 | reg = <0x40006000 0x1000>; | 19 | reg = <0x40006000 0x1000>; |
20 | cache-unified; | 20 | cache-unified; |
21 | cache-level = <2>; | 21 | cache-level = <2>; |
22 | arm,data-latency = <1 1 1>; | 22 | arm,data-latency = <3 3 3>; |
23 | arm,tag-latency = <2 2 2>; | 23 | arm,tag-latency = <2 2 2>; |
24 | }; | 24 | }; |
25 | }; | 25 | }; |
diff --git a/arch/arm/boot/dts/vfxxx.dtsi b/arch/arm/boot/dts/vfxxx.dtsi index 0d5acc2cdc8e..3cd1b27f2697 100644 --- a/arch/arm/boot/dts/vfxxx.dtsi +++ b/arch/arm/boot/dts/vfxxx.dtsi | |||
@@ -178,8 +178,10 @@ | |||
178 | compatible = "fsl,vf610-sai"; | 178 | compatible = "fsl,vf610-sai"; |
179 | reg = <0x40031000 0x1000>; | 179 | reg = <0x40031000 0x1000>; |
180 | interrupts = <86 IRQ_TYPE_LEVEL_HIGH>; | 180 | interrupts = <86 IRQ_TYPE_LEVEL_HIGH>; |
181 | clocks = <&clks VF610_CLK_SAI2>; | 181 | clocks = <&clks VF610_CLK_SAI2>, |
182 | clock-names = "sai"; | 182 | <&clks VF610_CLK_SAI2_DIV>, |
183 | <&clks 0>, <&clks 0>; | ||
184 | clock-names = "bus", "mclk1", "mclk2", "mclk3"; | ||
183 | dma-names = "tx", "rx"; | 185 | dma-names = "tx", "rx"; |
184 | dmas = <&edma0 0 21>, | 186 | dmas = <&edma0 0 21>, |
185 | <&edma0 0 20>; | 187 | <&edma0 0 20>; |
diff --git a/drivers/clk/imx/clk-vf610.c b/drivers/clk/imx/clk-vf610.c index d1b1c95177bb..0a94d9661d91 100644 --- a/drivers/clk/imx/clk-vf610.c +++ b/drivers/clk/imx/clk-vf610.c | |||
@@ -335,22 +335,22 @@ static void __init vf610_clocks_init(struct device_node *ccm_node) | |||
335 | clk[VF610_CLK_SAI0_SEL] = imx_clk_mux("sai0_sel", CCM_CSCMR1, 0, 2, sai_sels, 4); | 335 | clk[VF610_CLK_SAI0_SEL] = imx_clk_mux("sai0_sel", CCM_CSCMR1, 0, 2, sai_sels, 4); |
336 | clk[VF610_CLK_SAI0_EN] = imx_clk_gate("sai0_en", "sai0_sel", CCM_CSCDR1, 16); | 336 | clk[VF610_CLK_SAI0_EN] = imx_clk_gate("sai0_en", "sai0_sel", CCM_CSCDR1, 16); |
337 | clk[VF610_CLK_SAI0_DIV] = imx_clk_divider("sai0_div", "sai0_en", CCM_CSCDR1, 0, 4); | 337 | clk[VF610_CLK_SAI0_DIV] = imx_clk_divider("sai0_div", "sai0_en", CCM_CSCDR1, 0, 4); |
338 | clk[VF610_CLK_SAI0] = imx_clk_gate2("sai0", "sai0_div", CCM_CCGR0, CCM_CCGRx_CGn(15)); | 338 | clk[VF610_CLK_SAI0] = imx_clk_gate2("sai0", "ipg_bus", CCM_CCGR0, CCM_CCGRx_CGn(15)); |
339 | 339 | ||
340 | clk[VF610_CLK_SAI1_SEL] = imx_clk_mux("sai1_sel", CCM_CSCMR1, 2, 2, sai_sels, 4); | 340 | clk[VF610_CLK_SAI1_SEL] = imx_clk_mux("sai1_sel", CCM_CSCMR1, 2, 2, sai_sels, 4); |
341 | clk[VF610_CLK_SAI1_EN] = imx_clk_gate("sai1_en", "sai1_sel", CCM_CSCDR1, 17); | 341 | clk[VF610_CLK_SAI1_EN] = imx_clk_gate("sai1_en", "sai1_sel", CCM_CSCDR1, 17); |
342 | clk[VF610_CLK_SAI1_DIV] = imx_clk_divider("sai1_div", "sai1_en", CCM_CSCDR1, 4, 4); | 342 | clk[VF610_CLK_SAI1_DIV] = imx_clk_divider("sai1_div", "sai1_en", CCM_CSCDR1, 4, 4); |
343 | clk[VF610_CLK_SAI1] = imx_clk_gate2("sai1", "sai1_div", CCM_CCGR1, CCM_CCGRx_CGn(0)); | 343 | clk[VF610_CLK_SAI1] = imx_clk_gate2("sai1", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(0)); |
344 | 344 | ||
345 | clk[VF610_CLK_SAI2_SEL] = imx_clk_mux("sai2_sel", CCM_CSCMR1, 4, 2, sai_sels, 4); | 345 | clk[VF610_CLK_SAI2_SEL] = imx_clk_mux("sai2_sel", CCM_CSCMR1, 4, 2, sai_sels, 4); |
346 | clk[VF610_CLK_SAI2_EN] = imx_clk_gate("sai2_en", "sai2_sel", CCM_CSCDR1, 18); | 346 | clk[VF610_CLK_SAI2_EN] = imx_clk_gate("sai2_en", "sai2_sel", CCM_CSCDR1, 18); |
347 | clk[VF610_CLK_SAI2_DIV] = imx_clk_divider("sai2_div", "sai2_en", CCM_CSCDR1, 8, 4); | 347 | clk[VF610_CLK_SAI2_DIV] = imx_clk_divider("sai2_div", "sai2_en", CCM_CSCDR1, 8, 4); |
348 | clk[VF610_CLK_SAI2] = imx_clk_gate2("sai2", "sai2_div", CCM_CCGR1, CCM_CCGRx_CGn(1)); | 348 | clk[VF610_CLK_SAI2] = imx_clk_gate2("sai2", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(1)); |
349 | 349 | ||
350 | clk[VF610_CLK_SAI3_SEL] = imx_clk_mux("sai3_sel", CCM_CSCMR1, 6, 2, sai_sels, 4); | 350 | clk[VF610_CLK_SAI3_SEL] = imx_clk_mux("sai3_sel", CCM_CSCMR1, 6, 2, sai_sels, 4); |
351 | clk[VF610_CLK_SAI3_EN] = imx_clk_gate("sai3_en", "sai3_sel", CCM_CSCDR1, 19); | 351 | clk[VF610_CLK_SAI3_EN] = imx_clk_gate("sai3_en", "sai3_sel", CCM_CSCDR1, 19); |
352 | clk[VF610_CLK_SAI3_DIV] = imx_clk_divider("sai3_div", "sai3_en", CCM_CSCDR1, 12, 4); | 352 | clk[VF610_CLK_SAI3_DIV] = imx_clk_divider("sai3_div", "sai3_en", CCM_CSCDR1, 12, 4); |
353 | clk[VF610_CLK_SAI3] = imx_clk_gate2("sai3", "sai3_div", CCM_CCGR1, CCM_CCGRx_CGn(2)); | 353 | clk[VF610_CLK_SAI3] = imx_clk_gate2("sai3", "ipg_bus", CCM_CCGR1, CCM_CCGRx_CGn(2)); |
354 | 354 | ||
355 | clk[VF610_CLK_NFC_SEL] = imx_clk_mux("nfc_sel", CCM_CSCMR1, 12, 2, nfc_sels, 4); | 355 | clk[VF610_CLK_NFC_SEL] = imx_clk_mux("nfc_sel", CCM_CSCMR1, 12, 2, nfc_sels, 4); |
356 | clk[VF610_CLK_NFC_EN] = imx_clk_gate("nfc_en", "nfc_sel", CCM_CSCDR2, 9); | 356 | clk[VF610_CLK_NFC_EN] = imx_clk_gate("nfc_en", "nfc_sel", CCM_CSCDR2, 9); |