audio: auge: fix spdifout clk for share buffer [1/1]
authorXing Wang <xing.wang@amlogic.com>
Fri, 1 Mar 2019 08:29:31 +0000 (16:29 +0800)
committerJianxin Pan <jianxin.pan@amlogic.com>
Tue, 5 Mar 2019 09:12:06 +0000 (01:12 -0800)
PD#SWPL-4278

Problem:
spdif out clk is related to tdm clk for share buffer.
For play raw data 32k/44.1k, it's not correct for spdif out clk.

Solution:
separate spdif out clk and tdm clk

Verify:
x301

Change-Id: Ie6e3d7413d9577c9c80ea90e8b1f9ff4bf3eefcf
Signed-off-by: Xing Wang <xing.wang@amlogic.com>
56 files changed:
arch/arm/boot/dts/amlogic/g12a_s905d2_skt.dts
arch/arm/boot/dts/amlogic/g12a_s905d2_u200.dts
arch/arm/boot/dts/amlogic/g12a_s905d2_u200_1g.dts
arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts
arch/arm/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts
arch/arm/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u211.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u211_1g.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u211_512m.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u212.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u212_1g.dts
arch/arm/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts
arch/arm/boot/dts/amlogic/g12a_s905y2_u220.dts
arch/arm/boot/dts/amlogic/g12a_s905y2_u221.dts
arch/arm/boot/dts/amlogic/g12b_a311d_skt.dts
arch/arm/boot/dts/amlogic/g12b_a311d_skt_a.dts
arch/arm/boot/dts/amlogic/g12b_a311d_w400.dts
arch/arm/boot/dts/amlogic/g12b_a311d_w400_a.dts
arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts
arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts
arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts
arch/arm/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts
arch/arm/boot/dts/amlogic/tl1_t962x2_skt.dts
arch/arm/boot/dts/amlogic/tl1_t962x2_t309.dts
arch/arm/boot/dts/amlogic/tl1_t962x2_x301.dts
arch/arm64/boot/dts/amlogic/g12a_s905d2_skt.dts
arch/arm64/boot/dts/amlogic/g12a_s905d2_u200.dts
arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_1g.dts
arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot.dts
arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_buildroot_vccktest.dts
arch/arm64/boot/dts/amlogic/g12a_s905d2_u200_drm_buildroot.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u211.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_1g.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_512m.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u211_buildroot.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u212.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_1g.dts
arch/arm64/boot/dts/amlogic/g12a_s905x2_u212_buildroot.dts
arch/arm64/boot/dts/amlogic/g12a_s905y2_u220.dts
arch/arm64/boot/dts/amlogic/g12a_s905y2_u221.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_skt.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_skt_a.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_w400.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_w400_a.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_a.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest.dts
arch/arm64/boot/dts/amlogic/g12b_a311d_w400_buildroot_vccktest_a.dts
arch/arm64/boot/dts/amlogic/g12b_a311x_w411_buildroot.dts
arch/arm64/boot/dts/amlogic/g12b_a311x_w411_buildroot_a.dts
arch/arm64/boot/dts/amlogic/tl1_t962x2_t309.dts
arch/arm64/boot/dts/amlogic/tl1_t962x2_x301.dts
sound/soc/amlogic/auge/ddr_mngr.c
sound/soc/amlogic/auge/spdif_hw.c
sound/soc/amlogic/auge/tdm.c

index 352ea71..70f1447 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index e0c0eb2..cc511d8 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 0517486..568e8a3 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index c5ee01e..2e64f70 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index bc7730e..f91cb17 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 84f951f..2479669 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 3624452..6ac5b11 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index fcd2ebb..f9f0c48 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index f3480dc..119fcf5 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index e999e2c..666b218 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 56d98e6..cecdd6a 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 5c7824c..de25c7b 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index a3281e8..8e4bc50 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 48895fc..175375c 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index caadd28..1c1a867 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 155a1ed..ed6d2be 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index c1e0449..6706641 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index d2f9141..c30da64 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index de5c382..f73033c 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 5fe7f1a..6d1a8a6 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index c84d220..25f73af 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index fcdffd3..71cff0c 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index c999018..fd62cd9 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 9ff2d02..94c29c2 100644 (file)
 
                clocks = <&clkaudio CLKID_AUDIO_MCLK_A
                                &clkc CLKID_MPLL0
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL1
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_A>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
 
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdma_mclk &tdmout_a>;
index 8cb3a73..c5f219e 100644 (file)
 
                clocks = <&clkaudio CLKID_AUDIO_MCLK_A
                                &clkc CLKID_MPLL0
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL1
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_A>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
 
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdma_mclk &tdmout_a>;
                compatible = "amlogic, tl1-snd-spdif-a";
                #sound-dai-cells = <0>;
 
