From 9bd1b6820ca9b318774c16b59427aa7e9cd53508 Mon Sep 17 00:00:00 2001 From: Shuai Li Date: Wed, 31 Jul 2019 19:25:39 +0800 Subject: [PATCH] audio: SM1 tdmouta gated by earc [1/1] PD#IPTV-3732 Problem: TMDOUTA is gated by earc clk gate. There is a bug in sm1 clk gating. Solution: Fix the wrong map of clk mapping. Verify: SM1. Change-Id: Ia395d3307c249ef0cd64b715bb936dea3e2925ac Signed-off-by: Shuai Li --- arch/arm/boot/dts/amlogic/sm1_s905d3_ac200.dts | 14 +++++------ arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts | 27 ++++++++-------------- arch/arm/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts | 27 ++++++++-------------- arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts | 14 +++++------ arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202.dts | 27 ++++++++-------------- .../arm64/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts | 27 ++++++++-------------- sound/soc/amlogic/auge/sm1,clocks.c | 5 +++- sound/soc/amlogic/auge/tm2,clocks.c | 5 +++- 8 files changed, 62 insertions(+), 84 deletions(-) diff --git a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac200.dts b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac200.dts index 507ad15..5c4e664 100644 --- a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac200.dts +++ b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac200.dts @@ -603,15 +603,15 @@ tdmacpu: cpu { sound-dai = <&tdma>; dai-tdm-slot-tx-mask = - <1 1 1 1 1 1 1 1>; + <1>; dai-tdm-slot-rx-mask = - <1 1 1 1 1 1 1 1>; - dai-tdm-slot-num = <8>; - dai-tdm-slot-width = <32>; - system-clock-frequency = <24576000>; + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; }; tdmacodec: codec { - sound-dai = <&dummy_codec &dummy_codec>; + sound-dai = <&dummy_codec>; }; }; @@ -1115,7 +1115,7 @@ compatible = "amlogic, sm1-snd-tdma"; #sound-dai-cells = <0>; dai-tdm-lane-slot-mask-in = <0 1>; - dai-tdm-oe-lane-slot-mask-out = <1 0>; + dai-tdm-lane-slot-mask-out = <1 0>; dai-tdm-clk-sel = <0>; clocks = <&clkaudio CLKID_AUDIO_MCLK_A &clkc CLKID_MPLL0>; diff --git a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts index 40a50b7..f9dd311 100644 --- a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts +++ b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202.dts @@ -605,15 +605,15 @@ tdmacpu: cpu { sound-dai = <&tdma>; dai-tdm-slot-tx-mask = - <1 1 1 1 1 1 1 1>; + <1>; dai-tdm-slot-rx-mask = - <1 1 1 1 1 1 1 1>; - dai-tdm-slot-num = <8>; - dai-tdm-slot-width = <32>; - system-clock-frequency = <24576000>; + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; }; tdmacodec: codec { - sound-dai = <&dummy_codec &dummy_codec>; + sound-dai = <&dummy_codec>; }; }; @@ -1124,13 +1124,8 @@ tdma: tdm@0 { compatible = "amlogic, sm1-snd-tdma"; #sound-dai-cells = <0>; - dai-tdm-lane-slot-mask-in = <1 1>; - dai-tdm-oe-lane-slot-mask-out = <1 1>; - dai-format = "dsp_a"; - dai-tdm-slot-tx-mask = <1>; - dai-tdm-slot-rx-mask = <1>; - dai-tdm-slot-num = <2>; - dai-tdm-slot-width = <16>; + dai-tdm-lane-slot-mask-in = <0 1>; + dai-tdm-lane-slot-mask-out = <1 0>; dai-tdm-clk-sel = <0>; clocks = <&clkaudio CLKID_AUDIO_MCLK_A &clkc CLKID_MPLL0>; @@ -1522,16 +1517,14 @@ mux { /* GPIOX_11, GPIOX_10, GPIOX_9 */ groups = "tdma_sclk", "tdma_fs", - "tdma_dout0", - "tdma_dout1"; + "tdma_dout0"; function = "tdma_out"; }; }; tdmin_a: tdmin_a { mux { /* GPIOX_8 */ - groups = "tdma_din0", - "tdma_din1"; + groups = "tdma_din1"; function = "tdma_in"; }; }; diff --git a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts index 1ac891a..ebd28794 100644 --- a/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts +++ b/arch/arm/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts @@ -605,15 +605,15 @@ tdmacpu: cpu { sound-dai = <&tdma>; dai-tdm-slot-tx-mask = - <1 1 1 1 1 1 1 1>; + <1>; dai-tdm-slot-rx-mask = - <1 1 1 1 1 1 1 1>; - dai-tdm-slot-num = <8>; - dai-tdm-slot-width = <32>; - system-clock-frequency = <24576000>; + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; }; tdmacodec: codec { - sound-dai = <&dummy_codec &dummy_codec>; + sound-dai = <&dummy_codec>; }; }; @@ -1124,13 +1124,8 @@ tdma: tdm@0 { compatible = "amlogic, sm1-snd-tdma"; #sound-dai-cells = <0>; - dai-tdm-lane-slot-mask-in = <1 1>; - dai-tdm-oe-lane-slot-mask-out = <1 1>; - dai-format = "dsp_a"; - dai-tdm-slot-tx-mask = <1>; - dai-tdm-slot-rx-mask = <1>; - dai-tdm-slot-num = <2>; - dai-tdm-slot-width = <16>; + dai-tdm-lane-slot-mask-in = <0 1>; + dai-tdm-lane-slot-mask-out = <1 0>; dai-tdm-clk-sel = <0>; clocks = <&clkaudio CLKID_AUDIO_MCLK_A &clkc CLKID_MPLL0>; @@ -1522,16 +1517,14 @@ mux { /* GPIOX_11, GPIOX_10, GPIOX_9 */ groups = "tdma_sclk", "tdma_fs", - "tdma_dout0", - "tdma_dout1"; + "tdma_dout0"; function = "tdma_out"; }; }; tdmin_a: tdmin_a { mux { /* GPIOX_8 */ - groups = "tdma_din0", - "tdma_din1"; + groups = "tdma_din1"; function = "tdma_in"; }; }; diff --git a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts index 96cdb0b..b9b3460 100644 --- a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts +++ b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac200.dts @@ -601,15 +601,15 @@ tdmacpu: cpu { sound-dai = <&tdma>; dai-tdm-slot-tx-mask = - <1 1 1 1 1 1 1 1>; + <1>; dai-tdm-slot-rx-mask = - <1 1 1 1 1 1 1 1>; - dai-tdm-slot-num = <8>; - dai-tdm-slot-width = <32>; - system-clock-frequency = <24576000>; + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; }; tdmacodec: codec { - sound-dai = <&dummy_codec &dummy_codec>; + sound-dai = <&dummy_codec>; }; }; @@ -1114,7 +1114,7 @@ compatible = "amlogic, sm1-snd-tdma"; #sound-dai-cells = <0>; dai-tdm-lane-slot-mask-in = <0 1>; - dai-tdm-oe-lane-slot-mask-out = <1 0>; + dai-tdm-lane-slot-mask-out = <1 0>; dai-tdm-clk-sel = <0>; clocks = <&clkaudio CLKID_AUDIO_MCLK_A &clkc CLKID_MPLL0>; diff --git a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202.dts b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202.dts index 7892a26..b5e8557 100644 --- a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202.dts +++ b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202.dts @@ -603,15 +603,15 @@ tdmacpu: cpu { sound-dai = <&tdma>; dai-tdm-slot-tx-mask = - <1 1 1 1 1 1 1 1>; + <1>; dai-tdm-slot-rx-mask = - <1 1 1 1 1 1 1 1>; - dai-tdm-slot-num = <8>; - dai-tdm-slot-width = <32>; - system-clock-frequency = <24576000>; + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; }; tdmacodec: codec { - sound-dai = <&dummy_codec &dummy_codec>; + sound-dai = <&dummy_codec>; }; }; @@ -1123,13 +1123,8 @@ tdma: tdm@0 { compatible = "amlogic, sm1-snd-tdma"; #sound-dai-cells = <0>; - dai-tdm-lane-slot-mask-in = <1 1>; - dai-tdm-oe-lane-slot-mask-out = <1 1>; - dai-format = "dsp_a"; - dai-tdm-slot-tx-mask = <1>; - dai-tdm-slot-rx-mask = <1>; - dai-tdm-slot-num = <2>; - dai-tdm-slot-width = <16>; + dai-tdm-lane-slot-mask-in = <0 1>; + dai-tdm-lane-slot-mask-out = <1 0>; dai-tdm-clk-sel = <0>; clocks = <&clkaudio CLKID_AUDIO_MCLK_A &clkc CLKID_MPLL0>; @@ -1520,16 +1515,14 @@ mux { /* GPIOX_11, GPIOX_10, GPIOX_9 */ groups = "tdma_sclk", "tdma_fs", - "tdma_dout0", - "tdma_dout1"; + "tdma_dout0"; function = "tdma_out"; }; }; tdmin_a: tdmin_a { mux { /* GPIOX_8 */ - groups = "tdma_din0", - "tdma_din1"; + groups = "tdma_din1"; function = "tdma_in"; }; }; diff --git a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts index 794ccbf..6c8aa3e0 100644 --- a/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts +++ b/arch/arm64/boot/dts/amlogic/sm1_s905d3_ac202_1g.dts @@ -603,15 +603,15 @@ tdmacpu: cpu { sound-dai = <&tdma>; dai-tdm-slot-tx-mask = - <1 1 1 1 1 1 1 1>; + <1>; dai-tdm-slot-rx-mask = - <1 1 1 1 1 1 1 1>; - dai-tdm-slot-num = <8>; - dai-tdm-slot-width = <32>; - system-clock-frequency = <24576000>; + <1>; + dai-tdm-slot-num = <2>; + dai-tdm-slot-width = <16>; + system-clock-frequency = <256000>; }; tdmacodec: codec { - sound-dai = <&dummy_codec &dummy_codec>; + sound-dai = <&dummy_codec>; }; }; @@ -1123,13 +1123,8 @@ tdma: tdm@0 { compatible = "amlogic, sm1-snd-tdma"; #sound-dai-cells = <0>; - dai-tdm-lane-slot-mask-in = <1 1>; - dai-tdm-oe-lane-slot-mask-out = <1 1>; - dai-format = "dsp_a"; - dai-tdm-slot-tx-mask = <1>; - dai-tdm-slot-rx-mask = <1>; - dai-tdm-slot-num = <2>; - dai-tdm-slot-width = <16>; + dai-tdm-lane-slot-mask-in = <0 1>; + dai-tdm-lane-slot-mask-out = <1 0>; dai-tdm-clk-sel = <0>; clocks = <&clkaudio CLKID_AUDIO_MCLK_A &clkc CLKID_MPLL0>; @@ -1521,16 +1516,14 @@ mux { /* GPIOX_11, GPIOX_10, GPIOX_9 */ groups = "tdma_sclk", "tdma_fs", - "tdma_dout0", - "tdma_dout1"; + "tdma_dout0"; function = "tdma_out"; }; }; tdmin_a: tdmin_a { mux { /* GPIOX_8 */ - groups = "tdma_din0", - "tdma_din1"; + groups = "tdma_din1"; function = "tdma_in"; }; }; diff --git a/sound/soc/amlogic/auge/sm1,clocks.c b/sound/soc/amlogic/auge/sm1,clocks.c index 27b192b..3190c70 100644 --- a/sound/soc/amlogic/auge/sm1,clocks.c +++ b/sound/soc/amlogic/auge/sm1,clocks.c @@ -161,7 +161,10 @@ static int sm1_clk_gates_init(struct clk **clks, void __iomem *iobase) } for (clkid = 0; clkid < MCLK_BASE; clkid++) { - sm1_audio_clk_gates[clkid]->reg = iobase; + unsigned long offset = + (unsigned long)sm1_audio_clk_gates[clkid]->reg; + sm1_audio_clk_gates[clkid]->reg = + (void __iomem *)((unsigned long)iobase + offset); clks[clkid] = clk_register(NULL, sm1_audio_clk_hws[clkid]); WARN_ON(IS_ERR_OR_NULL(clks[clkid])); } diff --git a/sound/soc/amlogic/auge/tm2,clocks.c b/sound/soc/amlogic/auge/tm2,clocks.c index ca7beb7..f21e9f2 100644 --- a/sound/soc/amlogic/auge/tm2,clocks.c +++ b/sound/soc/amlogic/auge/tm2,clocks.c @@ -177,7 +177,10 @@ static int tm2_clk_gates_init(struct clk **clks, void __iomem *iobase) } for (clkid = 0; clkid < MCLK_BASE; clkid++) { - tm2_audio_clk_gates[clkid]->reg = iobase; + unsigned long offset = + (unsigned long)tm2_audio_clk_gates[clkid]->reg; + tm2_audio_clk_gates[clkid]->reg = + (void __iomem *)((unsigned long)iobase + offset); clks[clkid] = clk_register(NULL, tm2_audio_clk_hws[clkid]); WARN_ON(IS_ERR_OR_NULL(clks[clkid])); } -- 2.7.4