* [PATCH] arch: riscv: thead: implement basic spi
@ 2024-06-30 6:38 Kanak Shilledar
2024-06-30 13:51 ` Conor Dooley
0 siblings, 1 reply; 5+ messages in thread
From: Kanak Shilledar @ 2024-06-30 6:38 UTC (permalink / raw)
Cc: kanakshilledar111, Kanak Shilledar, Serge Semin, Mark Brown,
Rob Herring, Krzysztof Kozlowski, Conor Dooley, Jisheng Zhang,
Guo Ren, Fu Wei, Paul Walmsley, Palmer Dabbelt, Albert Ou,
linux-spi, devicetree, linux-kernel, linux-riscv
implemented basic spi support for TH1520 SoC.
created a fixed clock and a simple spi0 node.
updated the matching binding to include thead,th1520-spi as compatible.
added a spidev device in devicetree which will utilise the spi0 node.
this is usually reserved for a SPI NOR flash which is left unpopulated
underneath the carrier board. I performed a SPI self loop test using
tools/spi/spidev_test.c and tried sending `\xDE\xAD\xBE\xEF` and verified
it is being received correctly. i updated the of_device_id struct in
drivers/spi/spi-dw-mmio.c to include "thead,th1520-spi" as the compatible.
this patch also adds basic spi support on beaglev ahead which shares the
same TH1520 SoC. i have only tested on LicheePi 4A.
Signed-off-by: Kanak Shilledar <kanakshilledar@gmail.com>
---
.../devicetree/bindings/spi/snps,dw-apb-ssi.yaml | 4 ++++
.../boot/dts/thead/th1520-beaglev-ahead.dts | 9 +++++++++
.../boot/dts/thead/th1520-lichee-module-4a.dtsi | 4 ++++
.../riscv/boot/dts/thead/th1520-lichee-pi-4a.dts | 10 ++++++++++
arch/riscv/boot/dts/thead/th1520.dtsi | 16 ++++++++++++++++
drivers/spi/spi-dw-mmio.c | 1 +
6 files changed, 44 insertions(+)
diff --git a/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml b/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml
index fde3776a558b..bccd00a1ddd0 100644
--- a/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml
+++ b/Documentation/devicetree/bindings/spi/snps,dw-apb-ssi.yaml
@@ -88,6 +88,10 @@ properties:
- renesas,r9a06g032-spi # RZ/N1D
- renesas,r9a06g033-spi # RZ/N1S
- const: renesas,rzn1-spi # RZ/N1
+ - description: T-HEAD TH1520 SoC SPI Controller
+ items:
+ - const: thead,th1520-spi
+ - const: snps,dw-apb-ssi
reg:
minItems: 1
diff --git a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
index d9b4de9e4757..3103b74e0288 100644
--- a/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
+++ b/arch/riscv/boot/dts/thead/th1520-beaglev-ahead.dts
@@ -17,6 +17,7 @@ aliases {
gpio1 = &gpio1;
gpio2 = &gpio2;
gpio3 = &gpio3;
+ spi0 = &spi0;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
@@ -52,6 +53,10 @@ &sdhci_clk {
clock-frequency = <198000000>;
};
+&spi_clk {
+ clock-frequency = <396000000>;
+};
+
&uart_sclk {
clock-frequency = <100000000>;
};
@@ -79,3 +84,7 @@ &sdio0 {
&uart0 {
status = "okay";
};
+
+&spi0 {
+ status = "okay";
+};
diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi b/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi
index 1365d3a512a3..6939bd36560c 100644
--- a/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi
+++ b/arch/riscv/boot/dts/thead/th1520-lichee-module-4a.dtsi
@@ -33,6 +33,10 @@ &sdhci_clk {
clock-frequency = <198000000>;
};
+&spi_clk {
+ clock-frequency = <396000000>;
+};
+
&uart_sclk {
clock-frequency = <100000000>;
};
diff --git a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
index 9a3884a73e13..26f82fe91489 100644
--- a/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
+++ b/arch/riscv/boot/dts/thead/th1520-lichee-pi-4a.dts
@@ -14,6 +14,7 @@ aliases {
gpio1 = &gpio1;
gpio2 = &gpio2;
gpio3 = &gpio3;
+ spi0 = &spi0;
serial0 = &uart0;
serial1 = &uart1;
serial2 = &uart2;
@@ -30,3 +31,12 @@ chosen {
&uart0 {
status = "okay";
};
+
+&spi0 {
+ status = "okay";
+ spidev@0 {
+ compatible = "rohm,dh2228fv";
+ reg = <0>;
+ spi-max-frequency = <500000>;
+ };
+};
diff --git a/arch/riscv/boot/dts/thead/th1520.dtsi b/arch/riscv/boot/dts/thead/th1520.dtsi
index d2fa25839012..f962de663e7e 100644
--- a/arch/riscv/boot/dts/thead/th1520.dtsi
+++ b/arch/riscv/boot/dts/thead/th1520.dtsi
@@ -140,6 +140,12 @@ apb_clk: apb-clk-clock {
#clock-cells = <0>;
};
+ spi_clk: spi-clock {
+ compatible = "fixed-clock";
+ clock-output-names = "spi_clk";
+ #clock-cells = <0>;
+ };
+
uart_sclk: uart-sclk-clock {
compatible = "fixed-clock";
clock-output-names = "uart_sclk";
@@ -183,6 +189,16 @@ clint: timer@ffdc000000 {
<&cpu3_intc 3>, <&cpu3_intc 7>;
};
+ spi0: spi@ffe700c000 {
+ compatible = "thead,th1520-spi", "snps,dw-apb-ssi";
+ reg = <0xff 0xe700c000 0x0 0x1000>;
+ interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&spi_clk>;
+ #address-cells = <1>;
+ #size-cells = <0>;
+ status = "disabled";
+ };
+
uart0: serial@ffe7014000 {
compatible = "snps,dw-apb-uart";
reg = <0xff 0xe7014000 0x0 0x100>;
diff --git a/drivers/spi/spi-dw-mmio.c b/drivers/spi/spi-dw-mmio.c
index 819907e332c4..39e3d46ebf5d 100644
--- a/drivers/spi/spi-dw-mmio.c
+++ b/drivers/spi/spi-dw-mmio.c
@@ -419,6 +419,7 @@ static const struct of_device_id dw_spi_mmio_of_match[] = {
{ .compatible = "microchip,sparx5-spi", dw_spi_mscc_sparx5_init},
{ .compatible = "canaan,k210-spi", dw_spi_canaan_k210_init},
{ .compatible = "amd,pensando-elba-spi", .data = dw_spi_elba_init},
+ { .compatible = "thead,th1520-spi", .data = dw_spi_pssi_init},
{ /* end of table */}
};
MODULE_DEVICE_TABLE(of, dw_spi_mmio_of_match);
--
2.45.2
^ permalink raw reply related [flat|nested] 5+ messages in thread
* Re: [PATCH] arch: riscv: thead: implement basic spi
2024-06-30 6:38 [PATCH] arch: riscv: thead: implement basic spi Kanak Shilledar
@ 2024-06-30 13:51 ` Conor Dooley
2024-07-01 9:13 ` Kanak Shilledar
0 siblings, 1 reply; 5+ messages in thread
From: Conor Dooley @ 2024-06-30 13:51 UTC (permalink / raw)
To: Kanak Shilledar
Cc: kanakshilledar111, Serge Semin, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jisheng Zhang, Guo Ren, Fu Wei,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-spi, devicetree,
linux-kernel, linux-riscv
[-- Attachment #1: Type: text/plain, Size: 1826 bytes --]
On Sun, Jun 30, 2024 at 12:08:20PM +0530, Kanak Shilledar wrote:
> implemented basic spi support for TH1520 SoC.
> created a fixed clock and a simple spi0 node.
> updated the matching binding to include thead,th1520-spi as compatible.
> added a spidev device in devicetree which will utilise the spi0 node.
> this is usually reserved for a SPI NOR flash which is left unpopulated
> underneath the carrier board. I performed a SPI self loop test using
> tools/spi/spidev_test.c and tried sending `\xDE\xAD\xBE\xEF` and verified
> it is being received correctly. i updated the of_device_id struct in
> drivers/spi/spi-dw-mmio.c to include "thead,th1520-spi" as the compatible.
> this patch also adds basic spi support on beaglev ahead which shares the
> same TH1520 SoC. i have only tested on LicheePi 4A.
>
> Signed-off-by: Kanak Shilledar <kanakshilledar@gmail.com>
> ---
> .../devicetree/bindings/spi/snps,dw-apb-ssi.yaml | 4 ++++
> .../boot/dts/thead/th1520-beaglev-ahead.dts | 9 +++++++++
> .../boot/dts/thead/th1520-lichee-module-4a.dtsi | 4 ++++
> .../riscv/boot/dts/thead/th1520-lichee-pi-4a.dts | 10 ++++++++++
> arch/riscv/boot/dts/thead/th1520.dtsi | 16 ++++++++++++++++
> drivers/spi/spi-dw-mmio.c | 1 +
This needs to be 3 different patches - one for the binding, one for the
driver and a final one for the dts files.
> +
> +&spi0 {
> + status = "okay";
> + spidev@0 {
"spidev" is not a type of device, the nodename should match the type.
> + compatible = "rohm,dh2228fv";
> + reg = <0>;
> + spi-max-frequency = <500000>;
> + };
> +};
I'll put money on you not having a dh2228fv on this board. Document what
you actually have on it please, not what allows you to probe the spidev
driver in linux.
Thanks,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] arch: riscv: thead: implement basic spi
2024-06-30 13:51 ` Conor Dooley
@ 2024-07-01 9:13 ` Kanak Shilledar
2024-07-01 9:33 ` Conor Dooley
0 siblings, 1 reply; 5+ messages in thread
From: Kanak Shilledar @ 2024-07-01 9:13 UTC (permalink / raw)
To: Conor Dooley
Cc: kanakshilledar111, Serge Semin, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jisheng Zhang, Guo Ren, Fu Wei,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-spi, devicetree,
linux-kernel, linux-riscv
On Sun, Jun 30, 2024 at 7:22 PM Conor Dooley <conor@kernel.org> wrote:
>
> On Sun, Jun 30, 2024 at 12:08:20PM +0530, Kanak Shilledar wrote:
> > implemented basic spi support for TH1520 SoC.
> > created a fixed clock and a simple spi0 node.
> > updated the matching binding to include thead,th1520-spi as compatible.
> > added a spidev device in devicetree which will utilise the spi0 node.
> > this is usually reserved for a SPI NOR flash which is left unpopulated
> > underneath the carrier board. I performed a SPI self loop test using
> > tools/spi/spidev_test.c and tried sending `\xDE\xAD\xBE\xEF` and verified
> > it is being received correctly. i updated the of_device_id struct in
> > drivers/spi/spi-dw-mmio.c to include "thead,th1520-spi" as the compatible.
> > this patch also adds basic spi support on beaglev ahead which shares the
> > same TH1520 SoC. i have only tested on LicheePi 4A.
> >
> > Signed-off-by: Kanak Shilledar <kanakshilledar@gmail.com>
> > ---
> > .../devicetree/bindings/spi/snps,dw-apb-ssi.yaml | 4 ++++
> > .../boot/dts/thead/th1520-beaglev-ahead.dts | 9 +++++++++
> > .../boot/dts/thead/th1520-lichee-module-4a.dtsi | 4 ++++
> > .../riscv/boot/dts/thead/th1520-lichee-pi-4a.dts | 10 ++++++++++
> > arch/riscv/boot/dts/thead/th1520.dtsi | 16 ++++++++++++++++
> > drivers/spi/spi-dw-mmio.c | 1 +
>
> This needs to be 3 different patches - one for the binding, one for the
> driver and a final one for the dts files.
I will convert this into a patch set of 3 patch as you suggested.
> > +
> > +&spi0 {
> > + status = "okay";
> > + spidev@0 {
>
> "spidev" is not a type of device, the nodename should match the type.
>
> > + compatible = "rohm,dh2228fv";
> > + reg = <0>;
> > + spi-max-frequency = <500000>;
> > + };
> > +};
>
> I'll put money on you not having a dh2228fv on this board. Document what
> you actually have on it please, not what allows you to probe the spidev
> driver in linux.
Yes, you are right! Actually as per the vendor's kernel it should be a
"spi-nor" device from winbond.
I changed it to spidev for testing purposes. Shall I just leave it
with status = "okay" or add the node for
that spi-nor flash?
> Thanks,
> Conor.
Thanks and Regards,
Kanak Shilledar
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] arch: riscv: thead: implement basic spi
2024-07-01 9:13 ` Kanak Shilledar
@ 2024-07-01 9:33 ` Conor Dooley
2024-07-01 9:36 ` Kanak Shilledar
0 siblings, 1 reply; 5+ messages in thread
From: Conor Dooley @ 2024-07-01 9:33 UTC (permalink / raw)
To: Kanak Shilledar
Cc: kanakshilledar111, Serge Semin, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jisheng Zhang, Guo Ren, Fu Wei,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-spi, devicetree,
linux-kernel, linux-riscv
[-- Attachment #1: Type: text/plain, Size: 2689 bytes --]
On Mon, Jul 01, 2024 at 02:43:46PM +0530, Kanak Shilledar wrote:
> On Sun, Jun 30, 2024 at 7:22 PM Conor Dooley <conor@kernel.org> wrote:
> >
> > On Sun, Jun 30, 2024 at 12:08:20PM +0530, Kanak Shilledar wrote:
> > > implemented basic spi support for TH1520 SoC.
> > > created a fixed clock and a simple spi0 node.
> > > updated the matching binding to include thead,th1520-spi as compatible.
> > > added a spidev device in devicetree which will utilise the spi0 node.
> > > this is usually reserved for a SPI NOR flash which is left unpopulated
> > > underneath the carrier board. I performed a SPI self loop test using
> > > tools/spi/spidev_test.c and tried sending `\xDE\xAD\xBE\xEF` and verified
> > > it is being received correctly. i updated the of_device_id struct in
> > > drivers/spi/spi-dw-mmio.c to include "thead,th1520-spi" as the compatible.
> > > this patch also adds basic spi support on beaglev ahead which shares the
> > > same TH1520 SoC. i have only tested on LicheePi 4A.
> > >
> > > Signed-off-by: Kanak Shilledar <kanakshilledar@gmail.com>
> > > ---
> > > .../devicetree/bindings/spi/snps,dw-apb-ssi.yaml | 4 ++++
> > > .../boot/dts/thead/th1520-beaglev-ahead.dts | 9 +++++++++
> > > .../boot/dts/thead/th1520-lichee-module-4a.dtsi | 4 ++++
> > > .../riscv/boot/dts/thead/th1520-lichee-pi-4a.dts | 10 ++++++++++
> > > arch/riscv/boot/dts/thead/th1520.dtsi | 16 ++++++++++++++++
> > > drivers/spi/spi-dw-mmio.c | 1 +
> >
> > This needs to be 3 different patches - one for the binding, one for the
> > driver and a final one for the dts files.
>
> I will convert this into a patch set of 3 patch as you suggested.
>
> > > +
> > > +&spi0 {
> > > + status = "okay";
> > > + spidev@0 {
> >
> > "spidev" is not a type of device, the nodename should match the type.
> >
> > > + compatible = "rohm,dh2228fv";
> > > + reg = <0>;
> > > + spi-max-frequency = <500000>;
> > > + };
> > > +};
> >
> > I'll put money on you not having a dh2228fv on this board. Document what
> > you actually have on it please, not what allows you to probe the spidev
> > driver in linux.
>
> Yes, you are right! Actually as per the vendor's kernel it should be a
> "spi-nor" device from winbond.
> I changed it to spidev for testing purposes. Shall I just leave it
> with status = "okay" or add the node for
> that spi-nor flash?
If it isn't on the board, it shouldn't be in the devicetree. Please add
the actual device that is here instead. If there's a board with nothing
connected, then please don't add anything.
Thanks,
Conor.
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]
^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [PATCH] arch: riscv: thead: implement basic spi
2024-07-01 9:33 ` Conor Dooley
@ 2024-07-01 9:36 ` Kanak Shilledar
0 siblings, 0 replies; 5+ messages in thread
From: Kanak Shilledar @ 2024-07-01 9:36 UTC (permalink / raw)
To: Conor Dooley
Cc: kanakshilledar111, Serge Semin, Mark Brown, Rob Herring,
Krzysztof Kozlowski, Conor Dooley, Jisheng Zhang, Guo Ren, Fu Wei,
Paul Walmsley, Palmer Dabbelt, Albert Ou, linux-spi, devicetree,
linux-kernel, linux-riscv
On Mon, Jul 1, 2024 at 3:03 PM Conor Dooley <conor@kernel.org> wrote:
>
> On Mon, Jul 01, 2024 at 02:43:46PM +0530, Kanak Shilledar wrote:
> > On Sun, Jun 30, 2024 at 7:22 PM Conor Dooley <conor@kernel.org> wrote:
> > >
> > > On Sun, Jun 30, 2024 at 12:08:20PM +0530, Kanak Shilledar wrote:
> > > > implemented basic spi support for TH1520 SoC.
> > > > created a fixed clock and a simple spi0 node.
> > > > updated the matching binding to include thead,th1520-spi as compatible.
> > > > added a spidev device in devicetree which will utilise the spi0 node.
> > > > this is usually reserved for a SPI NOR flash which is left unpopulated
> > > > underneath the carrier board. I performed a SPI self loop test using
> > > > tools/spi/spidev_test.c and tried sending `\xDE\xAD\xBE\xEF` and verified
> > > > it is being received correctly. i updated the of_device_id struct in
> > > > drivers/spi/spi-dw-mmio.c to include "thead,th1520-spi" as the compatible.
> > > > this patch also adds basic spi support on beaglev ahead which shares the
> > > > same TH1520 SoC. i have only tested on LicheePi 4A.
> > > >
> > > > Signed-off-by: Kanak Shilledar <kanakshilledar@gmail.com>
> > > > ---
> > > > .../devicetree/bindings/spi/snps,dw-apb-ssi.yaml | 4 ++++
> > > > .../boot/dts/thead/th1520-beaglev-ahead.dts | 9 +++++++++
> > > > .../boot/dts/thead/th1520-lichee-module-4a.dtsi | 4 ++++
> > > > .../riscv/boot/dts/thead/th1520-lichee-pi-4a.dts | 10 ++++++++++
> > > > arch/riscv/boot/dts/thead/th1520.dtsi | 16 ++++++++++++++++
> > > > drivers/spi/spi-dw-mmio.c | 1 +
> > >
> > > This needs to be 3 different patches - one for the binding, one for the
> > > driver and a final one for the dts files.
> >
> > I will convert this into a patch set of 3 patch as you suggested.
> >
> > > > +
> > > > +&spi0 {
> > > > + status = "okay";
> > > > + spidev@0 {
> > >
> > > "spidev" is not a type of device, the nodename should match the type.
> > >
> > > > + compatible = "rohm,dh2228fv";
> > > > + reg = <0>;
> > > > + spi-max-frequency = <500000>;
> > > > + };
> > > > +};
> > >
> > > I'll put money on you not having a dh2228fv on this board. Document what
> > > you actually have on it please, not what allows you to probe the spidev
> > > driver in linux.
> >
> > Yes, you are right! Actually as per the vendor's kernel it should be a
> > "spi-nor" device from winbond.
> > I changed it to spidev for testing purposes. Shall I just leave it
> > with status = "okay" or add the node for
> > that spi-nor flash?
>
> If it isn't on the board, it shouldn't be in the devicetree. Please add
> the actual device that is here instead. If there's a board with nothing
> connected, then please don't add anything.
Alright got it. The SPI flash pad is left unpopulated on the LicheePi 4A board.
Thus, I will not mention it in the devicetree.
> Thanks,
> Conor.
Thanks and Regards,
Kanak Shilledar
^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2024-07-01 9:36 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-06-30 6:38 [PATCH] arch: riscv: thead: implement basic spi Kanak Shilledar
2024-06-30 13:51 ` Conor Dooley
2024-07-01 9:13 ` Kanak Shilledar
2024-07-01 9:33 ` Conor Dooley
2024-07-01 9:36 ` Kanak Shilledar
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).