-               clocks = <&clkc CLKID_MPLL0
+               clocks = <&clkc CLKID_MPLL1
                                &clkc CLKID_FCLK_DIV4
                                &clkaudio CLKID_AUDIO_GATE_SPDIFIN
                                &clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A
index eeddf10..b6dbcb2 100644 (file)
 
                aml-audio-card,dai-link@4 {
                        mclk-fs = <128>;
+                       continuous-clock;
                        /* suffix-name, sync with android audio hal used for */
                        suffix-name = "alsaPORT-spdif";
                        cpu {
 
                clocks = <&clkaudio CLKID_AUDIO_MCLK_A
                                &clkc CLKID_MPLL0
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL1
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_A>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
 
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdma_mclk &tdmout_a>;
                compatible = "amlogic, tl1-snd-spdif-a";
                #sound-dai-cells = <0>;
 
-               clocks = <&clkc CLKID_MPLL0
+               clocks = <&clkc CLKID_MPLL1
                                &clkc CLKID_FCLK_DIV4
                                &clkaudio CLKID_AUDIO_GATE_SPDIFIN
                                &clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A
index ae4f090..72c19c9 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 7443f3a..1e326a7 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index eff237c..2658a87 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 190540c..104e12f 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 5b288e8..36f4f5a 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 7caa5ec..13be6d5 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index c9342b1..46db6c7 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 24074be..5c78cdc 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 723cc70..7b5cdfd 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 36241d6..784446e 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index c36e1df..deb592b 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 02662aa..bf9519e 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index dd8d37e..6d80428 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index d2a56ed..b274718 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index cec20dd..c914dff 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 15e950f..798eb29 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 1ce3d62..666ba72 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 6302195..7e64162 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 266185f..035bbe2 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 478badf..cd054c4 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index f662823..f503e9e 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index 8f00163..970f94a 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index ce65118..8a6d0f7 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index cb70d1a..ddcc3a3 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index b72068d..186094c 100644 (file)
                dai-tdm-clk-sel = <1>;
                clocks = <&clkaudio CLKID_AUDIO_MCLK_B
                                &clkc CLKID_MPLL1
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL0
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_CTRL>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdmb_mclk &tdmout_b &tdmin_b>;
                /*
index a9195e1..b3cdd53 100644 (file)
 
                clocks = <&clkaudio CLKID_AUDIO_MCLK_A
                                &clkc CLKID_MPLL0
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL1
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_A>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
 
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdma_mclk &tdmout_a>;
                compatible = "amlogic, tl1-snd-spdif-a";
                #sound-dai-cells = <0>;
 
-               clocks = <&clkc CLKID_MPLL0
+               clocks = <&clkc CLKID_MPLL1
                                &clkc CLKID_FCLK_DIV4
                                &clkaudio CLKID_AUDIO_GATE_SPDIFIN
                                &clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A
index 2a8298e..e5d9a1f 100644 (file)
 
                clocks = <&clkaudio CLKID_AUDIO_MCLK_A
                                &clkc CLKID_MPLL0
-                               &clkc CLKID_MPLL0>;
-               clock-names = "mclk", "clk_srcpll", "samesource_sysclk";
+                               &clkc CLKID_MPLL1
+                               &clkaudio CLKID_AUDIO_SPDIFOUT_A>;
+               clock-names = "mclk", "clk_srcpll",
+                       "samesource_srcpll", "samesource_clk";
 
                pinctrl-names = "tdm_pins";
                pinctrl-0 = <&tdma_mclk &tdmout_a>;
                compatible = "amlogic, tl1-snd-spdif-a";
                #sound-dai-cells = <0>;
 
-               clocks = <&clkc CLKID_MPLL0
+               clocks = <&clkc CLKID_MPLL1
                                &clkc CLKID_FCLK_DIV4
                                &clkaudio CLKID_AUDIO_GATE_SPDIFIN
                                &clkaudio CLKID_AUDIO_GATE_SPDIFOUT_A
index ee76da9..e01ec37 100644 (file)
@@ -931,8 +931,8 @@ int aml_check_sharebuffer_valid(struct frddr *fr, int ss_sel)
                        && (frddrs[i].fifo_id != current_fifo_id)
                        && (frddrs[i].dest == ss_sel)) {
 
-                       pr_info(" frddr:%d, ss_sel:%d used, invalid for share buffer\n",
-                               i,
+                       pr_info("%s, ss_sel:%d used, not for share buffer at same time\n",
+                               __func__,
                                ss_sel);
                        ret = 0;
                        break;
index 65b4d47..0b498f0 100644 (file)
@@ -391,8 +391,8 @@ void spdifout_to_hdmitx_ctrl(int spdif_index)
                | spdif_index << 0 /* spdif_clk */
        );
 }
