Add clk and dt support for PDMA and SPI on Exynos7
cover Add clk and dt support for PDMA and SPI on Exynos7
Add PDMA0,PDMA1 gate clock and required clks for 5 SPI channels. Also enable the support for PDMA and 5 SPI channels in DT.
This patchset is dependent on usb clk support from Vivek in below link.
http://www.spinics.net/lists/linux-samsung-soc/msg39342.html
Padmavathi Venna (4):
clk: samsung: exynos7: add gate clock for DMA block
clk: samsung: exynos7: add clocks for SPI block
clk: samsung: exynos7: add clocks for audio block
arm64: dts: Add PDMA and SPI device tree node for exynos7
.../devicetree/bindings/clock/exynos7-clock.txt | 6 + arch/arm64/boot/dts/exynos/exynos7.dtsi | 113 ++++++++++ drivers/clk/samsung/clk-exynos7.c | 221 +++++++++++++++++++- include/dt-bindings/clock/exynos7-clk.h | 46 ++++- 4 files changed, 380 insertions(+), 6 deletions(-)
Signature · 1 line
1.7.4.4
PATCH 1/4 clk: samsung: exynos7: add gate clock for DMA block
Add support for PDMA0 and PDMA1 gate clks.
--- drivers/clk/samsung/clk-exynos7.c | 4 ++++ include/dt-bindings/clock/exynos7-clk.h | 4 +++- 2 files changed, 7 insertions(+), 1 deletions(-)
drivers/clk/samsung/clk-exynos7.c +4 -0
@@ -711,6 +711,10 @@ static struct samsung_gate_clock fsys0_gate_clks[] __initdata = {GATE (ACLK_AXIUS_USBDRD30X_FSYS0X ,"aclk_axius_usbdrd30x_fsys0x" ,"mout_aclk_fsys0_200_user" ,ENABLE_ACLK_FSYS00 ,19 ,0 ,0 ), +GATE (ACLK_PDMA1 ,"aclk_pdma1" ,"mout_aclk_fsys0_200_user" , +ENABLE_ACLK_FSYS00 ,3 ,0 ,0 ), +GATE (ACLK_PDMA0 ,"aclk_pdma0" ,"mout_aclk_fsys0_200_user" , +ENABLE_ACLK_FSYS00 ,4 ,0 ,0 ),GATE (ACLK_USBDRD300 ,"aclk_usbdrd300" ,"mout_aclk_fsys0_200_user" , ENABLE_ACLK_FSYS01, 29, 0, 0),
include/dt-bindings/clock/exynos7-clk.h +3 -1
@@ -89,7 +89,9 @@#define PHYCLK_USBDRD300_UDRD30_PIPE_PCLK_USER 6#define PHYCLK_USBDRD300_UDRD30_PHYCLK_USER 7#define OSCCLK_PHY_CLKOUT_USB30_PHY 8 -#define FSYS0_NR_CLK 9 +#define ACLK_PDMA0 9 +#define ACLK_PDMA1 10 +#define FSYS0_NR_CLK 11/* FSYS1 */ #define ACLK_MMC1 1
Signature · 1 line
1.7.4.4
PATCH 2/4 clk: samsung: exynos7: add clocks for SPI block
In reply to Padmavathi VennaAdd clock support for 5 SPI channels.
--- drivers/clk/samsung/clk-exynos7.c | 73 +++++++++++++++++++++++++++++++ include/dt-bindings/clock/exynos7-clk.h | 22 ++++++++- 2 files changed, 93 insertions(+), 2 deletions(-)
drivers/clk/samsung/clk-exynos7.c +73 -0
@@ -166,9 +166,15 @@ CLK_OF_DECLARE(exynos7_clk_topc, "samsung,exynos7-clock-topc",#define MUX_SEL_TOP00 0x0200#define MUX_SEL_TOP01 0x0204#define MUX_SEL_TOP03 0x020C +#define MUX_SEL_TOP0_PERIC1 0x0234 +#define MUX_SEL_TOP0_PERIC2 0x0238#define MUX_SEL_TOP0_PERIC3 0x023C#define DIV_TOP03 0x060C +#define DIV_TOP0_PERIC1 0x0634 +#define DIV_TOP0_PERIC2 0x0638#define DIV_TOP0_PERIC3 0x063C +#define ENABLE_SCLK_TOP0_PERIC1 0x0A34 +#define ENABLE_SCLK_TOP0_PERIC2 0x0A38#define ENABLE_SCLK_TOP0_PERIC3 0x0A3C/* List of parent clocks for Muxes in CMU_TOP0 */
@@ -194,9 +200,15 @@ static unsigned long top0_clk_regs[] __initdata = {MUX_SEL_TOP00 ,MUX_SEL_TOP01 ,MUX_SEL_TOP03 , +MUX_SEL_TOP0_PERIC1 , +MUX_SEL_TOP0_PERIC2 ,MUX_SEL_TOP0_PERIC3 ,DIV_TOP03 , +DIV_TOP0_PERIC1 , +DIV_TOP0_PERIC2 ,DIV_TOP0_PERIC3 , +ENABLE_SCLK_TOP0_PERIC1 , +ENABLE_SCLK_TOP0_PERIC2 , ENABLE_SCLK_TOP0_PERIC3, };
@@ -218,10 +230,16 @@ static struct samsung_mux_clock top0_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66" , mout_top0_group1,MUX_SEL_TOP03 ,12 ,2 ),MUX (0 ,"mout_aclk_peric0_66" , mout_top0_group1,MUX_SEL_TOP03 ,20 ,2 ), +MUX (0 ,"mout_sclk_spi1" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,8 ,2 ), +MUX (0 ,"mout_sclk_spi0" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,20 ,2 ), + +MUX (0 ,"mout_sclk_spi3" , mout_top0_group1,MUX_SEL_TOP0_PERIC2 ,8 ,2 ), +MUX (0 ,"mout_sclk_spi2" , mout_top0_group1,MUX_SEL_TOP0_PERIC2 ,20 ,2 ),MUX (0 ,"mout_sclk_uart3" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,4 ,2 ),MUX (0 ,"mout_sclk_uart2" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,8 ,2 ),MUX (0 ,"mout_sclk_uart1" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,12 ,2 ),MUX (0 ,"mout_sclk_uart0" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,16 ,2 ), + MUX(0, "mout_sclk_spi4", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 20, 2), }; static struct samsung_div_clock top0_div_clks[] __initdata = {
@@ -230,13 +248,29 @@ static struct samsung_div_clock top0_div_clks[] __initdata = { DIV(DOUT_ACLK_PERIC0, "dout_aclk_peric0_66", "mout_aclk_peric0_66", DIV_TOP03, 20, 6), + DIV(0, "dout_sclk_spi1", "mout_sclk_spi1", DIV_TOP0_PERIC1, 8, 12), + DIV(0, "dout_sclk_spi0", "mout_sclk_spi0", DIV_TOP0_PERIC1, 20, 12), + + DIV(0, "dout_sclk_spi3", "mout_sclk_spi3", DIV_TOP0_PERIC2, 8, 12), + DIV(0, "dout_sclk_spi2", "mout_sclk_spi2", DIV_TOP0_PERIC2, 20, 12), + DIV(0, "dout_sclk_uart3", "mout_sclk_uart3", DIV_TOP0_PERIC3, 4, 4), DIV(0, "dout_sclk_uart2", "mout_sclk_uart2", DIV_TOP0_PERIC3, 8, 4), DIV(0, "dout_sclk_uart1", "mout_sclk_uart1", DIV_TOP0_PERIC3, 12, 4), DIV(0, "dout_sclk_uart0", "mout_sclk_uart0", DIV_TOP0_PERIC3, 16, 4), + DIV(0, "dout_sclk_spi4", "mout_sclk_spi4", DIV_TOP0_PERIC3, 20, 12), };static struct samsung_gate_clock top0_gate_clks[]__initdata = { +GATE (CLK_SCLK_SPI1 ,"sclk_spi1" ,"dout_sclk_spi1" , +ENABLE_SCLK_TOP0_PERIC1 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI0 ,"sclk_spi0" ,"dout_sclk_spi0" , +ENABLE_SCLK_TOP0_PERIC1 ,20 ,CLK_SET_RATE_PARENT ,0 ), + +GATE (CLK_SCLK_SPI3 ,"sclk_spi3" ,"dout_sclk_spi3" , +ENABLE_SCLK_TOP0_PERIC2 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI2 ,"sclk_spi2" ,"dout_sclk_spi2" , +ENABLE_SCLK_TOP0_PERIC2 ,20 ,CLK_SET_RATE_PARENT ,0 ),GATE (CLK_SCLK_UART3 ,"sclk_uart3" ,"dout_sclk_uart3" ,ENABLE_SCLK_TOP0_PERIC3 ,4 ,0 ,0 ), GATE(CLK_SCLK_UART2, "sclk_uart2", "dout_sclk_uart2",
@@ -245,6 +279,8 @@ static struct samsung_gate_clock top0_gate_clks[] __initdata = { ENABLE_SCLK_TOP0_PERIC3, 12, 0, 0), GATE(CLK_SCLK_UART0, "sclk_uart0", "dout_sclk_uart0", ENABLE_SCLK_TOP0_PERIC3, 16, 0, 0), + GATE(CLK_SCLK_SPI4, "sclk_spi4", "dout_sclk_spi4", + ENABLE_SCLK_TOP0_PERIC3, 20, CLK_SET_RATE_PARENT, 0), };static struct samsung_fixed_factor_clock top0_fixed_factor_clks[]__initdata = {
@@ -520,6 +556,7 @@ static void __init exynos7_clk_peric0_init(struct device_node *np)/* Register Offset definitions for CMU_PERIC1 (0x14C80000) */ #define MUX_SEL_PERIC10 0x0200#define MUX_SEL_PERIC11 0x0204 +#define MUX_SEL_PERIC12 0x0208#define ENABLE_PCLK_PERIC1 0x0900#define ENABLE_SCLK_PERIC10 0x0A00
@@ -531,10 +568,16 @@ PNAME(mout_aclk_peric1_66_p) = { "fin_pll", "dout_aclk_peric1_66" };PNAME (mout_sclk_uart1_p) = {"fin_pll" ,"sclk_uart1" };PNAME (mout_sclk_uart2_p) = {"fin_pll" ,"sclk_uart2" };PNAME (mout_sclk_uart3_p) = {"fin_pll" ,"sclk_uart3" }; +PNAME (mout_sclk_spi0_p) = {"fin_pll" ,"sclk_spi0" }; +PNAME (mout_sclk_spi1_p) = {"fin_pll" ,"sclk_spi1" }; +PNAME (mout_sclk_spi2_p) = {"fin_pll" ,"sclk_spi2" }; +PNAME (mout_sclk_spi3_p) = {"fin_pll" ,"sclk_spi3" }; +PNAME (mout_sclk_spi4_p) = {"fin_pll" ,"sclk_spi4" };static unsigned long peric1_clk_regs[]__initdata = {MUX_SEL_PERIC10 ,MUX_SEL_PERIC11 , +MUX_SEL_PERIC12 ,ENABLE_PCLK_PERIC1 ,ENABLE_SCLK_PERIC10 , };
@@ -543,6 +586,16 @@ static struct samsung_mux_clock peric1_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66_user" , mout_aclk_peric1_66_p,MUX_SEL_PERIC10 ,0 ,1 ), +MUX_F (0 ,"mout_sclk_spi0_user" , mout_sclk_spi0_p, +MUX_SEL_PERIC11 ,0 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi1_user" , mout_sclk_spi1_p, +MUX_SEL_PERIC11 ,4 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi2_user" , mout_sclk_spi2_p, +MUX_SEL_PERIC11 ,8 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi3_user" , mout_sclk_spi3_p, +MUX_SEL_PERIC11 ,12 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi4_user" , mout_sclk_spi4_p, +MUX_SEL_PERIC11 ,16 ,1 ,CLK_SET_RATE_PARENT ,0 ),MUX (0 ,"mout_sclk_uart1_user" , mout_sclk_uart1_p,MUX_SEL_PERIC11 ,20 ,1 ), MUX(0, "mout_sclk_uart2_user", mout_sclk_uart2_p,
@@ -568,6 +621,16 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_PCLK_PERIC1, 10, 0, 0),GATE (PCLK_UART3 ,"pclk_uart3" ,"mout_aclk_peric1_66_user" ,ENABLE_PCLK_PERIC1 ,11 ,0 ,0 ), +GATE (PCLK_SPI0 ,"pclk_spi0" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,12 ,0 ,0 ), +GATE (PCLK_SPI1 ,"pclk_spi1" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,13 ,0 ,0 ), +GATE (PCLK_SPI2 ,"pclk_spi2" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,14 ,0 ,0 ), +GATE (PCLK_SPI3 ,"pclk_spi3" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,15 ,0 ,0 ), +GATE (PCLK_SPI4 ,"pclk_spi4" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,16 ,0 ,0 ),GATE (SCLK_UART1 ,"sclk_uart1_user" ,"mout_sclk_uart1_user" , ENABLE_SCLK_PERIC10, 9, 0, 0),
@@ -575,6 +638,16 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_SCLK_PERIC10, 10, 0, 0),GATE (SCLK_UART3 ,"sclk_uart3_user" ,"mout_sclk_uart3_user" ,ENABLE_SCLK_PERIC10 ,11 ,0 ,0 ), +GATE (SCLK_SPI0 ,"sclk_spi0_user" ,"mout_sclk_spi0_user" , +ENABLE_SCLK_PERIC10 ,12 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI1 ,"sclk_spi1_user" ,"mout_sclk_spi1_user" , +ENABLE_SCLK_PERIC10 ,13 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI2 ,"sclk_spi2_user" ,"mout_sclk_spi2_user" , +ENABLE_SCLK_PERIC10 ,14 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI3 ,"sclk_spi3_user" ,"mout_sclk_spi3_user" , +ENABLE_SCLK_PERIC10 ,15 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI4 ,"sclk_spi4_user" ,"mout_sclk_spi4_user" , + ENABLE_SCLK_PERIC10, 16, CLK_SET_RATE_PARENT, 0), }; static struct samsung_cmu_info peric1_cmu_info __initdata = {
include/dt-bindings/clock/exynos7-clk.h +20 -2
@@ -26,7 +26,13 @@#define CLK_SCLK_UART1 4#define CLK_SCLK_UART2 5#define CLK_SCLK_UART3 6 -#define TOP0_NR_CLK 7 +#define CLK_SCLK_SPI0 7 +#define CLK_SCLK_SPI1 8 +#define CLK_SCLK_SPI2 9 +#define CLK_SCLK_SPI3 10 +#define CLK_SCLK_SPI4 11 +#define CLK_SCLK_SPI5 12 +#define TOP0_NR_CLK 13/* TOP1 */ #define DOUT_ACLK_FSYS1_200 1
@@ -70,7 +76,19 @@#define PCLK_HSI2C6 9#define PCLK_HSI2C7 10#define PCLK_HSI2C8 11 -#define PERIC1_NR_CLK 12 +#define PCLK_SPI0 12 +#define PCLK_SPI1 13 +#define PCLK_SPI2 14 +#define PCLK_SPI3 15 +#define PCLK_SPI4 16 +#define PCLK_SPI5 17 +#define SCLK_SPI0 18 +#define SCLK_SPI1 19 +#define SCLK_SPI2 20 +#define SCLK_SPI3 21 +#define SCLK_SPI4 22 +#define SCLK_SPI5 23 +#define PERIC1_NR_CLK 24/* PERIS */ #define PCLK_CHIPID 1
Signature · 1 line
1.7.4.4
PATCH 2/4 clk: samsung: exynos7: add clocks for SPI block
Hi Padma,
Quoted 181 lines · Padmavathi Venna
Add clock support for 5 SPI channels.
Signed-off-by Padmavathi Venna <[email protected]>--- drivers/clk/samsung/clk-exynos7.c | 73 +++++++++++++++++++++++++++++++ include/dt-bindings/clock/exynos7-clk.h | 22 ++++++++- 2 files changed, 93 insertions(+), 2 deletions(-)drivers/clk/samsung/clk-exynos7.c +73
-0@@ -166,9 +166,15 @@ CLK_OF_DECLARE(exynos7_clk_topc, "samsung,exynos7-clock-topc",#define MUX_SEL_TOP00 0x0200#define MUX_SEL_TOP01 0x0204#define MUX_SEL_TOP03 0x020C +#define MUX_SEL_TOP0_PERIC1 0x0234 +#define MUX_SEL_TOP0_PERIC2 0x0238#define MUX_SEL_TOP0_PERIC3 0x023C#define DIV_TOP03 0x060C +#define DIV_TOP0_PERIC1 0x0634 +#define DIV_TOP0_PERIC2 0x0638#define DIV_TOP0_PERIC3 0x063C +#define ENABLE_SCLK_TOP0_PERIC1 0x0A34 +#define ENABLE_SCLK_TOP0_PERIC2 0x0A38#define ENABLE_SCLK_TOP0_PERIC3 0x0A3C/* List of parent clocks for Muxes in CMU_TOP0 */ @@ -194,9 +200,15 @@ static unsigned long top0_clk_regs[] __initdata = {MUX_SEL_TOP00 ,MUX_SEL_TOP01 ,MUX_SEL_TOP03 , +MUX_SEL_TOP0_PERIC1 , +MUX_SEL_TOP0_PERIC2 ,MUX_SEL_TOP0_PERIC3 ,DIV_TOP03 , +DIV_TOP0_PERIC1 , +DIV_TOP0_PERIC2 ,DIV_TOP0_PERIC3 , +ENABLE_SCLK_TOP0_PERIC1 , +ENABLE_SCLK_TOP0_PERIC2 , ENABLE_SCLK_TOP0_PERIC3, };@@ -218,10 +230,16 @@ static struct samsung_mux_clock top0_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66" , mout_top0_group1,MUX_SEL_TOP03 ,12 ,2 ),MUX (0 ,"mout_aclk_peric0_66" , mout_top0_group1,MUX_SEL_TOP03 ,20 ,2 ), +MUX (0 ,"mout_sclk_spi1" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,8 ,2 ), +MUX (0 ,"mout_sclk_spi0" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,20 ,2 ), + +MUX (0 ,"mout_sclk_spi3" , mout_top0_group1,MUX_SEL_TOP0_PERIC2 ,8 ,2 ), +MUX (0 ,"mout_sclk_spi2" , mout_top0_group1,MUX_SEL_TOP0_PERIC2 ,20 ,2 ),MUX (0 ,"mout_sclk_uart3" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,4 ,2 ),MUX (0 ,"mout_sclk_uart2" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,8 ,2 ),MUX (0 ,"mout_sclk_uart1" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,12 ,2 ),MUX (0 ,"mout_sclk_uart0" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,16 ,2 ), + MUX(0, "mout_sclk_spi4", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 20, 2), }; static struct samsung_div_clock top0_div_clks[] __initdata = {@@ -230,13 +248,29 @@ static struct samsung_div_clock top0_div_clks[] __initdata = { DIV(DOUT_ACLK_PERIC0, "dout_aclk_peric0_66", "mout_aclk_peric0_66", DIV_TOP03, 20, 6), + DIV(0, "dout_sclk_spi1", "mout_sclk_spi1", DIV_TOP0_PERIC1, 8, 12), + DIV(0, "dout_sclk_spi0", "mout_sclk_spi0", DIV_TOP0_PERIC1, 20, 12), + + DIV(0, "dout_sclk_spi3", "mout_sclk_spi3", DIV_TOP0_PERIC2, 8, 12), + DIV(0, "dout_sclk_spi2", "mout_sclk_spi2", DIV_TOP0_PERIC2, 20, 12), + DIV(0, "dout_sclk_uart3", "mout_sclk_uart3", DIV_TOP0_PERIC3, 4, 4), DIV(0, "dout_sclk_uart2", "mout_sclk_uart2", DIV_TOP0_PERIC3, 8, 4), DIV(0, "dout_sclk_uart1", "mout_sclk_uart1", DIV_TOP0_PERIC3, 12, 4), DIV(0, "dout_sclk_uart0", "mout_sclk_uart0", DIV_TOP0_PERIC3, 16, 4), + DIV(0, "dout_sclk_spi4", "mout_sclk_spi4", DIV_TOP0_PERIC3, 20, 12), };static struct samsung_gate_clock top0_gate_clks[]__initdata = { +GATE (CLK_SCLK_SPI1 ,"sclk_spi1" ,"dout_sclk_spi1" , +ENABLE_SCLK_TOP0_PERIC1 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI0 ,"sclk_spi0" ,"dout_sclk_spi0" , +ENABLE_SCLK_TOP0_PERIC1 ,20 ,CLK_SET_RATE_PARENT ,0 ), + +GATE (CLK_SCLK_SPI3 ,"sclk_spi3" ,"dout_sclk_spi3" , +ENABLE_SCLK_TOP0_PERIC2 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI2 ,"sclk_spi2" ,"dout_sclk_spi2" , +ENABLE_SCLK_TOP0_PERIC2 ,20 ,CLK_SET_RATE_PARENT ,0 ),GATE (CLK_SCLK_UART3 ,"sclk_uart3" ,"dout_sclk_uart3" ,ENABLE_SCLK_TOP0_PERIC3 ,4 ,0 ,0 ), GATE(CLK_SCLK_UART2, "sclk_uart2", "dout_sclk_uart2",@@ -245,6 +279,8 @@ static struct samsung_gate_clock top0_gate_clks[] __initdata = { ENABLE_SCLK_TOP0_PERIC3, 12, 0, 0),GATE (CLK_SCLK_UART0 ,"sclk_uart0" ,"dout_sclk_uart0" ,ENABLE_SCLK_TOP0_PERIC3 ,16 ,0 ,0 ), +GATE (CLK_SCLK_SPI4 ,"sclk_spi4" ,"dout_sclk_spi4" , + ENABLE_SCLK_TOP0_PERIC3, 20, CLK_SET_RATE_PARENT, 0), }; static struct samsung_fixed_factor_clock top0_fixed_factor_clks[] __initdata = {@@ -520,6 +556,7 @@ static void __init exynos7_clk_peric0_init(struct device_node *np)/* Register Offset definitions for CMU_PERIC1 (0x14C80000) */ #define MUX_SEL_PERIC10 0x0200#define MUX_SEL_PERIC11 0x0204 +#define MUX_SEL_PERIC12 0x0208#define ENABLE_PCLK_PERIC1 0x0900#define ENABLE_SCLK_PERIC10 0x0A00@@ -531,10 +568,16 @@ PNAME(mout_aclk_peric1_66_p) = { "fin_pll", "dout_aclk_peric1_66" };PNAME (mout_sclk_uart1_p) = {"fin_pll" ,"sclk_uart1" };PNAME (mout_sclk_uart2_p) = {"fin_pll" ,"sclk_uart2" };PNAME (mout_sclk_uart3_p) = {"fin_pll" ,"sclk_uart3" }; +PNAME (mout_sclk_spi0_p) = {"fin_pll" ,"sclk_spi0" }; +PNAME (mout_sclk_spi1_p) = {"fin_pll" ,"sclk_spi1" }; +PNAME (mout_sclk_spi2_p) = {"fin_pll" ,"sclk_spi2" }; +PNAME (mout_sclk_spi3_p) = {"fin_pll" ,"sclk_spi3" }; +PNAME (mout_sclk_spi4_p) = {"fin_pll" ,"sclk_spi4" };static unsigned long peric1_clk_regs[]__initdata = {MUX_SEL_PERIC10 ,MUX_SEL_PERIC11 , +MUX_SEL_PERIC12 ,ENABLE_PCLK_PERIC1 ,ENABLE_SCLK_PERIC10 , };@@ -543,6 +586,16 @@ static struct samsung_mux_clock peric1_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66_user" , mout_aclk_peric1_66_p,MUX_SEL_PERIC10 ,0 ,1 ), +MUX_F (0 ,"mout_sclk_spi0_user" , mout_sclk_spi0_p, +MUX_SEL_PERIC11 ,0 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi1_user" , mout_sclk_spi1_p, +MUX_SEL_PERIC11 ,4 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi2_user" , mout_sclk_spi2_p, +MUX_SEL_PERIC11 ,8 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi3_user" , mout_sclk_spi3_p, +MUX_SEL_PERIC11 ,12 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi4_user" , mout_sclk_spi4_p, +MUX_SEL_PERIC11 ,16 ,1 ,CLK_SET_RATE_PARENT ,0 ),MUX (0 ,"mout_sclk_uart1_user" , mout_sclk_uart1_p,MUX_SEL_PERIC11 ,20 ,1 ), MUX(0, "mout_sclk_uart2_user", mout_sclk_uart2_p,@@ -568,6 +621,16 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_PCLK_PERIC1, 10, 0, 0),GATE (PCLK_UART3 ,"pclk_uart3" ,"mout_aclk_peric1_66_user" ,ENABLE_PCLK_PERIC1 ,11 ,0 ,0 ), +GATE (PCLK_SPI0 ,"pclk_spi0" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,12 ,0 ,0 ), +GATE (PCLK_SPI1 ,"pclk_spi1" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,13 ,0 ,0 ), +GATE (PCLK_SPI2 ,"pclk_spi2" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,14 ,0 ,0 ), +GATE (PCLK_SPI3 ,"pclk_spi3" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,15 ,0 ,0 ), +GATE (PCLK_SPI4 ,"pclk_spi4" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,16 ,0 ,0 ),GATE (SCLK_UART1 ,"sclk_uart1_user" ,"mout_sclk_uart1_user" , ENABLE_SCLK_PERIC10, 9, 0, 0),@@ -575,6 +638,16 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_SCLK_PERIC10, 10, 0, 0),GATE (SCLK_UART3 ,"sclk_uart3_user" ,"mout_sclk_uart3_user" ,ENABLE_SCLK_PERIC10 ,11 ,0 ,0 ), +GATE (SCLK_SPI0 ,"sclk_spi0_user" ,"mout_sclk_spi0_user" , +ENABLE_SCLK_PERIC10 ,12 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI1 ,"sclk_spi1_user" ,"mout_sclk_spi1_user" , +ENABLE_SCLK_PERIC10 ,13 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI2 ,"sclk_spi2_user" ,"mout_sclk_spi2_user" , +ENABLE_SCLK_PERIC10 ,14 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI3 ,"sclk_spi3_user" ,"mout_sclk_spi3_user" , +ENABLE_SCLK_PERIC10 ,15 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI4 ,"sclk_spi4_user" ,"mout_sclk_spi4_user" , + ENABLE_SCLK_PERIC10, 16, CLK_SET_RATE_PARENT, 0), }; static struct samsung_cmu_info peric1_cmu_info __initdata = {include/dt-bindings/clock/exynos7-clk.h +0
-0
include/dt-bindings/clock/exynos7-clk.h line 34
Quoted 10 lines
include/dt-bindings/clock/exynos7-clk.h +6
-1@@ -26,7 +26,13 @@#define CLK_SCLK_UART1 4#define CLK_SCLK_UART2 5#define CLK_SCLK_UART3 6 -#define TOP0_NR_CLK 7 +#define CLK_SCLK_SPI0 7 +#define CLK_SCLK_SPI1 8 +#define CLK_SCLK_SPI2 9 +#define CLK_SCLK_SPI3 10 +#define CLK_SCLK_SPI4 11 +#define CLK_SCLK_SPI5 12
I don't see this CLK_SCLK_SPI5 being used anywhere in the patch. Possibly you didn't want to add it here.
Quoted 11 lines
include/dt-bindings/clock/exynos7-clk.h +3
-1+#define TOP0_NR_CLK 13/* TOP1 */ #define DOUT_ACLK_FSYS1_200 1@@ -70,7 +76,19 @@#define PCLK_HSI2C6 9#define PCLK_HSI2C7 10#define PCLK_HSI2C8 11 -#define PERIC1_NR_CLK 12 +#define PCLK_SPI0 12 +#define PCLK_SPI1 13
include/dt-bindings/clock/exynos7-clk.h line 90
Quoted 10 lines
include/dt-bindings/clock/exynos7-clk.h +10
-0+#define PCLK_SPI2 14 +#define PCLK_SPI3 15 +#define PCLK_SPI4 16 +#define PCLK_SPI5 17 +#define SCLK_SPI0 18 +#define SCLK_SPI1 19 +#define SCLK_SPI2 20 +#define SCLK_SPI3 21 +#define SCLK_SPI4 22 +#define SCLK_SPI5 23
Same here for SCLK_SPI5, unused in the patch.
[snip]
The rest all looks good in this patch. I have also verified from the Exynos7 UM.
Signature · 4 lines
Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India
PATCH 2/4 clk: samsung: exynos7: add clocks for SPI block
Quoted 223 lines · Vivek Gautam
Hi Padma,
Quoted 181 lines · Padmavathi Venna
Add clock support for 5 SPI channels.
Signed-off-by Padmavathi Venna <[email protected]>--- drivers/clk/samsung/clk-exynos7.c | 73 +++++++++++++++++++++++++++++++ include/dt-bindings/clock/exynos7-clk.h | 22 ++++++++- 2 files changed, 93 insertions(+), 2 deletions(-)drivers/clk/samsung/clk-exynos7.c +73
-0@@ -166,9 +166,15 @@ CLK_OF_DECLARE(exynos7_clk_topc, "samsung,exynos7-clock-topc",#define MUX_SEL_TOP00 0x0200#define MUX_SEL_TOP01 0x0204#define MUX_SEL_TOP03 0x020C +#define MUX_SEL_TOP0_PERIC1 0x0234 +#define MUX_SEL_TOP0_PERIC2 0x0238#define MUX_SEL_TOP0_PERIC3 0x023C#define DIV_TOP03 0x060C +#define DIV_TOP0_PERIC1 0x0634 +#define DIV_TOP0_PERIC2 0x0638#define DIV_TOP0_PERIC3 0x063C +#define ENABLE_SCLK_TOP0_PERIC1 0x0A34 +#define ENABLE_SCLK_TOP0_PERIC2 0x0A38#define ENABLE_SCLK_TOP0_PERIC3 0x0A3C/* List of parent clocks for Muxes in CMU_TOP0 */ @@ -194,9 +200,15 @@ static unsigned long top0_clk_regs[] __initdata = {MUX_SEL_TOP00 ,MUX_SEL_TOP01 ,MUX_SEL_TOP03 , +MUX_SEL_TOP0_PERIC1 , +MUX_SEL_TOP0_PERIC2 ,MUX_SEL_TOP0_PERIC3 ,DIV_TOP03 , +DIV_TOP0_PERIC1 , +DIV_TOP0_PERIC2 ,DIV_TOP0_PERIC3 , +ENABLE_SCLK_TOP0_PERIC1 , +ENABLE_SCLK_TOP0_PERIC2 , ENABLE_SCLK_TOP0_PERIC3, };@@ -218,10 +230,16 @@ static struct samsung_mux_clock top0_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66" , mout_top0_group1,MUX_SEL_TOP03 ,12 ,2 ),MUX (0 ,"mout_aclk_peric0_66" , mout_top0_group1,MUX_SEL_TOP03 ,20 ,2 ), +MUX (0 ,"mout_sclk_spi1" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,8 ,2 ), +MUX (0 ,"mout_sclk_spi0" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,20 ,2 ), + +MUX (0 ,"mout_sclk_spi3" , mout_top0_group1,MUX_SEL_TOP0_PERIC2 ,8 ,2 ), +MUX (0 ,"mout_sclk_spi2" , mout_top0_group1,MUX_SEL_TOP0_PERIC2 ,20 ,2 ),MUX (0 ,"mout_sclk_uart3" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,4 ,2 ),MUX (0 ,"mout_sclk_uart2" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,8 ,2 ),MUX (0 ,"mout_sclk_uart1" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,12 ,2 ),MUX (0 ,"mout_sclk_uart0" , mout_top0_group1,MUX_SEL_TOP0_PERIC3 ,16 ,2 ), + MUX(0, "mout_sclk_spi4", mout_top0_group1, MUX_SEL_TOP0_PERIC3, 20, 2), }; static struct samsung_div_clock top0_div_clks[] __initdata = {@@ -230,13 +248,29 @@ static struct samsung_div_clock top0_div_clks[] __initdata = { DIV(DOUT_ACLK_PERIC0, "dout_aclk_peric0_66", "mout_aclk_peric0_66", DIV_TOP03, 20, 6), + DIV(0, "dout_sclk_spi1", "mout_sclk_spi1", DIV_TOP0_PERIC1, 8, 12), + DIV(0, "dout_sclk_spi0", "mout_sclk_spi0", DIV_TOP0_PERIC1, 20, 12), + + DIV(0, "dout_sclk_spi3", "mout_sclk_spi3", DIV_TOP0_PERIC2, 8, 12), + DIV(0, "dout_sclk_spi2", "mout_sclk_spi2", DIV_TOP0_PERIC2, 20, 12), + DIV(0, "dout_sclk_uart3", "mout_sclk_uart3", DIV_TOP0_PERIC3, 4, 4), DIV(0, "dout_sclk_uart2", "mout_sclk_uart2", DIV_TOP0_PERIC3, 8, 4), DIV(0, "dout_sclk_uart1", "mout_sclk_uart1", DIV_TOP0_PERIC3, 12, 4), DIV(0, "dout_sclk_uart0", "mout_sclk_uart0", DIV_TOP0_PERIC3, 16, 4), + DIV(0, "dout_sclk_spi4", "mout_sclk_spi4", DIV_TOP0_PERIC3, 20, 12), };static struct samsung_gate_clock top0_gate_clks[]__initdata = { +GATE (CLK_SCLK_SPI1 ,"sclk_spi1" ,"dout_sclk_spi1" , +ENABLE_SCLK_TOP0_PERIC1 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI0 ,"sclk_spi0" ,"dout_sclk_spi0" , +ENABLE_SCLK_TOP0_PERIC1 ,20 ,CLK_SET_RATE_PARENT ,0 ), + +GATE (CLK_SCLK_SPI3 ,"sclk_spi3" ,"dout_sclk_spi3" , +ENABLE_SCLK_TOP0_PERIC2 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI2 ,"sclk_spi2" ,"dout_sclk_spi2" , +ENABLE_SCLK_TOP0_PERIC2 ,20 ,CLK_SET_RATE_PARENT ,0 ),GATE (CLK_SCLK_UART3 ,"sclk_uart3" ,"dout_sclk_uart3" ,ENABLE_SCLK_TOP0_PERIC3 ,4 ,0 ,0 ), GATE(CLK_SCLK_UART2, "sclk_uart2", "dout_sclk_uart2",@@ -245,6 +279,8 @@ static struct samsung_gate_clock top0_gate_clks[] __initdata = { ENABLE_SCLK_TOP0_PERIC3, 12, 0, 0),GATE (CLK_SCLK_UART0 ,"sclk_uart0" ,"dout_sclk_uart0" ,ENABLE_SCLK_TOP0_PERIC3 ,16 ,0 ,0 ), +GATE (CLK_SCLK_SPI4 ,"sclk_spi4" ,"dout_sclk_spi4" , + ENABLE_SCLK_TOP0_PERIC3, 20, CLK_SET_RATE_PARENT, 0), }; static struct samsung_fixed_factor_clock top0_fixed_factor_clks[] __initdata = {@@ -520,6 +556,7 @@ static void __init exynos7_clk_peric0_init(struct device_node *np)/* Register Offset definitions for CMU_PERIC1 (0x14C80000) */ #define MUX_SEL_PERIC10 0x0200#define MUX_SEL_PERIC11 0x0204 +#define MUX_SEL_PERIC12 0x0208#define ENABLE_PCLK_PERIC1 0x0900#define ENABLE_SCLK_PERIC10 0x0A00@@ -531,10 +568,16 @@ PNAME(mout_aclk_peric1_66_p) = { "fin_pll", "dout_aclk_peric1_66" };PNAME (mout_sclk_uart1_p) = {"fin_pll" ,"sclk_uart1" };PNAME (mout_sclk_uart2_p) = {"fin_pll" ,"sclk_uart2" };PNAME (mout_sclk_uart3_p) = {"fin_pll" ,"sclk_uart3" }; +PNAME (mout_sclk_spi0_p) = {"fin_pll" ,"sclk_spi0" }; +PNAME (mout_sclk_spi1_p) = {"fin_pll" ,"sclk_spi1" }; +PNAME (mout_sclk_spi2_p) = {"fin_pll" ,"sclk_spi2" }; +PNAME (mout_sclk_spi3_p) = {"fin_pll" ,"sclk_spi3" }; +PNAME (mout_sclk_spi4_p) = {"fin_pll" ,"sclk_spi4" };static unsigned long peric1_clk_regs[]__initdata = {MUX_SEL_PERIC10 ,MUX_SEL_PERIC11 , +MUX_SEL_PERIC12 ,ENABLE_PCLK_PERIC1 ,ENABLE_SCLK_PERIC10 , };@@ -543,6 +586,16 @@ static struct samsung_mux_clock peric1_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66_user" , mout_aclk_peric1_66_p,MUX_SEL_PERIC10 ,0 ,1 ), +MUX_F (0 ,"mout_sclk_spi0_user" , mout_sclk_spi0_p, +MUX_SEL_PERIC11 ,0 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi1_user" , mout_sclk_spi1_p, +MUX_SEL_PERIC11 ,4 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi2_user" , mout_sclk_spi2_p, +MUX_SEL_PERIC11 ,8 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi3_user" , mout_sclk_spi3_p, +MUX_SEL_PERIC11 ,12 ,1 ,CLK_SET_RATE_PARENT ,0 ), +MUX_F (0 ,"mout_sclk_spi4_user" , mout_sclk_spi4_p, +MUX_SEL_PERIC11 ,16 ,1 ,CLK_SET_RATE_PARENT ,0 ),MUX (0 ,"mout_sclk_uart1_user" , mout_sclk_uart1_p,MUX_SEL_PERIC11 ,20 ,1 ), MUX(0, "mout_sclk_uart2_user", mout_sclk_uart2_p,@@ -568,6 +621,16 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_PCLK_PERIC1, 10, 0, 0),GATE (PCLK_UART3 ,"pclk_uart3" ,"mout_aclk_peric1_66_user" ,ENABLE_PCLK_PERIC1 ,11 ,0 ,0 ), +GATE (PCLK_SPI0 ,"pclk_spi0" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,12 ,0 ,0 ), +GATE (PCLK_SPI1 ,"pclk_spi1" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,13 ,0 ,0 ), +GATE (PCLK_SPI2 ,"pclk_spi2" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,14 ,0 ,0 ), +GATE (PCLK_SPI3 ,"pclk_spi3" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,15 ,0 ,0 ), +GATE (PCLK_SPI4 ,"pclk_spi4" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,16 ,0 ,0 ),GATE (SCLK_UART1 ,"sclk_uart1_user" ,"mout_sclk_uart1_user" , ENABLE_SCLK_PERIC10, 9, 0, 0),@@ -575,6 +638,16 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_SCLK_PERIC10, 10, 0, 0),GATE (SCLK_UART3 ,"sclk_uart3_user" ,"mout_sclk_uart3_user" ,ENABLE_SCLK_PERIC10 ,11 ,0 ,0 ), +GATE (SCLK_SPI0 ,"sclk_spi0_user" ,"mout_sclk_spi0_user" , +ENABLE_SCLK_PERIC10 ,12 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI1 ,"sclk_spi1_user" ,"mout_sclk_spi1_user" , +ENABLE_SCLK_PERIC10 ,13 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI2 ,"sclk_spi2_user" ,"mout_sclk_spi2_user" , +ENABLE_SCLK_PERIC10 ,14 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI3 ,"sclk_spi3_user" ,"mout_sclk_spi3_user" , +ENABLE_SCLK_PERIC10 ,15 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_SPI4 ,"sclk_spi4_user" ,"mout_sclk_spi4_user" , + ENABLE_SCLK_PERIC10, 16, CLK_SET_RATE_PARENT, 0), }; static struct samsung_cmu_info peric1_cmu_info __initdata = {include/dt-bindings/clock/exynos7-clk.h +0
-0include/dt-bindings/clock/exynos7-clk.h line 34
Quoted 10 lines
include/dt-bindings/clock/exynos7-clk.h +6
-1@@ -26,7 +26,13 @@#define CLK_SCLK_UART1 4#define CLK_SCLK_UART2 5#define CLK_SCLK_UART3 6 -#define TOP0_NR_CLK 7 +#define CLK_SCLK_SPI0 7 +#define CLK_SCLK_SPI1 8 +#define CLK_SCLK_SPI2 9 +#define CLK_SCLK_SPI3 10 +#define CLK_SCLK_SPI4 11 +#define CLK_SCLK_SPI5 12I don't see this
CLK_SCLK_SPI5being used anywhere in the patch. Possibly you didn't want to add it here.Quoted 11 lines
include/dt-bindings/clock/exynos7-clk.h +3
-1+#define TOP0_NR_CLK 13/* TOP1 */ #define DOUT_ACLK_FSYS1_200 1@@ -70,7 +76,19 @@#define PCLK_HSI2C6 9#define PCLK_HSI2C7 10#define PCLK_HSI2C8 11 -#define PERIC1_NR_CLK 12 +#define PCLK_SPI0 12 +#define PCLK_SPI1 13include/dt-bindings/clock/exynos7-clk.h line 90
Quoted 10 lines
include/dt-bindings/clock/exynos7-clk.h +10
-0+#define PCLK_SPI2 14 +#define PCLK_SPI3 15 +#define PCLK_SPI4 16 +#define PCLK_SPI5 17 +#define SCLK_SPI0 18 +#define SCLK_SPI1 19 +#define SCLK_SPI2 20 +#define SCLK_SPI3 21 +#define SCLK_SPI4 22 +#define SCLK_SPI5 23Same here for
SCLK_SPI5, unused in the patch.
Quoted 3 lines
[snip]
The rest all looks good in this patch. I have also verified from the Exynos7 UM.
missed it earlier. You may also want to add update documentation for clock sources
of peric1 block.
Signature · 4 lines
Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India
PATCH 2/4 clk: samsung: exynos7: add clocks for SPI block
Hi ViVek,
Quoted 11 lines · Vivek Gautam
Quoted 9 lines · Vivek Gautam
Hi Padma,
Quoted 4 lines · Padmavathi Venna
Add clock support for 5 SPI channels.
Signed-off-by Padmavathi Venna <[email protected]>---
[snip]
Quoted 1 line
Quoted 1 line
Same here for
SCLK_SPI5, unused in the patch.
ok.
Quoted 9 lines
Quoted 5 lines
[snip]
The rest all looks good in this patch. I have also verified from the Exynos7 UM.
missed it earlier. You may also want to add update documentation for clock sources
of peric1 block.
I will add the required source clks.
Thanks for the review.
Padma
Quoted 13 lines
--
Best Regards
Vivek Gautam
Samsung R&D Institute, Bangalore
India
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 3/4 clk: samsung: exynos7: add clocks for audio block
In reply to Padmavathi VennaAdd required clk support for I2S,PCM amd SPDIF
--- .../devicetree/bindings/clock/exynos7-clock.txt | 6 + drivers/clk/samsung/clk-exynos7.c | 144 +++++++++++++++++++- include/dt-bindings/clock/exynos7-clk.h | 24 +++- 3 files changed, 169 insertions(+), 5 deletions(-)
Documentation/devicetree/bindings/clock/exynos7-clock.txt +6 -0
@@ -34,6 +34,7 @@ Required Properties for Clock Controller: - "samsung,exynos7-clock-peris" - "samsung,exynos7-clock-fsys0" - "samsung,exynos7-clock-fsys1" + - "samsung,exynos7-clock-aud" - reg: physical base address of the controller and the length of memory mapped region.
@@ -53,6 +54,7 @@ Input clocks for top0 clock controller: - dout_sclk_bus1_pll - dout_sclk_cc_pll - dout_sclk_mfc_pll + - dout_sclk_aud_pll Input clocks for top1 clock controller: - fin_pll
@@ -91,3 +93,7 @@ Input clocks for fsys1 clock controller: - dout_aclk_fsys1_200 - dout_sclk_mmc0 - dout_sclk_mmc1 + +Input clocks for aud clock controller: + - fin_pll + - fout_aud_pll
drivers/clk/samsung/clk-exynos7.c +142 -2
244 lines not on this page · raw message
include/dt-bindings/clock/exynos7-clk.h +21 -3
@@ -17,7 +17,9 @@#define DOUT_SCLK_CC_PLL 4#define DOUT_SCLK_MFC_PLL 5#define DOUT_ACLK_CCORE_133 6 -#define TOPC_NR_CLK 7 +#define DOUT_SCLK_AUD_PLL 7 +#define FOUT_AUD_PLL 8 +#define TOPC_NR_CLK 9/* TOP0 */ #define DOUT_ACLK_PERIC1 1
@@ -32,7 +34,10 @@#define CLK_SCLK_SPI3 10#define CLK_SCLK_SPI4 11#define CLK_SCLK_SPI5 12 -#define TOP0_NR_CLK 13 +#define CLK_SCLK_SPDIF 13 +#define CLK_SCLK_PCM1 14 +#define CLK_SCLK_I2S1 15 +#define TOP0_NR_CLK 16/* TOP1 */ #define DOUT_ACLK_FSYS1_200 1
@@ -88,7 +93,13 @@#define SCLK_SPI3 21#define SCLK_SPI4 22#define SCLK_SPI5 23 -#define PERIC1_NR_CLK 24 +#define PCLK_I2S1 24 +#define PCLK_PCM1 25 +#define PCLK_SPDIF 26 +#define SCLK_I2S1 27 +#define SCLK_PCM1 28 +#define SCLK_SPDIF 29 +#define PERIC1_NR_CLK 30/* PERIS */ #define PCLK_CHIPID 1
@@ -116,4 +127,11 @@#define ACLK_MMC0 2#define FSYS1_NR_CLK 3 +/* AUD */ +#define SCLK_I2S 1 +#define SCLK_PCM 2 +#define PCLK_I2S 3 +#define PCLK_PCM 4 +#define ACLK_ADMA 5 +#define AUD_NR_CLK 6#endif /* _DT_BINDINGS_CLOCK_EXYNOS7_H */
Signature · 1 line
1.7.4.4
Sylwester Nawrocki
maintainerPATCH 3/4 clk: samsung: exynos7: add clocks for audio block
Hi,
Quoted 1 line · Padmavathi Venna
Add required clk support for I2S,PCM amd SPDIF
There is a non-trivial conflict with the MSCL CMU patch, could you please resend rebased onto my exynos7 branch:
git://linuxtv.org/snawrocki/samsung.git for-v3.20/clk/exynos7 ?
Is exynos7420 documentation applicable to this ? Would be nice to have someone else who has access to the SoC documentation replied with a Reviewed-by tag.
Signature · 2 lines
Thanks, Sylwester
PATCH 3/4 clk: samsung: exynos7: add clocks for audio block
Hi Sylwester,
Quoted 7 lines · Sylwester Nawrocki
Hi,
Quoted 1 line · Padmavathi Venna
Add required clk support for I2S,PCM amd SPDIF
There is a non-trivial conflict with the MSCL CMU patch, could you please resend rebased onto my exynos7 branch:
Ok. I willl rebase the patch on your tree.
Quoted 4 lines
git://linuxtv.org/snawrocki/samsung.gitfor-v3.20/clk/exynos7 ?Is exynos7420 documentation applicable to this ?
This is applicable only for exynos7.
Quoted 6 lines
Would be nice to have someone else who has access to the SoC documentation replied with a Reviewed-by tag.
--
Thanks,
Sylwester
Thanks
Padma
Quoted 6 lines
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
PATCH 3/4 clk: samsung: exynos7: add clocks for audio block
In reply to Padmavathi VennaHi Padma,
Quoted 4 lines · Padmavathi Venna
Add required clk support for I2S,PCM amd SPDIF
Signed-off-by Padmavathi Venna <[email protected]>---
verified from Exynos7 datasheet. The patch looks good.
Quoted 96 lines
.../devicetree/bindings/clock/exynos7-clock.txt | 6 + drivers/clk/samsung/clk-exynos7.c | 144 +++++++++++++++++++- include/dt-bindings/clock/exynos7-clk.h | 24 +++- 3 files changed, 169 insertions(+), 5 deletions(-)Documentation/devicetree/bindings/clock/exynos7-clock.txt +6
-0@@ -34,6 +34,7 @@ Required Properties for Clock Controller: - "samsung,exynos7-clock-peris" - "samsung,exynos7-clock-fsys0" - "samsung,exynos7-clock-fsys1" + - "samsung,exynos7-clock-aud" - reg: physical base address of the controller and the length of memory mapped region.@@ -53,6 +54,7 @@ Input clocks for top0 clock controller: - dout_sclk_bus1_pll - dout_sclk_cc_pll - dout_sclk_mfc_pll + - dout_sclk_aud_pll Input clocks for top1 clock controller: - fin_pll@@ -91,3 +93,7 @@ Input clocks for fsys1 clock controller: - dout_aclk_fsys1_200 - dout_sclk_mmc0 - dout_sclk_mmc1 + +Input clocks for aud clock controller: + - fin_pll + - fout_aud_plldrivers/clk/samsung/clk-exynos7.c +14
-2@@ -45,6 +45,7 @@ static struct samsung_fixed_factor_clock topc_fixed_factor_clks[] __initdata = { };/* List of parent clocks for Muxes in CMU_TOPC */ +PNAME (mout_aud_pll_ctrl_p) = {"fin_pll" ,"fout_aud_pll" };PNAME (mout_bus0_pll_ctrl_p) = {"fin_pll" ,"fout_bus0_pll" };PNAME (mout_bus1_pll_ctrl_p) = {"fin_pll" ,"fout_bus1_pll" };PNAME (mout_cc_pll_ctrl_p) = {"fin_pll" ,"fout_cc_pll" };@@ -104,6 +105,7 @@ static struct samsung_mux_clock topc_mux_clks[] __initdata = {MUX (0 ,"mout_sclk_bus0_pll_out" , mout_sclk_bus0_pll_out_p,MUX_SEL_TOPC1 ,16 ,1 ), +MUX (0 ,"mout_aud_pll_ctrl" , mout_aud_pll_ctrl_p,MUX_SEL_TOPC1 ,0 ,1 ), MUX(0, "mout_aclk_ccore_133", mout_topc_group2, MUX_SEL_TOPC2, 4, 2),@@ -125,6 +127,13 @@ static struct samsung_div_clock topc_div_clks[] __initdata = { DIV_TOPC3, 12, 3), DIV(DOUT_SCLK_MFC_PLL, "dout_sclk_mfc_pll", "mout_mfc_pll_ctrl", DIV_TOPC3, 16, 3), + DIV(DOUT_SCLK_AUD_PLL, "dout_sclk_aud_pll", "mout_aud_pll_ctrl", + DIV_TOPC3, 28, 3), +}; + +static struct samsung_pll_rate_table pll1460x_24mhz_tbl[]__initdata = { +PLL_36XX_RATE (491520000 ,20 ,1 ,0 ,31457 ), + {}, };static struct samsung_pll_clock topc_pll_clks[]__initdata = {@@ -136,8 +145,8 @@ static struct samsung_pll_clock topc_pll_clks[] __initdata = { BUS1_DPLL_CON0, NULL),PLL (pll_1452x,0 ,"fout_mfc_pll" ,"fin_pll" ,MFC_PLL_LOCK ,MFC_PLL_CON0 ,NULL ), - PLL(pll_1460x, 0, "fout_aud_pll", "fin_pll", AUD_PLL_LOCK, - AUD_PLL_CON0, NULL), +PLL (pll_1460x,FOUT_AUD_PLL ,"fout_aud_pll" ,"fin_pll" ,AUD_PLL_LOCK , + AUD_PLL_CON0, pll1460x_24mhz_tbl), }; static struct samsung_cmu_info topc_cmu_info __initdata = {@@ -166,13 +175,16 @@ CLK_OF_DECLARE(exynos7_clk_topc, "samsung,exynos7-clock-topc",#define MUX_SEL_TOP00 0x0200#define MUX_SEL_TOP01 0x0204#define MUX_SEL_TOP03 0x020C +#define MUX_SEL_TOP0_PERIC0 0x0230#define MUX_SEL_TOP0_PERIC1 0x0234#define MUX_SEL_TOP0_PERIC2 0x0238#define MUX_SEL_TOP0_PERIC3 0x023C#define DIV_TOP03 0x060C +#define DIV_TOP0_PERIC0 0x0630#define DIV_TOP0_PERIC1 0x0634#define DIV_TOP0_PERIC2 0x0638#define DIV_TOP0_PERIC3 0x063C +#define ENABLE_SCLK_TOP0_PERIC0 0x0A30#define ENABLE_SCLK_TOP0_PERIC1 0x0A34#define ENABLE_SCLK_TOP0_PERIC2 0x0A38#define ENABLE_SCLK_TOP0_PERIC3 0x0A3C
drivers/clk/samsung/clk-exynos7.c PNAME(mout_bus0_pll_p) = { "fin_pll", "dout_sclk_bus0_pll" }; · line 198
Quoted 5 lines
drivers/clk/samsung/clk-exynos7.c +2
-0@@ -182,6 +194,8 @@ PNAME(mout_bus0_pll_p) = { "fin_pll", "dout_sclk_bus0_pll" };PNAME (mout_bus1_pll_p) = {"fin_pll" ,"dout_sclk_bus1_pll" };PNAME (mout_cc_pll_p) = {"fin_pll" ,"dout_sclk_cc_pll" };PNAME (mout_mfc_pll_p) = {"fin_pll" ,"dout_sclk_mfc_pll" }; +PNAME (mout_aud_pll_p) = {"fin_pll" ,"dout_sclk_aud_pll" }; +
nit: unnecessary additional line.
Quoted 254 lines
drivers/clk/samsung/clk-exynos7.c +126
-0PNAME (mout_top0_half_bus0_pll_p) = {"mout_top0_bus0_pll" ,"ffac_top0_bus0_pll_div2" };@@ -195,24 +209,34 @@ PNAME(mout_top0_half_mfc_pll_p) = {"mout_top0_mfc_pll",PNAME (mout_top0_group1) = {"mout_top0_half_bus0_pll" ,"mout_top0_half_bus1_pll" ,"mout_top0_half_cc_pll" ,"mout_top0_half_mfc_pll" }; +PNAME (mout_top0_group3) = {"ioclk_audiocdclk0" , +"ioclk_audiocdclk1" ,"ioclk_spdif_extclk" , +"mout_top0_aud_pll" ,"mout_top0_half_bus0_pll" , +"mout_top0_half_bus1_pll" }; +PNAME (mout_top0_group4) = {"ioclk_audiocdclk1" ,"mout_top0_aud_pll" , +"mout_top0_half_bus0_pll" ,"mout_top0_half_bus1_pll" };static unsigned long top0_clk_regs[]__initdata = {MUX_SEL_TOP00 ,MUX_SEL_TOP01 ,MUX_SEL_TOP03 , +MUX_SEL_TOP0_PERIC0 ,MUX_SEL_TOP0_PERIC1 ,MUX_SEL_TOP0_PERIC2 ,MUX_SEL_TOP0_PERIC3 ,DIV_TOP03 , +DIV_TOP0_PERIC0 ,DIV_TOP0_PERIC1 ,DIV_TOP0_PERIC2 ,DIV_TOP0_PERIC3 , +ENABLE_SCLK_TOP0_PERIC0 ,ENABLE_SCLK_TOP0_PERIC1 ,ENABLE_SCLK_TOP0_PERIC2 ,ENABLE_SCLK_TOP0_PERIC3 , };static struct samsung_mux_clock top0_mux_clks[]__initdata = { +MUX (0 ,"mout_top0_aud_pll" , mout_aud_pll_p,MUX_SEL_TOP00 ,0 ,1 ),MUX (0 ,"mout_top0_mfc_pll" , mout_mfc_pll_p,MUX_SEL_TOP00 ,4 ,1 ),MUX (0 ,"mout_top0_cc_pll" , mout_cc_pll_p,MUX_SEL_TOP00 ,8 ,1 ),MUX (0 ,"mout_top0_bus1_pll" , mout_bus1_pll_p,MUX_SEL_TOP00 ,12 ,1 ),@@ -230,6 +254,10 @@ static struct samsung_mux_clock top0_mux_clks[] __initdata = {MUX (0 ,"mout_aclk_peric1_66" , mout_top0_group1,MUX_SEL_TOP03 ,12 ,2 ),MUX (0 ,"mout_aclk_peric0_66" , mout_top0_group1,MUX_SEL_TOP03 ,20 ,2 ), +MUX (0 ,"mout_sclk_spdif" , mout_top0_group3,MUX_SEL_TOP0_PERIC0 ,4 ,3 ), +MUX (0 ,"mout_sclk_pcm1" , mout_top0_group4,MUX_SEL_TOP0_PERIC0 ,8 ,2 ), +MUX (0 ,"mout_sclk_i2s1" , mout_top0_group4,MUX_SEL_TOP0_PERIC0 ,20 ,2 ), +MUX (0 ,"mout_sclk_spi1" , mout_top0_group1,MUX_SEL_TOP0_PERIC1 ,8 ,2 ), MUX(0, "mout_sclk_spi0", mout_top0_group1, MUX_SEL_TOP0_PERIC1, 20, 2),@@ -248,6 +276,10 @@ static struct samsung_div_clock top0_div_clks[] __initdata = {DIV (DOUT_ACLK_PERIC0 ,"dout_aclk_peric0_66" ,"mout_aclk_peric0_66" ,DIV_TOP03 ,20 ,6 ), +DIV (0 ,"dout_sclk_spdif" ,"mout_sclk_spdif" ,DIV_TOP0_PERIC0 ,4 ,4 ), +DIV (0 ,"dout_sclk_pcm1" ,"mout_sclk_pcm1" ,DIV_TOP0_PERIC0 ,8 ,12 ), +DIV (0 ,"dout_sclk_i2s1" ,"mout_sclk_i2s1" ,DIV_TOP0_PERIC0 ,20 ,10 ), +DIV (0 ,"dout_sclk_spi1" ,"mout_sclk_spi1" ,DIV_TOP0_PERIC1 ,8 ,12 ), DIV(0, "dout_sclk_spi0", "mout_sclk_spi0", DIV_TOP0_PERIC1, 20, 12),@@ -262,6 +294,13 @@ static struct samsung_div_clock top0_div_clks[] __initdata = { };static struct samsung_gate_clock top0_gate_clks[]__initdata = { +GATE (CLK_SCLK_SPDIF ,"sclk_spdif" ,"dout_sclk_spdif" , +ENABLE_SCLK_TOP0_PERIC0 ,4 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_PCM1 ,"sclk_pcm1" ,"dout_sclk_pcm1" , +ENABLE_SCLK_TOP0_PERIC0 ,8 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_I2S1 ,"sclk_i2s1" ,"dout_sclk_i2s1" , +ENABLE_SCLK_TOP0_PERIC0 ,20 ,CLK_SET_RATE_PARENT ,0 ), +GATE (CLK_SCLK_SPI1 ,"sclk_spi1" ,"dout_sclk_spi1" ,ENABLE_SCLK_TOP0_PERIC1 ,8 ,CLK_SET_RATE_PARENT ,0 ), GATE(CLK_SCLK_SPI0, "sclk_spi0", "dout_sclk_spi0",@@ -631,6 +670,12 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_PCLK_PERIC1, 15, 0, 0),GATE (PCLK_SPI4 ,"pclk_spi4" ,"mout_aclk_peric1_66_user" ,ENABLE_PCLK_PERIC1 ,16 ,0 ,0 ), +GATE (PCLK_I2S1 ,"pclk_i2s1" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,17 ,CLK_SET_RATE_PARENT ,0 ), +GATE (PCLK_PCM1 ,"pclk_pcm1" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,18 ,0 ,0 ), +GATE (PCLK_SPDIF ,"pclk_spdif" ,"mout_aclk_peric1_66_user" , +ENABLE_PCLK_PERIC1 ,19 ,0 ,0 ),GATE (SCLK_UART1 ,"sclk_uart1_user" ,"mout_sclk_uart1_user" , ENABLE_SCLK_PERIC10, 9, 0, 0),@@ -648,6 +693,12 @@ static struct samsung_gate_clock peric1_gate_clks[] __initdata = { ENABLE_SCLK_PERIC10, 15, CLK_SET_RATE_PARENT, 0),GATE (SCLK_SPI4 ,"sclk_spi4_user" ,"mout_sclk_spi4_user" ,ENABLE_SCLK_PERIC10 ,16 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_I2S1 ,"sclk_i2s1_user" ,"dout_sclk_i2s1" , +ENABLE_SCLK_PERIC10 ,17 ,0 ,0 ), +GATE (SCLK_PCM1 ,"sclk_pcm1_user" ,"dout_sclk_pcm1" , +ENABLE_SCLK_PERIC10 ,18 ,0 ,0 ), +GATE (SCLK_SPDIF ,"sclk_spdif_user" ,"dout_sclk_spdif" , + ENABLE_SCLK_PERIC10, 19, 0, 0), }; static struct samsung_cmu_info peric1_cmu_info __initdata = {@@ -882,3 +933,92 @@ static void __init exynos7_clk_fsys1_init(struct device_node *np)CLK_OF_DECLARE (exynos7_clk_fsys1,"samsung,exynos7-clock-fsys1" , exynos7_clk_fsys1_init); + +/* Register Offset definitions for CMU_AUD (0x114C0000) */ +#define MUX_SEL_AUD 0x0200 +#define DIV_AUD0 0x0600 +#define DIV_AUD1 0x0604 +#define ENABLE_ACLK_AUD 0x0800 +#define ENABLE_PCLK_AUD 0x0900 +#define ENABLE_SCLK_AUD 0x0A00 + +/* +* List of parent clocks for Muxes in CMU_AUD +*/ +PNAME (mout_aud_pll_user_p) = {"fin_pll" ,"fout_aud_pll" }; +PNAME (mout_aud_group_p) = {"dout_aud_cdclk" ,"ioclk_audiocdclk0" }; + +static unsigned long aud_clk_regs[]__initdata = { +MUX_SEL_AUD , +DIV_AUD0 , +DIV_AUD1 , +ENABLE_ACLK_AUD , +ENABLE_PCLK_AUD , +ENABLE_SCLK_AUD , +}; + +static struct samsung_mux_clock aud_mux_clks[]__initdata = { +MUX (0 ,"mout_sclk_i2s" , mout_aud_group_p,MUX_SEL_AUD ,12 ,1 ), +MUX (0 ,"mout_sclk_pcm" , mout_aud_group_p,MUX_SEL_AUD ,16 ,1 ), +MUX (0 ,"mout_aud_pll_user" , mout_aud_pll_user_p,MUX_SEL_AUD ,20 ,1 ), +}; + +static struct samsung_div_clock aud_div_clks[]__initdata = { +DIV (0 ,"dout_aud_ca5" ,"mout_aud_pll_user" ,DIV_AUD0 ,0 ,4 ), +DIV (0 ,"dout_aclk_aud" ,"dout_aud_ca5" ,DIV_AUD0 ,4 ,4 ), +DIV (0 ,"dout_aud_pclk_dbg" ,"dout_aud_ca5" ,DIV_AUD0 ,8 ,4 ), + +DIV (0 ,"dout_sclk_i2s" ,"mout_sclk_i2s" ,DIV_AUD1 ,0 ,4 ), +DIV (0 ,"dout_sclk_pcm" ,"mout_sclk_pcm" ,DIV_AUD1 ,4 ,8 ), +DIV (0 ,"dout_sclk_uart" ,"dout_aud_cdclk" ,DIV_AUD1 ,12 ,4 ), +DIV (0 ,"dout_sclk_slimbus" ,"dout_aud_cdclk" ,DIV_AUD1 ,16 ,5 ), +DIV (0 ,"dout_aud_cdclk" ,"mout_aud_pll_user" ,DIV_AUD1 ,24 ,4 ), +}; + +static struct samsung_gate_clock aud_gate_clks[]__initdata = { +GATE (SCLK_PCM ,"sclk_pcm" ,"dout_sclk_pcm" , +ENABLE_SCLK_AUD ,27 ,CLK_SET_RATE_PARENT ,0 ), +GATE (SCLK_I2S ,"sclk_i2s" ,"dout_sclk_i2s" , +ENABLE_SCLK_AUD ,28 ,CLK_SET_RATE_PARENT ,0 ), +GATE (0 ,"sclk_uart" ,"dout_sclk_uart" ,ENABLE_SCLK_AUD ,29 ,0 ,0 ), +GATE (0 ,"sclk_slimbus" ,"dout_sclk_slimbus" , +ENABLE_SCLK_AUD ,30 ,0 ,0 ), + +GATE (0 ,"pclk_dbg_aud" ,"dout_aud_pclk_dbg" ,ENABLE_PCLK_AUD ,19 ,0 ,0 ), +GATE (0 ,"pclk_gpio_aud" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,20 ,0 ,0 ), +GATE (0 ,"pclk_wdt1" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,22 ,0 ,0 ), +GATE (0 ,"pclk_wdt0" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,23 ,0 ,0 ), +GATE (0 ,"pclk_slimbus" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,24 ,0 ,0 ), +GATE (0 ,"pclk_uart" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,25 ,0 ,0 ), +GATE (PCLK_PCM ,"pclk_pcm" ,"dout_aclk_aud" , +ENABLE_PCLK_AUD ,26 ,CLK_SET_RATE_PARENT ,0 ), +GATE (PCLK_I2S ,"pclk_i2s" ,"dout_aclk_aud" , +ENABLE_PCLK_AUD ,27 ,CLK_SET_RATE_PARENT ,0 ), +GATE (0 ,"pclk_timer" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,28 ,0 ,0 ), +GATE (0 ,"pclk_smmu_aud" ,"dout_aclk_aud" ,ENABLE_PCLK_AUD ,31 ,0 ,0 ), + +GATE (0 ,"aclk_smmu_aud" ,"dout_aclk_aud" ,ENABLE_ACLK_AUD ,27 ,0 ,0 ), +GATE (0 ,"aclk_acel_lh_async_si_top" ,"dout_aclk_aud" , +ENABLE_ACLK_AUD ,28 ,0 ,0 ), +GATE (ACLK_ADMA ,"aclk_dmac" ,"dout_aclk_aud" ,ENABLE_ACLK_AUD ,31 ,0 ,0 ), +}; + +static struct samsung_cmu_info aud_cmu_info__initdata = { + .mux_clks = aud_mux_clks, + .nr_mux_clks =ARRAY_SIZE (aud_mux_clks), + .div_clks = aud_div_clks, + .nr_div_clks =ARRAY_SIZE (aud_div_clks), + .gate_clks = aud_gate_clks, + .nr_gate_clks =ARRAY_SIZE (aud_gate_clks), + .nr_clk_ids =AUD_NR_CLK , + .clk_regs = aud_clk_regs, + .nr_clk_regs =ARRAY_SIZE (aud_clk_regs), +}; + +static void __init exynos7_clk_aud_init (struct device_node *np) +{ +samsung_cmu_register_one (np, &aud_cmu_info); +} + +CLK_OF_DECLARE (exynos7_clk_aud,"samsung,exynos7-clock-aud" , + exynos7_clk_aud_init);include/dt-bindings/clock/exynos7-clk.h +21
-4@@ -17,7 +17,9 @@#define DOUT_SCLK_CC_PLL 4#define DOUT_SCLK_MFC_PLL 5#define DOUT_ACLK_CCORE_133 6 -#define TOPC_NR_CLK 7 +#define DOUT_SCLK_AUD_PLL 7 +#define FOUT_AUD_PLL 8 +#define TOPC_NR_CLK 9/* TOP0 */ #define DOUT_ACLK_PERIC1 1@@ -32,7 +34,10 @@#define CLK_SCLK_SPI3 10#define CLK_SCLK_SPI4 11#define CLK_SCLK_SPI5 12 -#define TOP0_NR_CLK 13 +#define CLK_SCLK_SPDIF 13 +#define CLK_SCLK_PCM1 14 +#define CLK_SCLK_I2S1 15 +#define TOP0_NR_CLK 16/* TOP1 */ #define DOUT_ACLK_FSYS1_200 1@@ -88,7 +93,13 @@#define SCLK_SPI3 21#define SCLK_SPI4 22#define SCLK_SPI5 23 -#define PERIC1_NR_CLK 24 +#define PCLK_I2S1 24 +#define PCLK_PCM1 25 +#define PCLK_SPDIF 26 +#define SCLK_I2S1 27 +#define SCLK_PCM1 28 +#define SCLK_SPDIF 29 +#define PERIC1_NR_CLK 30/* PERIS */ #define PCLK_CHIPID 1@@ -116,4 +127,11 @@#define ACLK_MMC0 2#define FSYS1_NR_CLK 3 +/* AUD */ +#define SCLK_I2S 1 +#define SCLK_PCM 2 +#define PCLK_I2S 3 +#define PCLK_PCM 4 +#define ACLK_ADMA 5 +#define AUD_NR_CLK 6#endif /* _DT_BINDINGS_CLOCK_EXYNOS7_H */ --1.7.4.4
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in the body of a message to majordomo at vger.kernel.org
More majordomo info at http://vger.kernel.org/majordomo-info.html
Signature · 4 lines
Best Regards Vivek Gautam Samsung R&D Institute, Bangalore India
PATCH 3/4 clk: samsung: exynos7: add clocks for audio block
Hi Vivek,
Quoted 5 lines · Vivek Gautam
Hi Padma,
On Fri, Dec 19, 2014 at 6:53 PM, Padmavathi Venna <[email protected]> wrote:
Quoted 8 lines
Quoted 4 lines
Add required clk support for I2S,PCM amd SPDIF
Signed-off-by Padmavathi Venna <[email protected]>---
verified from Exynos7 datasheet. The patch looks good.
Reviewed-by Vivek Gautam <[email protected]>
Thanks for the review.
Hi Sylwester,
I posted patches after re-basing on your tree and after incorporating all comments from Vivek.
Below is the link
http://www.spinics.net/lists/linux-samsung-soc/msg40992.html
Can you pick the patches?
Thanks
Padma
Sylwester Nawrocki
maintainerPATCH 3/4 clk: samsung: exynos7: add clocks for audio block
Hi,
Quoted 6 lines · Padma Venkat
I posted patches after re-basing on your tree and after incorporating all comments from Vivek.
Below is the link
http://www.spinics.net/lists/linux-samsung-soc/msg40992.htmlCan you pick the patches?
Sure, I'm not forgetting it. I've updated the exynos7 branch with your v2 patches.
Thanks!
Sylwester
PATCH 4/4 arm64: dts: Add PDMA and SPI device tree node for exynos7
In reply to Padmavathi VennaAdd PDMA0,PDMA1 and 5 SPI dt nodes for Exynos7.
--- arch/arm64/boot/dts/exynos/exynos7.dtsi | 113 +++++++++++++++++++++++++++++++ 1 files changed, 113 insertions(+), 0 deletions(-)
arch/arm64/boot/dts/exynos/exynos7.dtsi +113 -0
@@ -28,6 +28,9 @@ pinctrl7 = &pinctrl_fsys1; pinctrl8 = &pinctrl_bus1; pinctrl9 = &pinctrl_aud; + spi0 = &spi_0; + spi1 = &spi_1; + spi2 = &spi_2; }; cpus {
@@ -573,6 +576,116 @@ samsung,pmu-syscon = <&pmu_system_controller>; #phy-cells = <1>; }; + + amba { + #address-cells = <1>; + #size-cells = <1>; + compatible = "arm,amba-bus"; + interrupt-parent = <&gic>; + ranges; + + pdma1: pdma1 at 10EB0000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x10EB0000 0x1000>; + interrupts = <0 226 0>; + clocks = <&clock_fsys0 ACLK_PDMA1>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <32>; + }; + + pdma0: pdma0 at 10E10000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x10E10000 0x1000>; + interrupts = <0 225 0>; + clocks = <&clock_fsys0 ACLK_PDMA0>; + clock-names = "apb_pclk"; + #dma-cells = <1>; + #dma-channels = <8>; + #dma-requests = <32>; + }; + }; + + spi_0: spi at 14d20000 { + compatible = "samsung,exynos7-spi"; + reg = <0x14d20000 0x100>; + interrupts = <0 464 0>; + dmas = <&pdma0 7 + &pdma0 6>; + dma-names = "tx", "rx"; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock_peric1 PCLK_SPI0>, <&clock_peric1 SCLK_SPI0>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_bus>; + status = "disabled"; + }; + + spi_1: spi at 14d30000 { + compatible = "samsung,exynos7-spi"; + reg = <0x14d30000 0x100>; + interrupts = <0 465 0>; + dmas = <&pdma0 9 + &pdma0 8>; + dma-names = "tx", "rx"; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock_peric1 PCLK_SPI1>, <&clock_peric1 SCLK_SPI1>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_bus>; + status = "disabled"; + }; + + spi_2: spi at 14d40000 { + compatible = "samsung,exynos7-spi"; + reg = <0x14d40000 0x100>; + interrupts = <0 466 0>; + dmas = <&pdma0 11 + &pdma0 10>; + dma-names = "tx", "rx"; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock_peric1 PCLK_SPI2>, <&clock_peric1 SCLK_SPI2>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi2_bus>; + status = "disabled"; + }; + + spi_3: spi at 14d50000 { + compatible = "samsung,exynos7-spi"; + reg = <0x14d50000 0x100>; + interrupts = <0 467 0>; + dmas = <&pdma0 13 + &pdma0 12>; + dma-names = "tx", "rx"; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock_peric1 PCLK_SPI3>, <&clock_peric1 SCLK_SPI3>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi3_bus>; + status = "disabled"; + }; + + spi_4: spi at 14d70000 { + compatible = "samsung,exynos7-spi"; + reg = <0x14d70000 0x100>; + interrupts = <0 468 0>; + dmas = <&pdma0 3 + &pdma0 2>; + dma-names = "tx", "rx"; + #address-cells = <1>; + #size-cells = <0>; + clocks = <&clock_peric1 PCLK_SPI4>, <&clock_peric1 SCLK_SPI4>; + clock-names = "spi", "spi_busclk0"; + pinctrl-names = "default"; + pinctrl-0 = <&spi4_bus>; + status = "disabled"; + }; }; };
Signature · 1 line
1.7.4.4