* [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 @ 2024-01-20 1:29 Sam Protsenko 2024-01-20 1:29 ` [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks Sam Protsenko ` (7 more replies) 0 siblings, 8 replies; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk This series enables SPI for Exynos850 SoC. The summary: 1. Enable PDMA, it's needed for SPI (dts, clk) 2. Propagate SPI src clock rate change up to DIV clocks, to make it possible to change SPI frequency (clk driver) 3. Add Exynos850 support in SPI driver 4. Add SPI nodes to Exynos850 SoC dtsi All SPI instances were tested using `spidev_test' tool in all 3 possible modes: - Polling mode: xfer_size <= 32 - IRQ mode: 64 >= xfer_size >= 32 - DMA mode: xfer_size > 64 with 200 kHz ... 49.9 MHz SPI frequencies. The next 3 approaches were used: 1. Software loopback ('-l' option for `spidev_test' tool) 2. Hardware loopback (by connecting MISO line to MOSI) 3. By communicating with ATMega found on Sensors Mezzanine board [1], programmed to act as an SPI slave device and all the transactions were additionally checked on my Logic Analyzer to make sure the SCK frequencies were actually correct. [1] https://www.96boards.org/product/sensors-mezzanine/ Sam Protsenko (7): dt-bindings: clock: exynos850: Add PDMA clocks dt-bindings: spi: samsung: Add Exynos850 SPI clk: samsung: exynos850: Add PDMA clocks clk: samsung: exynos850: Propagate SPI IPCLK rate change spi: s3c64xx: Add Exynos850 support arm64: dts: exynos: Add PDMA node for Exynos850 arm64: dts: exynos: Add SPI nodes for Exynos850 .../devicetree/bindings/spi/samsung,spi.yaml | 1 + arch/arm64/boot/dts/exynos/exynos850.dtsi | 64 +++++++++++++++++++ drivers/clk/samsung/clk-exynos850.c | 42 +++++++----- drivers/spi/spi-s3c64xx.c | 14 ++++ include/dt-bindings/clock/exynos850.h | 2 + 5 files changed, 106 insertions(+), 17 deletions(-) -- 2.39.2 ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-23 12:54 ` (subset) " Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI Sam Protsenko ` (6 subsequent siblings) 7 siblings, 1 reply; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk Add constants for Peripheral DMA (PDMA) clocks in CMU_CORE controller: - PDMA_ACLK: clock for PDMA0 (regular DMA) - SPDMA_ACLK: clock for PDMA1 (secure DMA) Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- include/dt-bindings/clock/exynos850.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/dt-bindings/clock/exynos850.h b/include/dt-bindings/clock/exynos850.h index 3090e09c9a55..bc15108aa3c2 100644 --- a/include/dt-bindings/clock/exynos850.h +++ b/include/dt-bindings/clock/exynos850.h @@ -320,6 +320,8 @@ #define CLK_GOUT_SSS_PCLK 12 #define CLK_GOUT_GPIO_CORE_PCLK 13 #define CLK_GOUT_SYSREG_CORE_PCLK 14 +#define CLK_GOUT_PDMA_CORE_ACLK 15 +#define CLK_GOUT_SPDMA_CORE_ACLK 16 /* CMU_DPU */ #define CLK_MOUT_DPU_USER 1 -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks 2024-01-20 1:29 ` [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks Sam Protsenko @ 2024-01-23 12:54 ` Krzysztof Kozlowski 0 siblings, 0 replies; 18+ messages in thread From: Krzysztof Kozlowski @ 2024-01-23 12:54 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley, Sam Protsenko Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On Fri, 19 Jan 2024 19:29:42 -0600, Sam Protsenko wrote: > Add constants for Peripheral DMA (PDMA) clocks in CMU_CORE controller: > - PDMA_ACLK: clock for PDMA0 (regular DMA) > - SPDMA_ACLK: clock for PDMA1 (secure DMA) > > Applied, thanks! [1/7] dt-bindings: clock: exynos850: Add PDMA clocks https://git.kernel.org/krzk/linux/c/bc8cc7fb55b8da8c6b947603b1bad585e866b90c Best regards, -- Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko 2024-01-20 1:29 ` [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-23 12:22 ` Krzysztof Kozlowski 2024-01-24 6:32 ` Tudor Ambarus 2024-01-20 1:29 ` [PATCH 3/7] clk: samsung: exynos850: Add PDMA clocks Sam Protsenko ` (5 subsequent siblings) 7 siblings, 2 replies; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk Document samsung,exynos850-spi compatible which will be used on Exynos850 SoC. Exynos850 doesn't have ioclk, so only two clocks are needed (bus clock and functional SPI clock). Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- Documentation/devicetree/bindings/spi/samsung,spi.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/Documentation/devicetree/bindings/spi/samsung,spi.yaml b/Documentation/devicetree/bindings/spi/samsung,spi.yaml index 79da99ca0e53..f71099852653 100644 --- a/Documentation/devicetree/bindings/spi/samsung,spi.yaml +++ b/Documentation/devicetree/bindings/spi/samsung,spi.yaml @@ -22,6 +22,7 @@ properties: - samsung,s5pv210-spi # for S5PV210 and S5PC110 - samsung,exynos4210-spi - samsung,exynos5433-spi + - samsung,exynos850-spi - samsung,exynosautov9-spi - tesla,fsd-spi - const: samsung,exynos7-spi -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI 2024-01-20 1:29 ` [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI Sam Protsenko @ 2024-01-23 12:22 ` Krzysztof Kozlowski 2024-01-24 6:32 ` Tudor Ambarus 1 sibling, 0 replies; 18+ messages in thread From: Krzysztof Kozlowski @ 2024-01-23 12:22 UTC (permalink / raw) To: Sam Protsenko, Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On 20/01/2024 02:29, Sam Protsenko wrote: > Document samsung,exynos850-spi compatible which will be used on > Exynos850 SoC. Exynos850 doesn't have ioclk, so only two clocks are > needed (bus clock and functional SPI clock). > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- > Documentation/devicetree/bindings/spi/samsung,spi.yaml | 1 + Reviewed-by: Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> I assume this will go via SPI tree. Probably better to send SPI patches separately with fixed subject prefix (spi: dt-bindings: samsung:) Best regards, Krzysztof ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI 2024-01-20 1:29 ` [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI Sam Protsenko 2024-01-23 12:22 ` Krzysztof Kozlowski @ 2024-01-24 6:32 ` Tudor Ambarus 1 sibling, 0 replies; 18+ messages in thread From: Tudor Ambarus @ 2024-01-24 6:32 UTC (permalink / raw) To: Sam Protsenko, Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On 1/20/24 01:29, Sam Protsenko wrote: > Document samsung,exynos850-spi compatible which will be used on > Exynos850 SoC. Exynos850 doesn't have ioclk, so only two clocks are > needed (bus clock and functional SPI clock). > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org> As Krzysztof mentioned, I see lots of spi dt-bindings patches prefixed with ``spi: dt-bindings:``, so probably it is better to follow that. > --- > Documentation/devicetree/bindings/spi/samsung,spi.yaml | 1 + > 1 file changed, 1 insertion(+) > > diff --git a/Documentation/devicetree/bindings/spi/samsung,spi.yaml b/Documentation/devicetree/bindings/spi/samsung,spi.yaml > index 79da99ca0e53..f71099852653 100644 > --- a/Documentation/devicetree/bindings/spi/samsung,spi.yaml > +++ b/Documentation/devicetree/bindings/spi/samsung,spi.yaml > @@ -22,6 +22,7 @@ properties: > - samsung,s5pv210-spi # for S5PV210 and S5PC110 > - samsung,exynos4210-spi > - samsung,exynos5433-spi > + - samsung,exynos850-spi > - samsung,exynosautov9-spi > - tesla,fsd-spi > - const: samsung,exynos7-spi ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 3/7] clk: samsung: exynos850: Add PDMA clocks 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko 2024-01-20 1:29 ` [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks Sam Protsenko 2024-01-20 1:29 ` [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-23 12:54 ` (subset) " Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 4/7] clk: samsung: exynos850: Propagate SPI IPCLK rate change Sam Protsenko ` (4 subsequent siblings) 7 siblings, 1 reply; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk Add Peripheral DMA (PDMA) clocks in CMU_CORE controller: - PDMA_ACLK: clock for PDMA0 (regular DMA) - SPDMA_ACLK: clock for PDMA1 (secure DMA) Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- drivers/clk/samsung/clk-exynos850.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/drivers/clk/samsung/clk-exynos850.c b/drivers/clk/samsung/clk-exynos850.c index bdc1eef7d6e5..01913dc4eb27 100644 --- a/drivers/clk/samsung/clk-exynos850.c +++ b/drivers/clk/samsung/clk-exynos850.c @@ -26,7 +26,7 @@ #define CLKS_NR_IS (CLK_GOUT_IS_SYSREG_PCLK + 1) #define CLKS_NR_MFCMSCL (CLK_GOUT_MFCMSCL_SYSREG_PCLK + 1) #define CLKS_NR_PERI (CLK_GOUT_WDT1_PCLK + 1) -#define CLKS_NR_CORE (CLK_GOUT_SYSREG_CORE_PCLK + 1) +#define CLKS_NR_CORE (CLK_GOUT_SPDMA_CORE_ACLK + 1) #define CLKS_NR_DPU (CLK_GOUT_DPU_SYSREG_PCLK + 1) /* ---- CMU_TOP ------------------------------------------------------------- */ @@ -1667,6 +1667,8 @@ CLK_OF_DECLARE(exynos850_cmu_peri, "samsung,exynos850-cmu-peri", #define CLK_CON_GAT_GOUT_CORE_GPIO_CORE_PCLK 0x2044 #define CLK_CON_GAT_GOUT_CORE_MMC_EMBD_I_ACLK 0x20e8 #define CLK_CON_GAT_GOUT_CORE_MMC_EMBD_SDCLKIN 0x20ec +#define CLK_CON_GAT_GOUT_CORE_PDMA_ACLK 0x20f0 +#define CLK_CON_GAT_GOUT_CORE_SPDMA_ACLK 0x2124 #define CLK_CON_GAT_GOUT_CORE_SSS_I_ACLK 0x2128 #define CLK_CON_GAT_GOUT_CORE_SSS_I_PCLK 0x212c #define CLK_CON_GAT_GOUT_CORE_SYSREG_CORE_PCLK 0x2130 @@ -1683,6 +1685,8 @@ static const unsigned long core_clk_regs[] __initconst = { CLK_CON_GAT_GOUT_CORE_GPIO_CORE_PCLK, CLK_CON_GAT_GOUT_CORE_MMC_EMBD_I_ACLK, CLK_CON_GAT_GOUT_CORE_MMC_EMBD_SDCLKIN, + CLK_CON_GAT_GOUT_CORE_PDMA_ACLK, + CLK_CON_GAT_GOUT_CORE_SPDMA_ACLK, CLK_CON_GAT_GOUT_CORE_SSS_I_ACLK, CLK_CON_GAT_GOUT_CORE_SSS_I_PCLK, CLK_CON_GAT_GOUT_CORE_SYSREG_CORE_PCLK, @@ -1726,6 +1730,10 @@ static const struct samsung_gate_clock core_gate_clks[] __initconst = { GATE(CLK_GOUT_MMC_EMBD_SDCLKIN, "gout_mmc_embd_sdclkin", "mout_core_mmc_embd_user", CLK_CON_GAT_GOUT_CORE_MMC_EMBD_SDCLKIN, 21, CLK_SET_RATE_PARENT, 0), + GATE(CLK_GOUT_PDMA_CORE_ACLK, "gout_pdma_core_aclk", + "mout_core_bus_user", CLK_CON_GAT_GOUT_CORE_PDMA_ACLK, 21, 0, 0), + GATE(CLK_GOUT_SPDMA_CORE_ACLK, "gout_spdma_core_aclk", + "mout_core_bus_user", CLK_CON_GAT_GOUT_CORE_SPDMA_ACLK, 21, 0, 0), GATE(CLK_GOUT_SSS_ACLK, "gout_sss_aclk", "mout_core_sss_user", CLK_CON_GAT_GOUT_CORE_SSS_I_ACLK, 21, 0, 0), GATE(CLK_GOUT_SSS_PCLK, "gout_sss_pclk", "dout_core_busp", -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH 3/7] clk: samsung: exynos850: Add PDMA clocks 2024-01-20 1:29 ` [PATCH 3/7] clk: samsung: exynos850: Add PDMA clocks Sam Protsenko @ 2024-01-23 12:54 ` Krzysztof Kozlowski 0 siblings, 0 replies; 18+ messages in thread From: Krzysztof Kozlowski @ 2024-01-23 12:54 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley, Sam Protsenko Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On Fri, 19 Jan 2024 19:29:44 -0600, Sam Protsenko wrote: > Add Peripheral DMA (PDMA) clocks in CMU_CORE controller: > - PDMA_ACLK: clock for PDMA0 (regular DMA) > - SPDMA_ACLK: clock for PDMA1 (secure DMA) > > Applied, thanks! [3/7] clk: samsung: exynos850: Add PDMA clocks https://git.kernel.org/krzk/linux/c/00e532cd023ccee170239360978c65eced06125a Best regards, -- Krzysztof Kozlowski <krzysztof.kozlowski@linaro.org> ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 4/7] clk: samsung: exynos850: Propagate SPI IPCLK rate change 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko ` (2 preceding siblings ...) 2024-01-20 1:29 ` [PATCH 3/7] clk: samsung: exynos850: Add PDMA clocks Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-23 12:49 ` Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 5/7] spi: s3c64xx: Add Exynos850 support Sam Protsenko ` (3 subsequent siblings) 7 siblings, 1 reply; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk When SPI transfer is being prepared, the spi-s3c64xx driver will call clk_set_rate() to change the rate of SPI source clock (IPCLK). But IPCLK is a gate (leaf) clock, so it must propagate the rate change up the clock tree, so that corresponding DIV clocks can actually change their divider values. Add CLK_SET_RATE_PARENT flag to corresponding clocks for all SPI instances in Exynos850 (spi_0, spi_1 and spi_2) to make it possible. This change involves next clocks: usi_spi_0: Clock Block Div range -------------------------------------------- gout_spi0_ipclk CMU_PERI - dout_peri_spi0 CMU_PERI /1..32 mout_peri_spi_user CMU_PERI - dout_peri_ip CMU_TOP /1..16 usi_cmgp0: Clock Block Div range -------------------------------------------- gout_cmgp_usi0_ipclk CMU_CMGP - dout_cmgp_usi0 CMU_CMGP /1..32 mout_cmgp_usi0 CMU_CMGP - gout_clkcmu_cmgp_bus CMU_APM - dout_apm_bus CMU_APM /1..8 usi_cmgp1: Clock Block Div range -------------------------------------------- gout_cmgp_usi1_ipclk CMU_CMGP - dout_cmgp_usi1 CMU_CMGP /1..32 mout_cmgp_usi1 CMU_CMGP - gout_clkcmu_cmgp_bus CMU_APM - dout_apm_bus CMU_APM /1..8 With input clock of 400 MHz, this scheme provides next IPCLK rate range, for each SPI block: SPI0: 781 kHz ... 400 MHz SPI1/2: 1.6 MHz ... 400 MHz Accounting for internal /4 divider in SPI blocks, and because the max SPI frequency is limited at 50 MHz, it gives us next SPI SCK rates: SPI0: 200 kHz ... 49.9 MHz SPI1/2: 400 kHz ... 49.9 MHz Which should cover all possible applications of SPI bus. Of course, setting SPI frequency to values as low as 500 kHz will also affect the common bus dividers (dout_apm_bus or dout_peri_ip), which in turn effectively lowers the rates for all leaf bus clocks derived from those dividers, like HSI2C and I3C clocks. But at least it gives the board designer a choice, whether to keep all clocks (SPI/HSI2C/I3C) at high frequencies, or make all those clocks have lower frequencies. Not propagating the rate change to those common dividers would limit this choice to "only high frequencies are allowed for SPI/HSI2C/I3C" option, making the common dividers useless. This decision follows the "Worse is better" approach, relying on the users/engineers to know the system internals when working with such low-level features, instead of trying to account for all possible use-cases. Fixes: 7dd05578198b ("clk: samsung: Introduce Exynos850 clock driver") Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- drivers/clk/samsung/clk-exynos850.c | 32 ++++++++++++++--------------- 1 file changed, 16 insertions(+), 16 deletions(-) diff --git a/drivers/clk/samsung/clk-exynos850.c b/drivers/clk/samsung/clk-exynos850.c index 01913dc4eb27..32a8cb861702 100644 --- a/drivers/clk/samsung/clk-exynos850.c +++ b/drivers/clk/samsung/clk-exynos850.c @@ -605,7 +605,7 @@ static const struct samsung_div_clock apm_div_clks[] __initconst = { static const struct samsung_gate_clock apm_gate_clks[] __initconst = { GATE(CLK_GOUT_CLKCMU_CMGP_BUS, "gout_clkcmu_cmgp_bus", "dout_apm_bus", - CLK_CON_GAT_CLKCMU_CMGP_BUS, 21, 0, 0), + CLK_CON_GAT_CLKCMU_CMGP_BUS, 21, CLK_SET_RATE_PARENT, 0), GATE(CLK_GOUT_CLKCMU_CHUB_BUS, "gout_clkcmu_chub_bus", "mout_clkcmu_chub_bus", CLK_CON_GAT_GATE_CLKCMU_CHUB_BUS, 21, 0, 0), @@ -974,19 +974,19 @@ static const struct samsung_fixed_rate_clock cmgp_fixed_clks[] __initconst = { static const struct samsung_mux_clock cmgp_mux_clks[] __initconst = { MUX(CLK_MOUT_CMGP_ADC, "mout_cmgp_adc", mout_cmgp_adc_p, CLK_CON_MUX_CLK_CMGP_ADC, 0, 1), - MUX(CLK_MOUT_CMGP_USI0, "mout_cmgp_usi0", mout_cmgp_usi0_p, - CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0, 0, 1), - MUX(CLK_MOUT_CMGP_USI1, "mout_cmgp_usi1", mout_cmgp_usi1_p, - CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1, 0, 1), + MUX_F(CLK_MOUT_CMGP_USI0, "mout_cmgp_usi0", mout_cmgp_usi0_p, + CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0, 0, 1, CLK_SET_RATE_PARENT, 0), + MUX_F(CLK_MOUT_CMGP_USI1, "mout_cmgp_usi1", mout_cmgp_usi1_p, + CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1, 0, 1, CLK_SET_RATE_PARENT, 0), }; static const struct samsung_div_clock cmgp_div_clks[] __initconst = { DIV(CLK_DOUT_CMGP_ADC, "dout_cmgp_adc", "gout_clkcmu_cmgp_bus", CLK_CON_DIV_DIV_CLK_CMGP_ADC, 0, 4), - DIV(CLK_DOUT_CMGP_USI0, "dout_cmgp_usi0", "mout_cmgp_usi0", - CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP0, 0, 5), - DIV(CLK_DOUT_CMGP_USI1, "dout_cmgp_usi1", "mout_cmgp_usi1", - CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP1, 0, 5), + DIV_F(CLK_DOUT_CMGP_USI0, "dout_cmgp_usi0", "mout_cmgp_usi0", + CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP0, 0, 5, CLK_SET_RATE_PARENT, 0), + DIV_F(CLK_DOUT_CMGP_USI1, "dout_cmgp_usi1", "mout_cmgp_usi1", + CLK_CON_DIV_DIV_CLK_CMGP_USI_CMGP1, 0, 5, CLK_SET_RATE_PARENT, 0), }; static const struct samsung_gate_clock cmgp_gate_clks[] __initconst = { @@ -1001,12 +1001,12 @@ static const struct samsung_gate_clock cmgp_gate_clks[] __initconst = { "gout_clkcmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_GPIO_PCLK, 21, CLK_IGNORE_UNUSED, 0), GATE(CLK_GOUT_CMGP_USI0_IPCLK, "gout_cmgp_usi0_ipclk", "dout_cmgp_usi0", - CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK, 21, 0, 0), + CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_IPCLK, 21, CLK_SET_RATE_PARENT, 0), GATE(CLK_GOUT_CMGP_USI0_PCLK, "gout_cmgp_usi0_pclk", "gout_clkcmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP0_PCLK, 21, 0, 0), GATE(CLK_GOUT_CMGP_USI1_IPCLK, "gout_cmgp_usi1_ipclk", "dout_cmgp_usi1", - CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK, 21, 0, 0), + CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_IPCLK, 21, CLK_SET_RATE_PARENT, 0), GATE(CLK_GOUT_CMGP_USI1_PCLK, "gout_cmgp_usi1_pclk", "gout_clkcmu_cmgp_bus", CLK_CON_GAT_GOUT_CMGP_USI_CMGP1_PCLK, 21, 0, 0), @@ -1557,8 +1557,8 @@ static const struct samsung_mux_clock peri_mux_clks[] __initconst = { mout_peri_uart_user_p, PLL_CON0_MUX_CLKCMU_PERI_UART_USER, 4, 1), MUX(CLK_MOUT_PERI_HSI2C_USER, "mout_peri_hsi2c_user", mout_peri_hsi2c_user_p, PLL_CON0_MUX_CLKCMU_PERI_HSI2C_USER, 4, 1), - MUX(CLK_MOUT_PERI_SPI_USER, "mout_peri_spi_user", mout_peri_spi_user_p, - PLL_CON0_MUX_CLKCMU_PERI_SPI_USER, 4, 1), + MUX_F(CLK_MOUT_PERI_SPI_USER, "mout_peri_spi_user", mout_peri_spi_user_p, + PLL_CON0_MUX_CLKCMU_PERI_SPI_USER, 4, 1, CLK_SET_RATE_PARENT, 0), }; static const struct samsung_div_clock peri_div_clks[] __initconst = { @@ -1568,8 +1568,8 @@ static const struct samsung_div_clock peri_div_clks[] __initconst = { CLK_CON_DIV_DIV_CLK_PERI_HSI2C_1, 0, 5), DIV(CLK_DOUT_PERI_HSI2C2, "dout_peri_hsi2c2", "gout_peri_hsi2c2", CLK_CON_DIV_DIV_CLK_PERI_HSI2C_2, 0, 5), - DIV(CLK_DOUT_PERI_SPI0, "dout_peri_spi0", "mout_peri_spi_user", - CLK_CON_DIV_DIV_CLK_PERI_SPI_0, 0, 5), + DIV_F(CLK_DOUT_PERI_SPI0, "dout_peri_spi0", "mout_peri_spi_user", + CLK_CON_DIV_DIV_CLK_PERI_SPI_0, 0, 5, CLK_SET_RATE_PARENT, 0), }; static const struct samsung_gate_clock peri_gate_clks[] __initconst = { @@ -1611,7 +1611,7 @@ static const struct samsung_gate_clock peri_gate_clks[] __initconst = { "mout_peri_bus_user", CLK_CON_GAT_GOUT_PERI_PWM_MOTOR_PCLK, 21, 0, 0), GATE(CLK_GOUT_SPI0_IPCLK, "gout_spi0_ipclk", "dout_peri_spi0", - CLK_CON_GAT_GOUT_PERI_SPI_0_IPCLK, 21, 0, 0), + CLK_CON_GAT_GOUT_PERI_SPI_0_IPCLK, 21, CLK_SET_RATE_PARENT, 0), GATE(CLK_GOUT_SPI0_PCLK, "gout_spi0_pclk", "mout_peri_bus_user", CLK_CON_GAT_GOUT_PERI_SPI_0_PCLK, 21, 0, 0), GATE(CLK_GOUT_SYSREG_PERI_PCLK, "gout_sysreg_peri_pclk", -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 4/7] clk: samsung: exynos850: Propagate SPI IPCLK rate change 2024-01-20 1:29 ` [PATCH 4/7] clk: samsung: exynos850: Propagate SPI IPCLK rate change Sam Protsenko @ 2024-01-23 12:49 ` Krzysztof Kozlowski 0 siblings, 0 replies; 18+ messages in thread From: Krzysztof Kozlowski @ 2024-01-23 12:49 UTC (permalink / raw) To: Sam Protsenko, Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On 20/01/2024 02:29, Sam Protsenko wrote: > @@ -974,19 +974,19 @@ static const struct samsung_fixed_rate_clock cmgp_fixed_clks[] __initconst = { > static const struct samsung_mux_clock cmgp_mux_clks[] __initconst = { > MUX(CLK_MOUT_CMGP_ADC, "mout_cmgp_adc", mout_cmgp_adc_p, > CLK_CON_MUX_CLK_CMGP_ADC, 0, 1), > - MUX(CLK_MOUT_CMGP_USI0, "mout_cmgp_usi0", mout_cmgp_usi0_p, > - CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0, 0, 1), > - MUX(CLK_MOUT_CMGP_USI1, "mout_cmgp_usi1", mout_cmgp_usi1_p, > - CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1, 0, 1), > + MUX_F(CLK_MOUT_CMGP_USI0, "mout_cmgp_usi0", mout_cmgp_usi0_p, > + CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP0, 0, 1, CLK_SET_RATE_PARENT, 0), > + MUX_F(CLK_MOUT_CMGP_USI1, "mout_cmgp_usi1", mout_cmgp_usi1_p, > + CLK_CON_MUX_MUX_CLK_CMGP_USI_CMGP1, 0, 1, CLK_SET_RATE_PARENT, 0), Checkpatch strict complains on missing alignment. Please fix. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 5/7] spi: s3c64xx: Add Exynos850 support 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko ` (3 preceding siblings ...) 2024-01-20 1:29 ` [PATCH 4/7] clk: samsung: exynos850: Propagate SPI IPCLK rate change Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-24 6:49 ` Tudor Ambarus 2024-01-20 1:29 ` [PATCH 6/7] arm64: dts: exynos: Add PDMA node for Exynos850 Sam Protsenko ` (2 subsequent siblings) 7 siblings, 1 reply; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk Add SPI port configuration for Exynos850 SoC. It has 3 USI blocks which can be configured in SPI mode: * spi_0: BLK_PERI_SPI_0 (0x13940000) * spi_1: BLK_ALIVE_USI_CMGP00 (0x11d00000) * spi_2: BLK_ALIVE_USI_CMGP01 (0x11d20000) SPI FIFO depth is 64 bytes for all those SPI blocks, so the .fifo_lvl_mask value is set to 0x7f. All blocks have DIV_4 as the default internal clock divider, and an internal loopback mode to run a loopback test. Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- drivers/spi/spi-s3c64xx.c | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c index 0e48ffd499b9..f7d623ad6ac3 100644 --- a/drivers/spi/spi-s3c64xx.c +++ b/drivers/spi/spi-s3c64xx.c @@ -1461,6 +1461,17 @@ static const struct s3c64xx_spi_port_config exynos5433_spi_port_config = { .quirks = S3C64XX_SPI_QUIRK_CS_AUTO, }; +static const struct s3c64xx_spi_port_config exynos850_spi_port_config = { + .fifo_lvl_mask = { 0x7f, 0x7f, 0x7f }, + .rx_lvl_offset = 15, + .tx_st_done = 25, + .clk_div = 4, + .high_speed = true, + .clk_from_cmu = true, + .has_loopback = true, + .quirks = S3C64XX_SPI_QUIRK_CS_AUTO, +}; + static const struct s3c64xx_spi_port_config exynosautov9_spi_port_config = { .fifo_lvl_mask = { 0x1ff, 0x1ff, 0x7f, 0x7f, 0x7f, 0x7f, 0x1ff, 0x7f, 0x7f, 0x7f, 0x7f, 0x7f}, @@ -1515,6 +1526,9 @@ static const struct of_device_id s3c64xx_spi_dt_match[] = { { .compatible = "samsung,exynos5433-spi", .data = (void *)&exynos5433_spi_port_config, }, + { .compatible = "samsung,exynos850-spi", + .data = (void *)&exynos850_spi_port_config, + }, { .compatible = "samsung,exynosautov9-spi", .data = (void *)&exynosautov9_spi_port_config, }, -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 5/7] spi: s3c64xx: Add Exynos850 support 2024-01-20 1:29 ` [PATCH 5/7] spi: s3c64xx: Add Exynos850 support Sam Protsenko @ 2024-01-24 6:49 ` Tudor Ambarus 2024-01-24 19:51 ` Sam Protsenko 0 siblings, 1 reply; 18+ messages in thread From: Tudor Ambarus @ 2024-01-24 6:49 UTC (permalink / raw) To: Sam Protsenko, Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On 1/20/24 01:29, Sam Protsenko wrote: > Add SPI port configuration for Exynos850 SoC. It has 3 USI blocks which > can be configured in SPI mode: > > * spi_0: BLK_PERI_SPI_0 (0x13940000) > * spi_1: BLK_ALIVE_USI_CMGP00 (0x11d00000) > * spi_2: BLK_ALIVE_USI_CMGP01 (0x11d20000) > > SPI FIFO depth is 64 bytes for all those SPI blocks, so the > .fifo_lvl_mask value is set to 0x7f. All blocks have DIV_4 as the > default internal clock divider, and an internal loopback mode to run > a loopback test. > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org> > --- > drivers/spi/spi-s3c64xx.c | 14 ++++++++++++++ > 1 file changed, 14 insertions(+) > > diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c > index 0e48ffd499b9..f7d623ad6ac3 100644 > --- a/drivers/spi/spi-s3c64xx.c > +++ b/drivers/spi/spi-s3c64xx.c > @@ -1461,6 +1461,17 @@ static const struct s3c64xx_spi_port_config exynos5433_spi_port_config = { > .quirks = S3C64XX_SPI_QUIRK_CS_AUTO, > }; > > +static const struct s3c64xx_spi_port_config exynos850_spi_port_config = { > + .fifo_lvl_mask = { 0x7f, 0x7f, 0x7f }, I'll come with a follow up patch on top of this. Having the dt alias used as an index in the fifo_lvl_mask to determine the FIFO depth is wrong. Not only because of the dependency on the alias, but also because the fifo_lvl_mask value does not reflect the FIFO level reg field. Playing with what we have now is ok by me, I find the patch good. > + .rx_lvl_offset = 15, > + .tx_st_done = 25, > + .clk_div = 4, > + .high_speed = true, > + .clk_from_cmu = true, > + .has_loopback = true, > + .quirks = S3C64XX_SPI_QUIRK_CS_AUTO, > +}; > + > static const struct s3c64xx_spi_port_config exynosautov9_spi_port_config = { > .fifo_lvl_mask = { 0x1ff, 0x1ff, 0x7f, 0x7f, 0x7f, 0x7f, 0x1ff, 0x7f, > 0x7f, 0x7f, 0x7f, 0x7f}, > @@ -1515,6 +1526,9 @@ static const struct of_device_id s3c64xx_spi_dt_match[] = { > { .compatible = "samsung,exynos5433-spi", > .data = (void *)&exynos5433_spi_port_config, > }, > + { .compatible = "samsung,exynos850-spi", > + .data = (void *)&exynos850_spi_port_config, > + }, > { .compatible = "samsung,exynosautov9-spi", > .data = (void *)&exynosautov9_spi_port_config, > }, ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: [PATCH 5/7] spi: s3c64xx: Add Exynos850 support 2024-01-24 6:49 ` Tudor Ambarus @ 2024-01-24 19:51 ` Sam Protsenko 0 siblings, 0 replies; 18+ messages in thread From: Sam Protsenko @ 2024-01-24 19:51 UTC (permalink / raw) To: Tudor Ambarus Cc: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley, Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On Wed, Jan 24, 2024 at 12:49 AM Tudor Ambarus <tudor.ambarus@linaro.org> wrote: > > > > On 1/20/24 01:29, Sam Protsenko wrote: > > Add SPI port configuration for Exynos850 SoC. It has 3 USI blocks which > > can be configured in SPI mode: > > > > * spi_0: BLK_PERI_SPI_0 (0x13940000) > > * spi_1: BLK_ALIVE_USI_CMGP00 (0x11d00000) > > * spi_2: BLK_ALIVE_USI_CMGP01 (0x11d20000) > > > > SPI FIFO depth is 64 bytes for all those SPI blocks, so the > > .fifo_lvl_mask value is set to 0x7f. All blocks have DIV_4 as the > > default internal clock divider, and an internal loopback mode to run > > a loopback test. > > > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > > Reviewed-by: Tudor Ambarus <tudor.ambarus@linaro.org> > > > --- > > drivers/spi/spi-s3c64xx.c | 14 ++++++++++++++ > > 1 file changed, 14 insertions(+) > > > > diff --git a/drivers/spi/spi-s3c64xx.c b/drivers/spi/spi-s3c64xx.c > > index 0e48ffd499b9..f7d623ad6ac3 100644 > > --- a/drivers/spi/spi-s3c64xx.c > > +++ b/drivers/spi/spi-s3c64xx.c > > @@ -1461,6 +1461,17 @@ static const struct s3c64xx_spi_port_config exynos5433_spi_port_config = { > > .quirks = S3C64XX_SPI_QUIRK_CS_AUTO, > > }; > > > > +static const struct s3c64xx_spi_port_config exynos850_spi_port_config = { > > + .fifo_lvl_mask = { 0x7f, 0x7f, 0x7f }, > > I'll come with a follow up patch on top of this. Having the dt alias > used as an index in the fifo_lvl_mask to determine the FIFO depth is > wrong. Not only because of the dependency on the alias, but also because > the fifo_lvl_mask value does not reflect the FIFO level reg field. > Playing with what we have now is ok by me, I find the patch good. > Yeah, we just have to make sure all our patches are taken in the correct order, to avoid any possible conflicts. > > + .rx_lvl_offset = 15, > > + .tx_st_done = 25, > > + .clk_div = 4, > > + .high_speed = true, > > + .clk_from_cmu = true, > > + .has_loopback = true, > > + .quirks = S3C64XX_SPI_QUIRK_CS_AUTO, > > +}; > > + > > static const struct s3c64xx_spi_port_config exynosautov9_spi_port_config = { > > .fifo_lvl_mask = { 0x1ff, 0x1ff, 0x7f, 0x7f, 0x7f, 0x7f, 0x1ff, 0x7f, > > 0x7f, 0x7f, 0x7f, 0x7f}, > > @@ -1515,6 +1526,9 @@ static const struct of_device_id s3c64xx_spi_dt_match[] = { > > { .compatible = "samsung,exynos5433-spi", > > .data = (void *)&exynos5433_spi_port_config, > > }, > > + { .compatible = "samsung,exynos850-spi", > > + .data = (void *)&exynos850_spi_port_config, > > + }, > > { .compatible = "samsung,exynosautov9-spi", > > .data = (void *)&exynosautov9_spi_port_config, > > }, ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 6/7] arm64: dts: exynos: Add PDMA node for Exynos850 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko ` (4 preceding siblings ...) 2024-01-20 1:29 ` [PATCH 5/7] spi: s3c64xx: Add Exynos850 support Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-23 12:55 ` Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 7/7] arm64: dts: exynos: Add SPI nodes " Sam Protsenko 2024-01-25 14:02 ` (subset) [PATCH 0/7] arm64: exynos: Enable SPI " Mark Brown 7 siblings, 1 reply; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk Enable PDMA node. It's needed for multiple peripheral modules, like SPI. Use "arm,pl330-broken-no-flushp" quirk, as otherwise SPI transfers in DMA mode often fail with error like this: I/O Error: rx-1 tx-1 rx-f tx-f len-786 dma-1 res-(-5) Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- arch/arm64/boot/dts/exynos/exynos850.dtsi | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/arch/arm64/boot/dts/exynos/exynos850.dtsi b/arch/arm64/boot/dts/exynos/exynos850.dtsi index da3f4a791e68..cd0a452cd6b4 100644 --- a/arch/arm64/boot/dts/exynos/exynos850.dtsi +++ b/arch/arm64/boot/dts/exynos/exynos850.dtsi @@ -197,6 +197,16 @@ gic: interrupt-controller@12a01000 { IRQ_TYPE_LEVEL_HIGH)>; }; + pdma0: dma-controller@120c0000 { + compatible = "arm,pl330", "arm,primecell"; + reg = <0x120c0000 0x1000>; + interrupts = <GIC_SPI 479 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&cmu_core CLK_GOUT_PDMA_CORE_ACLK>; + clock-names = "apb_pclk"; + arm,pl330-broken-no-flushp; + #dma-cells = <1>; + }; + pmu_system_controller: system-controller@11860000 { compatible = "samsung,exynos850-pmu", "syscon"; reg = <0x11860000 0x10000>; -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 6/7] arm64: dts: exynos: Add PDMA node for Exynos850 2024-01-20 1:29 ` [PATCH 6/7] arm64: dts: exynos: Add PDMA node for Exynos850 Sam Protsenko @ 2024-01-23 12:55 ` Krzysztof Kozlowski 0 siblings, 0 replies; 18+ messages in thread From: Krzysztof Kozlowski @ 2024-01-23 12:55 UTC (permalink / raw) To: Sam Protsenko, Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On 20/01/2024 02:29, Sam Protsenko wrote: > Enable PDMA node. It's needed for multiple peripheral modules, like SPI. > Use "arm,pl330-broken-no-flushp" quirk, as otherwise SPI transfers in > DMA mode often fail with error like this: > > I/O Error: rx-1 tx-1 rx-f tx-f len-786 dma-1 res-(-5) > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- > arch/arm64/boot/dts/exynos/exynos850.dtsi | 10 ++++++++++ > 1 file changed, 10 insertions(+) > > diff --git a/arch/arm64/boot/dts/exynos/exynos850.dtsi b/arch/arm64/boot/dts/exynos/exynos850.dtsi > index da3f4a791e68..cd0a452cd6b4 100644 > --- a/arch/arm64/boot/dts/exynos/exynos850.dtsi > +++ b/arch/arm64/boot/dts/exynos/exynos850.dtsi > @@ -197,6 +197,16 @@ gic: interrupt-controller@12a01000 { > IRQ_TYPE_LEVEL_HIGH)>; > }; > > + pdma0: dma-controller@120c0000 { Looks misordered. Keep unit-address order. > + compatible = "arm,pl330", "arm,primecell"; > + reg = <0x120c0000 0x1000>; > + interrupts = <GIC_SPI 479 IRQ_TYPE_LEVEL_HIGH>; > + clocks = <&cmu_core CLK_GOUT_PDMA_CORE_ACLK>; > + clock-names = "apb_pclk"; Best regards, Krzysztof ^ permalink raw reply [flat|nested] 18+ messages in thread
* [PATCH 7/7] arm64: dts: exynos: Add SPI nodes for Exynos850 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko ` (5 preceding siblings ...) 2024-01-20 1:29 ` [PATCH 6/7] arm64: dts: exynos: Add PDMA node for Exynos850 Sam Protsenko @ 2024-01-20 1:29 ` Sam Protsenko 2024-01-23 12:56 ` Krzysztof Kozlowski 2024-01-25 14:02 ` (subset) [PATCH 0/7] arm64: exynos: Enable SPI " Mark Brown 7 siblings, 1 reply; 18+ messages in thread From: Sam Protsenko @ 2024-01-20 1:29 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk Some USI blocks can be configured as SPI controllers. Add corresponding SPI nodes to Exynos850 SoC device tree. Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> --- arch/arm64/boot/dts/exynos/exynos850.dtsi | 54 +++++++++++++++++++++++ 1 file changed, 54 insertions(+) diff --git a/arch/arm64/boot/dts/exynos/exynos850.dtsi b/arch/arm64/boot/dts/exynos/exynos850.dtsi index cd0a452cd6b4..e35973a254e6 100644 --- a/arch/arm64/boot/dts/exynos/exynos850.dtsi +++ b/arch/arm64/boot/dts/exynos/exynos850.dtsi @@ -738,6 +738,24 @@ usi_spi_0: usi@139400c0 { <&cmu_peri CLK_GOUT_SPI0_IPCLK>; clock-names = "pclk", "ipclk"; status = "disabled"; + + spi_0: spi@13940000 { + compatible = "samsung,exynos850-spi"; + reg = <0x13940000 0x30>; + interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&spi0_pins>; + clocks = <&cmu_peri CLK_GOUT_SPI0_IPCLK>, + <&cmu_peri CLK_GOUT_SPI0_PCLK>; + clock-names = "spi_busclk0", "spi"; + samsung,spi-src-clk = <0>; + dmas = <&pdma0 5>, <&pdma0 4>; + dma-names = "tx", "rx"; + num-cs = <1>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; }; usi_cmgp0: usi@11d000c0 { @@ -779,6 +797,24 @@ serial_1: serial@11d00000 { clock-names = "uart", "clk_uart_baud0"; status = "disabled"; }; + + spi_1: spi@11d00000 { + compatible = "samsung,exynos850-spi"; + reg = <0x11d00000 0x30>; + interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&spi1_pins>; + clocks = <&cmu_cmgp CLK_GOUT_CMGP_USI0_IPCLK>, + <&cmu_cmgp CLK_GOUT_CMGP_USI0_PCLK>; + clock-names = "spi_busclk0", "spi"; + samsung,spi-src-clk = <0>; + dmas = <&pdma0 12>, <&pdma0 13>; + dma-names = "tx", "rx"; + num-cs = <1>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; }; usi_cmgp1: usi@11d200c0 { @@ -820,6 +856,24 @@ serial_2: serial@11d20000 { clock-names = "uart", "clk_uart_baud0"; status = "disabled"; }; + + spi_2: spi@11d20000 { + compatible = "samsung,exynos850-spi"; + reg = <0x11d20000 0x30>; + interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>; + pinctrl-names = "default"; + pinctrl-0 = <&spi2_pins>; + clocks = <&cmu_cmgp CLK_GOUT_CMGP_USI1_IPCLK>, + <&cmu_cmgp CLK_GOUT_CMGP_USI1_PCLK>; + clock-names = "spi_busclk0", "spi"; + samsung,spi-src-clk = <0>; + dmas = <&pdma0 14>, <&pdma0 15>; + dma-names = "tx", "rx"; + num-cs = <1>; + #address-cells = <1>; + #size-cells = <0>; + status = "disabled"; + }; }; }; }; -- 2.39.2 ^ permalink raw reply related [flat|nested] 18+ messages in thread
* Re: [PATCH 7/7] arm64: dts: exynos: Add SPI nodes for Exynos850 2024-01-20 1:29 ` [PATCH 7/7] arm64: dts: exynos: Add SPI nodes " Sam Protsenko @ 2024-01-23 12:56 ` Krzysztof Kozlowski 0 siblings, 0 replies; 18+ messages in thread From: Krzysztof Kozlowski @ 2024-01-23 12:56 UTC (permalink / raw) To: Sam Protsenko, Krzysztof Kozlowski, Andi Shyti, Mark Brown, Rob Herring, Conor Dooley Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On 20/01/2024 02:29, Sam Protsenko wrote: > Some USI blocks can be configured as SPI controllers. Add corresponding > SPI nodes to Exynos850 SoC device tree. > > Signed-off-by: Sam Protsenko <semen.protsenko@linaro.org> > --- > arch/arm64/boot/dts/exynos/exynos850.dtsi | 54 +++++++++++++++++++++++ > 1 file changed, 54 insertions(+) > > diff --git a/arch/arm64/boot/dts/exynos/exynos850.dtsi b/arch/arm64/boot/dts/exynos/exynos850.dtsi > index cd0a452cd6b4..e35973a254e6 100644 > --- a/arch/arm64/boot/dts/exynos/exynos850.dtsi > +++ b/arch/arm64/boot/dts/exynos/exynos850.dtsi > @@ -738,6 +738,24 @@ usi_spi_0: usi@139400c0 { > <&cmu_peri CLK_GOUT_SPI0_IPCLK>; > clock-names = "pclk", "ipclk"; > status = "disabled"; > + > + spi_0: spi@13940000 { > + compatible = "samsung,exynos850-spi"; > + reg = <0x13940000 0x30>; > + interrupts = <GIC_SPI 221 IRQ_TYPE_LEVEL_HIGH>; > + pinctrl-names = "default"; > + pinctrl-0 = <&spi0_pins>; pinctrl-0 pinctrl-names Same in other places. Best regards, Krzysztof ^ permalink raw reply [flat|nested] 18+ messages in thread
* Re: (subset) [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko ` (6 preceding siblings ...) 2024-01-20 1:29 ` [PATCH 7/7] arm64: dts: exynos: Add SPI nodes " Sam Protsenko @ 2024-01-25 14:02 ` Mark Brown 7 siblings, 0 replies; 18+ messages in thread From: Mark Brown @ 2024-01-25 14:02 UTC (permalink / raw) To: Krzysztof Kozlowski, Andi Shyti, Rob Herring, Conor Dooley, Sam Protsenko Cc: Alim Akhtar, Sylwester Nawrocki, Tomasz Figa, Chanwoo Choi, linux-spi, linux-samsung-soc, devicetree, linux-kernel, linux-arm-kernel, linux-clk On Fri, 19 Jan 2024 19:29:41 -0600, Sam Protsenko wrote: > This series enables SPI for Exynos850 SoC. The summary: > > 1. Enable PDMA, it's needed for SPI (dts, clk) > 2. Propagate SPI src clock rate change up to DIV clocks, to make it > possible to change SPI frequency (clk driver) > 3. Add Exynos850 support in SPI driver > 4. Add SPI nodes to Exynos850 SoC dtsi > > [...] Applied to https://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi.git for-next Thanks! [2/7] dt-bindings: spi: samsung: Add Exynos850 SPI commit: 737cf74b38007fd5d5d2f15d4d4bc16e5f1cbfed [5/7] spi: s3c64xx: Add Exynos850 support commit: 0229278bf33ea69cc1bba12c287f173e9b18c1f8 All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted. You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed. If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced. Please add any relevant lists and maintainers to the CCs when replying to this mail. Thanks, Mark ^ permalink raw reply [flat|nested] 18+ messages in thread
end of thread, other threads:[~2024-01-25 14:02 UTC | newest] Thread overview: 18+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2024-01-20 1:29 [PATCH 0/7] arm64: exynos: Enable SPI for Exynos850 Sam Protsenko 2024-01-20 1:29 ` [PATCH 1/7] dt-bindings: clock: exynos850: Add PDMA clocks Sam Protsenko 2024-01-23 12:54 ` (subset) " Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 2/7] dt-bindings: spi: samsung: Add Exynos850 SPI Sam Protsenko 2024-01-23 12:22 ` Krzysztof Kozlowski 2024-01-24 6:32 ` Tudor Ambarus 2024-01-20 1:29 ` [PATCH 3/7] clk: samsung: exynos850: Add PDMA clocks Sam Protsenko 2024-01-23 12:54 ` (subset) " Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 4/7] clk: samsung: exynos850: Propagate SPI IPCLK rate change Sam Protsenko 2024-01-23 12:49 ` Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 5/7] spi: s3c64xx: Add Exynos850 support Sam Protsenko 2024-01-24 6:49 ` Tudor Ambarus 2024-01-24 19:51 ` Sam Protsenko 2024-01-20 1:29 ` [PATCH 6/7] arm64: dts: exynos: Add PDMA node for Exynos850 Sam Protsenko 2024-01-23 12:55 ` Krzysztof Kozlowski 2024-01-20 1:29 ` [PATCH 7/7] arm64: dts: exynos: Add SPI nodes " Sam Protsenko 2024-01-23 12:56 ` Krzysztof Kozlowski 2024-01-25 14:02 ` (subset) [PATCH 0/7] arm64: exynos: Enable SPI " Mark Brown
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).