-
-void spdifout_clk_ctrl(int spdif_id, bool is_enable)
+#if 0
+static void spdifout_clk_ctrl(int spdif_id, bool is_enable)
 {
        unsigned int offset, reg;
 
@@ -402,7 +402,7 @@ void spdifout_clk_ctrl(int spdif_id, bool is_enable)
        /* select : mpll 0, 24m, so spdif clk:6m */
        audiobus_write(reg, is_enable << 31 | 0x0 << 24 | 0x3 << 0);
 }
-
+#endif
 static void spdifout_fifo_ctrl(int spdif_id,
        int fifo_id, int bitwidth, int channels)
 {
@@ -484,10 +484,6 @@ void spdifout_samesource_set(int spdif_index, int fifo_id,
        else
                spdif_id = 0;
 
-       /* clk for spdif_b is always on */
-       /*if (!spdif_id)*/
-               spdifout_clk_ctrl(spdif_id, /*is_enable*/true);
-
        if (is_enable)
                spdifout_fifo_ctrl(spdif_id, fifo_id, bitwidth, channels);
 }
@@ -623,7 +619,7 @@ void spdifout_play_with_zerodata(unsigned int spdif_id)
                        src0_sel = 3;
 
                /* spdif clk */
-               spdifout_clk_ctrl(spdif_id, true);
+               //spdifout_clk_ctrl(spdif_id, true);
                /* spdif to hdmitx */
                spdifout_to_hdmitx_ctrl(spdif_id);
 
index 9cefe92..bad23b9 100644 (file)
@@ -102,7 +102,8 @@ struct aml_tdm {
        struct clk *clk;
        struct clk *clk_gate;
        struct clk *mclk;
-       struct clk *samesrc_sysclk;
+       struct clk *samesrc_srcpll;
+       struct clk *samesrc_clk;
        bool contns_clk;
        unsigned int id;
        /* bclk src selection */
@@ -741,9 +742,16 @@ static int aml_dai_tdm_hw_params(struct snd_pcm_substream *substream,
                        sharebuffer_get_mclk_fs_ratio(p_tdm->samesource_sel,
                                &mux, &ratio);
                        pr_info("samesource sysclk:%d\n", rate * ratio * mux);
-                       if (p_tdm->samesrc_sysclk)
-                               clk_set_rate(p_tdm->samesrc_sysclk,
+                       if (!IS_ERR(p_tdm->samesrc_srcpll)) {
+                               clk_set_rate(p_tdm->samesrc_srcpll,
                                        rate * ratio * mux);
+                               clk_prepare_enable(p_tdm->samesrc_srcpll);
+                       }
+                       if (!IS_ERR(p_tdm->samesrc_clk)) {
+                               clk_set_rate(p_tdm->samesrc_clk,
+                                       rate * ratio);
+                               clk_prepare_enable(p_tdm->samesrc_clk);
+                       }
        }
 
        if (!p_tdm->contns_clk && !IS_ERR(p_tdm->mclk)) {
@@ -1318,12 +1326,25 @@ static int aml_tdm_platform_probe(struct platform_device *pdev)
                if (ret < 0)
                        p_tdm->samesource_sel = -1;
                else {
-                       p_tdm->samesrc_sysclk = devm_clk_get(&pdev->dev,
-                               "samesource_sysclk");
-                       if (IS_ERR(p_tdm->samesrc_sysclk)) {
+                       p_tdm->samesrc_srcpll = devm_clk_get(&pdev->dev,
+                               "samesource_srcpll");
+                       if (IS_ERR(p_tdm->samesrc_srcpll)) {
                                dev_err(&pdev->dev,
-                                       "Can't retrieve samesrc_sysclk clock\n");
-                               return PTR_ERR(p_tdm->samesrc_sysclk);
+                                       "Can't retrieve samesrc_srcpll clock\n");
+                               return PTR_ERR(p_tdm->samesrc_srcpll);
+                       }
+                       p_tdm->samesrc_clk = devm_clk_get(&pdev->dev,
+                               "samesource_clk");
+                       if (IS_ERR(p_tdm->samesrc_clk)) {
+                               dev_err(&pdev->dev,
+                                       "Can't retrieve samesrc_clk clock\n");
+                               return PTR_ERR(p_tdm->samesrc_clk);
+                       }
+                       ret = clk_set_parent(p_tdm->samesrc_clk,
+                               p_tdm->samesrc_srcpll);
+                       if (ret) {
+                               dev_err(dev, "can't set samesource clock\n");
+                               return ret;
                        }
                        pr_info("TDM id %d samesource_sel:%d\n",
                                p_tdm->id,