All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH 0/2] arm64: dts: sun50i: H6: Enable SPI flash
@ 2020-01-08 10:10 ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Brown, linux-spi, linux-arm-kernel, linux-sunxi,
	Icenowy Zheng, devicetree, Rob Herring, Mark Rutland

Even though the SPI controller in the Allwinner H6 SoC is more advanced
than in the previous generations (it supports 3-wire and 4-wire mode),
the register set stayed backwards-compatible. So we can use the existing
driver to use the "normal" SPI mode, for instance to access the SPI
flash soldered on the Pine H64 board.

These two patches allow this by adding the SPI controller nodes to the
DT. The compatible strings include an H6 specific name, so that any
future 4-wire enhancements for instance would be automatically usable
once the driver learns this new trick. For now we use the H3 fallback
name to bind the current driver.

This time I tested this actual branch ;-) (on top of sunxi/dt-for-5.6),
on a Pine H64, both the internal SPI flash as well with SPI flash
connected to the other SPI controller available on the GPIO headers.

One thing I noticed: Only SPI0 seems to connect the two extra pins
required for 4-wire mode. Does this require some extra DT property or
the like? Can we derive this from the number of pins in the pinctrl-0
property? Or will we later introduce a new compatible string to prepend
to the current list?

Cheers,
Andre.

Andre Przywara (2):
  arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
  arm64: dts: allwinner: h6: Pine H64: Add SPI flash node

 .../boot/dts/allwinner/sun50i-h6-pine-h64.dts | 13 +++++
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  | 54 +++++++++++++++++++
 2 files changed, 67 insertions(+)

-- 
2.17.1


^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 0/2] arm64: dts: sun50i: H6: Enable SPI flash
@ 2020-01-08 10:10 ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Brown, linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Icenowy Zheng,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland

Even though the SPI controller in the Allwinner H6 SoC is more advanced
than in the previous generations (it supports 3-wire and 4-wire mode),
the register set stayed backwards-compatible. So we can use the existing
driver to use the "normal" SPI mode, for instance to access the SPI
flash soldered on the Pine H64 board.

These two patches allow this by adding the SPI controller nodes to the
DT. The compatible strings include an H6 specific name, so that any
future 4-wire enhancements for instance would be automatically usable
once the driver learns this new trick. For now we use the H3 fallback
name to bind the current driver.

This time I tested this actual branch ;-) (on top of sunxi/dt-for-5.6),
on a Pine H64, both the internal SPI flash as well with SPI flash
connected to the other SPI controller available on the GPIO headers.

One thing I noticed: Only SPI0 seems to connect the two extra pins
required for 4-wire mode. Does this require some extra DT property or
the like? Can we derive this from the number of pins in the pinctrl-0
property? Or will we later introduce a new compatible string to prepend
to the current list?

Cheers,
Andre.

Andre Przywara (2):
  arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
  arm64: dts: allwinner: h6: Pine H64: Add SPI flash node

 .../boot/dts/allwinner/sun50i-h6-pine-h64.dts | 13 +++++
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  | 54 +++++++++++++++++++
 2 files changed, 67 insertions(+)

-- 
2.17.1

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 0/2] arm64: dts: sun50i: H6: Enable SPI flash
@ 2020-01-08 10:10 ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Rutland, devicetree, Rob Herring, linux-spi, linux-sunxi,
	Mark Brown, Icenowy Zheng, linux-arm-kernel

Even though the SPI controller in the Allwinner H6 SoC is more advanced
than in the previous generations (it supports 3-wire and 4-wire mode),
the register set stayed backwards-compatible. So we can use the existing
driver to use the "normal" SPI mode, for instance to access the SPI
flash soldered on the Pine H64 board.

These two patches allow this by adding the SPI controller nodes to the
DT. The compatible strings include an H6 specific name, so that any
future 4-wire enhancements for instance would be automatically usable
once the driver learns this new trick. For now we use the H3 fallback
name to bind the current driver.

This time I tested this actual branch ;-) (on top of sunxi/dt-for-5.6),
on a Pine H64, both the internal SPI flash as well with SPI flash
connected to the other SPI controller available on the GPIO headers.

One thing I noticed: Only SPI0 seems to connect the two extra pins
required for 4-wire mode. Does this require some extra DT property or
the like? Can we derive this from the number of pins in the pinctrl-0
property? Or will we later introduce a new compatible string to prepend
to the current list?

Cheers,
Andre.

Andre Przywara (2):
  arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
  arm64: dts: allwinner: h6: Pine H64: Add SPI flash node

 .../boot/dts/allwinner/sun50i-h6-pine-h64.dts | 13 +++++
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi  | 54 +++++++++++++++++++
 2 files changed, 67 insertions(+)

-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
  2020-01-08 10:10 ` Andre Przywara
  (?)
@ 2020-01-08 10:10   ` Andre Przywara
  -1 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Brown, linux-spi, linux-arm-kernel, linux-sunxi,
	Icenowy Zheng, devicetree, Rob Herring, Mark Rutland

The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
but with the added capability of 3-wire and 4-wire operation modes.
For now the driver does not support those, but the SPI registers are
fully backwards-compatible, just adding bits and registers which were
formerly reserved. So we can use the existing driver for the "normal" SPI
modes, for instance to access the SPI NOR flash soldered on the PineH64
board.
We use an H6 specific compatible string in addition to the existing H3
string, so when the driver later gains Quad SPI support, it should work
automatically without any DT changes.

Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
connecting another SPI flash to the SPI1 header pins.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index 3329283e38ab..40835850893e 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -338,6 +338,30 @@
 				bias-pull-up;
 			};
 
+			/omit-if-no-ref/
+			spi0_pins: spi0-pins {
+				pins = "PC0", "PC2", "PC3";
+				function = "spi0";
+			};
+
+			/omit-if-no-ref/
+			spi0_cs_pin: spi0-cs-pin {
+				pins = "PC5";
+				function = "spi0";
+			};
+
+			/omit-if-no-ref/
+			spi1_pins: spi1-pins {
+				pins = "PH4", "PH5", "PH6";
+				function = "spi1";
+			};
+
+			/omit-if-no-ref/
+			spi1_cs_pin: spi1-cs-pin {
+				pins = "PH3";
+				function = "spi1";
+			};
+
 			spdif_tx_pin: spdif-tx-pin {
 				pins = "PH7";
 				function = "spdif";
@@ -504,6 +528,36 @@
 			#size-cells = <0>;
 		};
 
+		spi0: spi@5010000 {
+			compatible = "allwinner,sun50i-h6-spi",
+				     "allwinner,sun8i-h3-spi";
+			reg = <0x05010000 0x1000>;
+			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
+			clock-names = "ahb", "mod";
+			dmas = <&dma 22>, <&dma 22>;
+			dma-names = "rx", "tx";
+			resets = <&ccu RST_BUS_SPI0>;
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		spi1: spi@5011000 {
+			compatible = "allwinner,sun50i-h6-spi",
+				     "allwinner,sun8i-h3-spi";
+			reg = <0x05011000 0x1000>;
+			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
+			clock-names = "ahb", "mod";
+			dmas = <&dma 23>, <&dma 23>;
+			dma-names = "rx", "tx";
+			resets = <&ccu RST_BUS_SPI1>;
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
 		emac: ethernet@5020000 {
 			compatible = "allwinner,sun50i-h6-emac",
 				     "allwinner,sun50i-a64-emac";
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 10:10   ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Rutland, devicetree, Rob Herring, linux-spi, linux-sunxi,
	Mark Brown, Icenowy Zheng, linux-arm-kernel

The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
but with the added capability of 3-wire and 4-wire operation modes.
For now the driver does not support those, but the SPI registers are
fully backwards-compatible, just adding bits and registers which were
formerly reserved. So we can use the existing driver for the "normal" SPI
modes, for instance to access the SPI NOR flash soldered on the PineH64
board.
We use an H6 specific compatible string in addition to the existing H3
string, so when the driver later gains Quad SPI support, it should work
automatically without any DT changes.

Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
connecting another SPI flash to the SPI1 header pins.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index 3329283e38ab..40835850893e 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -338,6 +338,30 @@
 				bias-pull-up;
 			};
 
+			/omit-if-no-ref/
+			spi0_pins: spi0-pins {
+				pins = "PC0", "PC2", "PC3";
+				function = "spi0";
+			};
+
+			/omit-if-no-ref/
+			spi0_cs_pin: spi0-cs-pin {
+				pins = "PC5";
+				function = "spi0";
+			};
+
+			/omit-if-no-ref/
+			spi1_pins: spi1-pins {
+				pins = "PH4", "PH5", "PH6";
+				function = "spi1";
+			};
+
+			/omit-if-no-ref/
+			spi1_cs_pin: spi1-cs-pin {
+				pins = "PH3";
+				function = "spi1";
+			};
+
 			spdif_tx_pin: spdif-tx-pin {
 				pins = "PH7";
 				function = "spdif";
@@ -504,6 +528,36 @@
 			#size-cells = <0>;
 		};
 
+		spi0: spi@5010000 {
+			compatible = "allwinner,sun50i-h6-spi",
+				     "allwinner,sun8i-h3-spi";
+			reg = <0x05010000 0x1000>;
+			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
+			clock-names = "ahb", "mod";
+			dmas = <&dma 22>, <&dma 22>;
+			dma-names = "rx", "tx";
+			resets = <&ccu RST_BUS_SPI0>;
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		spi1: spi@5011000 {
+			compatible = "allwinner,sun50i-h6-spi",
+				     "allwinner,sun8i-h3-spi";
+			reg = <0x05011000 0x1000>;
+			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
+			clock-names = "ahb", "mod";
+			dmas = <&dma 23>, <&dma 23>;
+			dma-names = "rx", "tx";
+			resets = <&ccu RST_BUS_SPI1>;
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
 		emac: ethernet@5020000 {
 			compatible = "allwinner,sun50i-h6-emac",
 				     "allwinner,sun50i-a64-emac";
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 10:10   ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Rutland, devicetree, Rob Herring, linux-spi, linux-sunxi,
	Mark Brown, Icenowy Zheng, linux-arm-kernel

The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
but with the added capability of 3-wire and 4-wire operation modes.
For now the driver does not support those, but the SPI registers are
fully backwards-compatible, just adding bits and registers which were
formerly reserved. So we can use the existing driver for the "normal" SPI
modes, for instance to access the SPI NOR flash soldered on the PineH64
board.
We use an H6 specific compatible string in addition to the existing H3
string, so when the driver later gains Quad SPI support, it should work
automatically without any DT changes.

Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
connecting another SPI flash to the SPI1 header pins.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
 1 file changed, 54 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
index 3329283e38ab..40835850893e 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
@@ -338,6 +338,30 @@
 				bias-pull-up;
 			};
 
+			/omit-if-no-ref/
+			spi0_pins: spi0-pins {
+				pins = "PC0", "PC2", "PC3";
+				function = "spi0";
+			};
+
+			/omit-if-no-ref/
+			spi0_cs_pin: spi0-cs-pin {
+				pins = "PC5";
+				function = "spi0";
+			};
+
+			/omit-if-no-ref/
+			spi1_pins: spi1-pins {
+				pins = "PH4", "PH5", "PH6";
+				function = "spi1";
+			};
+
+			/omit-if-no-ref/
+			spi1_cs_pin: spi1-cs-pin {
+				pins = "PH3";
+				function = "spi1";
+			};
+
 			spdif_tx_pin: spdif-tx-pin {
 				pins = "PH7";
 				function = "spdif";
@@ -504,6 +528,36 @@
 			#size-cells = <0>;
 		};
 
+		spi0: spi@5010000 {
+			compatible = "allwinner,sun50i-h6-spi",
+				     "allwinner,sun8i-h3-spi";
+			reg = <0x05010000 0x1000>;
+			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
+			clock-names = "ahb", "mod";
+			dmas = <&dma 22>, <&dma 22>;
+			dma-names = "rx", "tx";
+			resets = <&ccu RST_BUS_SPI0>;
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
+		spi1: spi@5011000 {
+			compatible = "allwinner,sun50i-h6-spi",
+				     "allwinner,sun8i-h3-spi";
+			reg = <0x05011000 0x1000>;
+			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
+			clock-names = "ahb", "mod";
+			dmas = <&dma 23>, <&dma 23>;
+			dma-names = "rx", "tx";
+			resets = <&ccu RST_BUS_SPI1>;
+			status = "disabled";
+			#address-cells = <1>;
+			#size-cells = <0>;
+		};
+
 		emac: ethernet@5020000 {
 			compatible = "allwinner,sun50i-h6-emac",
 				     "allwinner,sun50i-a64-emac";
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 2/2] arm64: dts: allwinner: h6: Pine H64: Add SPI flash node
@ 2020-01-08 10:10   ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Brown, linux-spi, linux-arm-kernel, linux-sunxi,
	Icenowy Zheng, devicetree, Rob Herring, Mark Rutland

The Pine H64 board comes with SPI flash soldered on the board, connected
to the SPI0 pins (so it can also boot from there).

Add the required DT node to make the flash accessible from Linux.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 .../arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
index d1c2aa5b3a20..a72f605a3a64 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
@@ -14,6 +14,7 @@
 	aliases {
 		ethernet0 = &emac;
 		serial0 = &uart0;
+		spi0 = &spi0;
 	};
 
 	chosen {
@@ -278,6 +279,18 @@
 	vcc-pm-supply = <&reg_aldo1>;
 };
 
+&spi0 {
+	pinctrl-0 = <&spi0_pins>, <&spi0_cs_pin>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	flash@0 {
+		compatible = "winbond,w25q128", "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <4000000>;
+	};
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_ph_pins>;
-- 
2.17.1


^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 2/2] arm64: dts: allwinner: h6: Pine H64: Add SPI flash node
@ 2020-01-08 10:10   ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Brown, linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Icenowy Zheng,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland

The Pine H64 board comes with SPI flash soldered on the board, connected
to the SPI0 pins (so it can also boot from there).

Add the required DT node to make the flash accessible from Linux.

Signed-off-by: Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org>
---
 .../arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
index d1c2aa5b3a20..a72f605a3a64 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
@@ -14,6 +14,7 @@
 	aliases {
 		ethernet0 = &emac;
 		serial0 = &uart0;
+		spi0 = &spi0;
 	};
 
 	chosen {
@@ -278,6 +279,18 @@
 	vcc-pm-supply = <&reg_aldo1>;
 };
 
+&spi0 {
+	pinctrl-0 = <&spi0_pins>, <&spi0_cs_pin>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	flash@0 {
+		compatible = "winbond,w25q128", "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <4000000>;
+	};
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_ph_pins>;
-- 
2.17.1

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* [PATCH 2/2] arm64: dts: allwinner: h6: Pine H64: Add SPI flash node
@ 2020-01-08 10:10   ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 10:10 UTC (permalink / raw)
  To: Maxime Ripard, Chen-Yu Tsai
  Cc: Mark Rutland, devicetree, Rob Herring, linux-spi, linux-sunxi,
	Mark Brown, Icenowy Zheng, linux-arm-kernel

The Pine H64 board comes with SPI flash soldered on the board, connected
to the SPI0 pins (so it can also boot from there).

Add the required DT node to make the flash accessible from Linux.

Signed-off-by: Andre Przywara <andre.przywara@arm.com>
---
 .../arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts | 13 +++++++++++++
 1 file changed, 13 insertions(+)

diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
index d1c2aa5b3a20..a72f605a3a64 100644
--- a/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
+++ b/arch/arm64/boot/dts/allwinner/sun50i-h6-pine-h64.dts
@@ -14,6 +14,7 @@
 	aliases {
 		ethernet0 = &emac;
 		serial0 = &uart0;
+		spi0 = &spi0;
 	};
 
 	chosen {
@@ -278,6 +279,18 @@
 	vcc-pm-supply = <&reg_aldo1>;
 };
 
+&spi0 {
+	pinctrl-0 = <&spi0_pins>, <&spi0_cs_pin>;
+	pinctrl-names = "default";
+	status = "okay";
+
+	flash@0 {
+		compatible = "winbond,w25q128", "jedec,spi-nor";
+		reg = <0>;
+		spi-max-frequency = <4000000>;
+	};
+};
+
 &uart0 {
 	pinctrl-names = "default";
 	pinctrl-0 = <&uart0_ph_pins>;
-- 
2.17.1


_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply related	[flat|nested] 30+ messages in thread

* Re: [linux-sunxi] [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 10:45     ` Clément Péron
  0 siblings, 0 replies; 30+ messages in thread
From: Clément Péron @ 2020-01-08 10:45 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Maxime Ripard, Chen-Yu Tsai, Mark Brown, linux-spi,
	linux-arm-kernel, linux-sunxi, Icenowy Zheng, devicetree,
	Rob Herring, Mark Rutland

Hi Andre,

On Wed, 8 Jan 2020 at 11:10, Andre Przywara <andre.przywara@arm.com> wrote:
>
> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
>
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>                                 bias-pull-up;
>                         };
>
> +                       /omit-if-no-ref/
> +                       spi0_pins: spi0-pins {
> +                               pins = "PC0", "PC2", "PC3";
> +                               function = "spi0";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi0_cs_pin: spi0-cs-pin {
> +                               pins = "PC5";
> +                               function = "spi0";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi1_pins: spi1-pins {
> +                               pins = "PH4", "PH5", "PH6";
> +                               function = "spi1";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi1_cs_pin: spi1-cs-pin {
> +                               pins = "PH3";
> +                               function = "spi1";
> +                       };
> +
>                         spdif_tx_pin: spdif-tx-pin {
>                                 pins = "PH7";
>                                 function = "spdif";
> @@ -504,6 +528,36 @@
>                         #size-cells = <0>;
>                 };
>
> +               spi0: spi@5010000 {
> +                       compatible = "allwinner,sun50i-h6-spi",
> +                                    "allwinner,sun8i-h3-spi";

You need to document this compatible in the dt-bindings to avoid any warnings.

Regards,
Clement




> +                       reg = <0x05010000 0x1000>;
> +                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> +                       clock-names = "ahb", "mod";
> +                       dmas = <&dma 22>, <&dma 22>;
> +                       dma-names = "rx", "tx";
> +                       resets = <&ccu RST_BUS_SPI0>;
> +                       status = "disabled";
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
> +               spi1: spi@5011000 {
> +                       compatible = "allwinner,sun50i-h6-spi",
> +                                    "allwinner,sun8i-h3-spi";
> +                       reg = <0x05011000 0x1000>;
> +                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> +                       clock-names = "ahb", "mod";
> +                       dmas = <&dma 23>, <&dma 23>;
> +                       dma-names = "rx", "tx";
> +                       resets = <&ccu RST_BUS_SPI1>;
> +                       status = "disabled";
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
>                 emac: ethernet@5020000 {
>                         compatible = "allwinner,sun50i-h6-emac",
>                                      "allwinner,sun50i-a64-emac";
> --
> 2.17.1
>
> --
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe@googlegroups.com.
> To view this discussion on the web, visit https://groups.google.com/d/msgid/linux-sunxi/20200108101006.150706-2-andre.przywara%40arm.com.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 10:45     ` Clément Péron
  0 siblings, 0 replies; 30+ messages in thread
From: Clément Péron @ 2020-01-08 10:45 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Maxime Ripard, Chen-Yu Tsai, Mark Brown,
	linux-spi-u79uwXL29TY76Z2rM5mHXA, linux-arm-kernel, linux-sunxi,
	Icenowy Zheng, devicetree, Rob Herring, Mark Rutland

Hi Andre,

On Wed, 8 Jan 2020 at 11:10, Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org> wrote:
>
> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
>
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
>
> Signed-off-by: Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>                                 bias-pull-up;
>                         };
>
> +                       /omit-if-no-ref/
> +                       spi0_pins: spi0-pins {
> +                               pins = "PC0", "PC2", "PC3";
> +                               function = "spi0";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi0_cs_pin: spi0-cs-pin {
> +                               pins = "PC5";
> +                               function = "spi0";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi1_pins: spi1-pins {
> +                               pins = "PH4", "PH5", "PH6";
> +                               function = "spi1";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi1_cs_pin: spi1-cs-pin {
> +                               pins = "PH3";
> +                               function = "spi1";
> +                       };
> +
>                         spdif_tx_pin: spdif-tx-pin {
>                                 pins = "PH7";
>                                 function = "spdif";
> @@ -504,6 +528,36 @@
>                         #size-cells = <0>;
>                 };
>
> +               spi0: spi@5010000 {
> +                       compatible = "allwinner,sun50i-h6-spi",
> +                                    "allwinner,sun8i-h3-spi";

You need to document this compatible in the dt-bindings to avoid any warnings.

Regards,
Clement




> +                       reg = <0x05010000 0x1000>;
> +                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> +                       clock-names = "ahb", "mod";
> +                       dmas = <&dma 22>, <&dma 22>;
> +                       dma-names = "rx", "tx";
> +                       resets = <&ccu RST_BUS_SPI0>;
> +                       status = "disabled";
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
> +               spi1: spi@5011000 {
> +                       compatible = "allwinner,sun50i-h6-spi",
> +                                    "allwinner,sun8i-h3-spi";
> +                       reg = <0x05011000 0x1000>;
> +                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> +                       clock-names = "ahb", "mod";
> +                       dmas = <&dma 23>, <&dma 23>;
> +                       dma-names = "rx", "tx";
> +                       resets = <&ccu RST_BUS_SPI1>;
> +                       status = "disabled";
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
>                 emac: ethernet@5020000 {
>                         compatible = "allwinner,sun50i-h6-emac",
>                                      "allwinner,sun50i-a64-emac";
> --
> 2.17.1
>
> --
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe-/JYPxA39Uh5TLH3MbocFF+G/Ez6ZCGd0@public.gmane.org
> To view this discussion on the web, visit https://groups.google.com/d/msgid/linux-sunxi/20200108101006.150706-2-andre.przywara%40arm.com.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [linux-sunxi] [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 10:45     ` Clément Péron
  0 siblings, 0 replies; 30+ messages in thread
From: Clément Péron @ 2020-01-08 10:45 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, devicetree, Chen-Yu Tsai, Maxime Ripard, linux-spi,
	Rob Herring, linux-sunxi, Mark Brown, Icenowy Zheng,
	linux-arm-kernel

Hi Andre,

On Wed, 8 Jan 2020 at 11:10, Andre Przywara <andre.przywara@arm.com> wrote:
>
> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
>
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>                                 bias-pull-up;
>                         };
>
> +                       /omit-if-no-ref/
> +                       spi0_pins: spi0-pins {
> +                               pins = "PC0", "PC2", "PC3";
> +                               function = "spi0";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi0_cs_pin: spi0-cs-pin {
> +                               pins = "PC5";
> +                               function = "spi0";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi1_pins: spi1-pins {
> +                               pins = "PH4", "PH5", "PH6";
> +                               function = "spi1";
> +                       };
> +
> +                       /omit-if-no-ref/
> +                       spi1_cs_pin: spi1-cs-pin {
> +                               pins = "PH3";
> +                               function = "spi1";
> +                       };
> +
>                         spdif_tx_pin: spdif-tx-pin {
>                                 pins = "PH7";
>                                 function = "spdif";
> @@ -504,6 +528,36 @@
>                         #size-cells = <0>;
>                 };
>
> +               spi0: spi@5010000 {
> +                       compatible = "allwinner,sun50i-h6-spi",
> +                                    "allwinner,sun8i-h3-spi";

You need to document this compatible in the dt-bindings to avoid any warnings.

Regards,
Clement




> +                       reg = <0x05010000 0x1000>;
> +                       interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> +                       clock-names = "ahb", "mod";
> +                       dmas = <&dma 22>, <&dma 22>;
> +                       dma-names = "rx", "tx";
> +                       resets = <&ccu RST_BUS_SPI0>;
> +                       status = "disabled";
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
> +               spi1: spi@5011000 {
> +                       compatible = "allwinner,sun50i-h6-spi",
> +                                    "allwinner,sun8i-h3-spi";
> +                       reg = <0x05011000 0x1000>;
> +                       interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> +                       clock-names = "ahb", "mod";
> +                       dmas = <&dma 23>, <&dma 23>;
> +                       dma-names = "rx", "tx";
> +                       resets = <&ccu RST_BUS_SPI1>;
> +                       status = "disabled";
> +                       #address-cells = <1>;
> +                       #size-cells = <0>;
> +               };
> +
>                 emac: ethernet@5020000 {
>                         compatible = "allwinner,sun50i-h6-emac",
>                                      "allwinner,sun50i-a64-emac";
> --
> 2.17.1
>
> --
> You received this message because you are subscribed to the Google Groups "linux-sunxi" group.
> To unsubscribe from this group and stop receiving emails from it, send an email to linux-sunxi+unsubscribe@googlegroups.com.
> To view this discussion on the web, visit https://groups.google.com/d/msgid/linux-sunxi/20200108101006.150706-2-andre.przywara%40arm.com.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
  2020-01-08 10:10   ` Andre Przywara
  (?)
@ 2020-01-08 11:34     ` Emmanuel Vadot
  -1 siblings, 0 replies; 30+ messages in thread
From: Emmanuel Vadot @ 2020-01-08 11:34 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Maxime Ripard, Chen-Yu Tsai, Mark Rutland, devicetree,
	Rob Herring, linux-spi, linux-sunxi, Mark Brown, Icenowy Zheng,
	linux-arm-kernel


 Hi Andre,

On Wed,  8 Jan 2020 10:10:05 +0000
Andre Przywara <andre.przywara@arm.com> wrote:

> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
> 
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/

 That would prevent users to use an overlay and use those pins, is that
something that we want ? I'm not sure that the space saved by those are
useful.

 Cheers,

> +			spi0_pins: spi0-pins {
> +				pins = "PC0", "PC2", "PC3";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi0_cs_pin: spi0-cs-pin {
> +				pins = "PC5";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi1_pins: spi1-pins {
> +				pins = "PH4", "PH5", "PH6";
> +				function = "spi1";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi1_cs_pin: spi1-cs-pin {
> +				pins = "PH3";
> +				function = "spi1";
> +			};
> +
>  			spdif_tx_pin: spdif-tx-pin {
>  				pins = "PH7";
>  				function = "spdif";
> @@ -504,6 +528,36 @@
>  			#size-cells = <0>;
>  		};
>  
> +		spi0: spi@5010000 {
> +			compatible = "allwinner,sun50i-h6-spi",
> +				     "allwinner,sun8i-h3-spi";
> +			reg = <0x05010000 0x1000>;
> +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> +			clock-names = "ahb", "mod";
> +			dmas = <&dma 22>, <&dma 22>;
> +			dma-names = "rx", "tx";
> +			resets = <&ccu RST_BUS_SPI0>;
> +			status = "disabled";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
> +		spi1: spi@5011000 {
> +			compatible = "allwinner,sun50i-h6-spi",
> +				     "allwinner,sun8i-h3-spi";
> +			reg = <0x05011000 0x1000>;
> +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> +			clock-names = "ahb", "mod";
> +			dmas = <&dma 23>, <&dma 23>;
> +			dma-names = "rx", "tx";
> +			resets = <&ccu RST_BUS_SPI1>;
> +			status = "disabled";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
>  		emac: ethernet@5020000 {
>  			compatible = "allwinner,sun50i-h6-emac",
>  				     "allwinner,sun50i-a64-emac";
> -- 
> 2.17.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 11:34     ` Emmanuel Vadot
  0 siblings, 0 replies; 30+ messages in thread
From: Emmanuel Vadot @ 2020-01-08 11:34 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, devicetree, Mark Brown, linux-sunxi, Maxime Ripard,
	linux-spi, Chen-Yu Tsai, Rob Herring, Icenowy Zheng,
	linux-arm-kernel


 Hi Andre,

On Wed,  8 Jan 2020 10:10:05 +0000
Andre Przywara <andre.przywara@arm.com> wrote:

> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
> 
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/

 That would prevent users to use an overlay and use those pins, is that
something that we want ? I'm not sure that the space saved by those are
useful.

 Cheers,

> +			spi0_pins: spi0-pins {
> +				pins = "PC0", "PC2", "PC3";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi0_cs_pin: spi0-cs-pin {
> +				pins = "PC5";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi1_pins: spi1-pins {
> +				pins = "PH4", "PH5", "PH6";
> +				function = "spi1";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi1_cs_pin: spi1-cs-pin {
> +				pins = "PH3";
> +				function = "spi1";
> +			};
> +
>  			spdif_tx_pin: spdif-tx-pin {
>  				pins = "PH7";
>  				function = "spdif";
> @@ -504,6 +528,36 @@
>  			#size-cells = <0>;
>  		};
>  
> +		spi0: spi@5010000 {
> +			compatible = "allwinner,sun50i-h6-spi",
> +				     "allwinner,sun8i-h3-spi";
> +			reg = <0x05010000 0x1000>;
> +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> +			clock-names = "ahb", "mod";
> +			dmas = <&dma 22>, <&dma 22>;
> +			dma-names = "rx", "tx";
> +			resets = <&ccu RST_BUS_SPI0>;
> +			status = "disabled";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
> +		spi1: spi@5011000 {
> +			compatible = "allwinner,sun50i-h6-spi",
> +				     "allwinner,sun8i-h3-spi";
> +			reg = <0x05011000 0x1000>;
> +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> +			clock-names = "ahb", "mod";
> +			dmas = <&dma 23>, <&dma 23>;
> +			dma-names = "rx", "tx";
> +			resets = <&ccu RST_BUS_SPI1>;
> +			status = "disabled";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
>  		emac: ethernet@5020000 {
>  			compatible = "allwinner,sun50i-h6-emac",
>  				     "allwinner,sun50i-a64-emac";
> -- 
> 2.17.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 11:34     ` Emmanuel Vadot
  0 siblings, 0 replies; 30+ messages in thread
From: Emmanuel Vadot @ 2020-01-08 11:34 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, devicetree, Mark Brown, linux-sunxi, Maxime Ripard,
	linux-spi, Chen-Yu Tsai, Rob Herring, Icenowy Zheng,
	linux-arm-kernel


 Hi Andre,

On Wed,  8 Jan 2020 10:10:05 +0000
Andre Przywara <andre.przywara@arm.com> wrote:

> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
> 
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
> 
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
> 
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>  				bias-pull-up;
>  			};
>  
> +			/omit-if-no-ref/

 That would prevent users to use an overlay and use those pins, is that
something that we want ? I'm not sure that the space saved by those are
useful.

 Cheers,

> +			spi0_pins: spi0-pins {
> +				pins = "PC0", "PC2", "PC3";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi0_cs_pin: spi0-cs-pin {
> +				pins = "PC5";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi1_pins: spi1-pins {
> +				pins = "PH4", "PH5", "PH6";
> +				function = "spi1";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi1_cs_pin: spi1-cs-pin {
> +				pins = "PH3";
> +				function = "spi1";
> +			};
> +
>  			spdif_tx_pin: spdif-tx-pin {
>  				pins = "PH7";
>  				function = "spdif";
> @@ -504,6 +528,36 @@
>  			#size-cells = <0>;
>  		};
>  
> +		spi0: spi@5010000 {
> +			compatible = "allwinner,sun50i-h6-spi",
> +				     "allwinner,sun8i-h3-spi";
> +			reg = <0x05010000 0x1000>;
> +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> +			clock-names = "ahb", "mod";
> +			dmas = <&dma 22>, <&dma 22>;
> +			dma-names = "rx", "tx";
> +			resets = <&ccu RST_BUS_SPI0>;
> +			status = "disabled";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
> +		spi1: spi@5011000 {
> +			compatible = "allwinner,sun50i-h6-spi",
> +				     "allwinner,sun8i-h3-spi";
> +			reg = <0x05011000 0x1000>;
> +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> +			clock-names = "ahb", "mod";
> +			dmas = <&dma 23>, <&dma 23>;
> +			dma-names = "rx", "tx";
> +			resets = <&ccu RST_BUS_SPI1>;
> +			status = "disabled";
> +			#address-cells = <1>;
> +			#size-cells = <0>;
> +		};
> +
>  		emac: ethernet@5020000 {
>  			compatible = "allwinner,sun50i-h6-emac",
>  				     "allwinner,sun50i-a64-emac";
> -- 
> 2.17.1
> 
> 
> _______________________________________________
> linux-arm-kernel mailing list
> linux-arm-kernel@lists.infradead.org
> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 11:47       ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 11:47 UTC (permalink / raw)
  To: Emmanuel Vadot
  Cc: Maxime Ripard, Chen-Yu Tsai, Mark Rutland, devicetree,
	Rob Herring, linux-spi, linux-sunxi, Mark Brown, Icenowy Zheng,
	linux-arm-kernel

On Wed, 8 Jan 2020 12:34:48 +0100
Emmanuel Vadot <manu@bidouilliste.com> wrote:

Hi Emmanuel,

> On Wed,  8 Jan 2020 10:10:05 +0000
> Andre Przywara <andre.przywara@arm.com> wrote:
> 
> > The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> > but with the added capability of 3-wire and 4-wire operation modes.
> > For now the driver does not support those, but the SPI registers are
> > fully backwards-compatible, just adding bits and registers which were
> > formerly reserved. So we can use the existing driver for the "normal" SPI
> > modes, for instance to access the SPI NOR flash soldered on the PineH64
> > board.
> > We use an H6 specific compatible string in addition to the existing H3
> > string, so when the driver later gains Quad SPI support, it should work
> > automatically without any DT changes.
> > 
> > Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> > connecting another SPI flash to the SPI1 header pins.
> > 
> > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > ---
> >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> >  1 file changed, 54 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > index 3329283e38ab..40835850893e 100644
> > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > @@ -338,6 +338,30 @@
> >  				bias-pull-up;
> >  			};
> >  
> > +			/omit-if-no-ref/  
> 
>  That would prevent users to use an overlay and use those pins, is that
> something that we want ? I'm not sure that the space saved by those are
> useful.

Me neither ;-), but Maxime asked for it before, and it doesn't really hurt.

For overlays: if a .dtb is compiled with support for overlays (-@ to generate symbols), this tag is ignored, and the nodes stay in the .dtb, regardless of being referenced or not. Just confirmed by trying this.

Cheers,
Andre.

> 
>  Cheers,
> 
> > +			spi0_pins: spi0-pins {
> > +				pins = "PC0", "PC2", "PC3";
> > +				function = "spi0";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi0_cs_pin: spi0-cs-pin {
> > +				pins = "PC5";
> > +				function = "spi0";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi1_pins: spi1-pins {
> > +				pins = "PH4", "PH5", "PH6";
> > +				function = "spi1";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi1_cs_pin: spi1-cs-pin {
> > +				pins = "PH3";
> > +				function = "spi1";
> > +			};
> > +
> >  			spdif_tx_pin: spdif-tx-pin {
> >  				pins = "PH7";
> >  				function = "spdif";
> > @@ -504,6 +528,36 @@
> >  			#size-cells = <0>;
> >  		};
> >  
> > +		spi0: spi@5010000 {
> > +			compatible = "allwinner,sun50i-h6-spi",
> > +				     "allwinner,sun8i-h3-spi";
> > +			reg = <0x05010000 0x1000>;
> > +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> > +			clock-names = "ahb", "mod";
> > +			dmas = <&dma 22>, <&dma 22>;
> > +			dma-names = "rx", "tx";
> > +			resets = <&ccu RST_BUS_SPI0>;
> > +			status = "disabled";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +		};
> > +
> > +		spi1: spi@5011000 {
> > +			compatible = "allwinner,sun50i-h6-spi",
> > +				     "allwinner,sun8i-h3-spi";
> > +			reg = <0x05011000 0x1000>;
> > +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> > +			clock-names = "ahb", "mod";
> > +			dmas = <&dma 23>, <&dma 23>;
> > +			dma-names = "rx", "tx";
> > +			resets = <&ccu RST_BUS_SPI1>;
> > +			status = "disabled";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +		};
> > +
> >  		emac: ethernet@5020000 {
> >  			compatible = "allwinner,sun50i-h6-emac",
> >  				     "allwinner,sun50i-a64-emac";
> > -- 
> > 2.17.1

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 11:47       ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 11:47 UTC (permalink / raw)
  To: Emmanuel Vadot
  Cc: Maxime Ripard, Chen-Yu Tsai, Mark Rutland,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring,
	linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Mark Brown, Icenowy Zheng,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r

On Wed, 8 Jan 2020 12:34:48 +0100
Emmanuel Vadot <manu-xXdDKFdH5B3kFDPD4ZthVA@public.gmane.org> wrote:

Hi Emmanuel,

> On Wed,  8 Jan 2020 10:10:05 +0000
> Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org> wrote:
> 
> > The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> > but with the added capability of 3-wire and 4-wire operation modes.
> > For now the driver does not support those, but the SPI registers are
> > fully backwards-compatible, just adding bits and registers which were
> > formerly reserved. So we can use the existing driver for the "normal" SPI
> > modes, for instance to access the SPI NOR flash soldered on the PineH64
> > board.
> > We use an H6 specific compatible string in addition to the existing H3
> > string, so when the driver later gains Quad SPI support, it should work
> > automatically without any DT changes.
> > 
> > Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> > connecting another SPI flash to the SPI1 header pins.
> > 
> > Signed-off-by: Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org>
> > ---
> >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> >  1 file changed, 54 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > index 3329283e38ab..40835850893e 100644
> > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > @@ -338,6 +338,30 @@
> >  				bias-pull-up;
> >  			};
> >  
> > +			/omit-if-no-ref/  
> 
>  That would prevent users to use an overlay and use those pins, is that
> something that we want ? I'm not sure that the space saved by those are
> useful.

Me neither ;-), but Maxime asked for it before, and it doesn't really hurt.

For overlays: if a .dtb is compiled with support for overlays (-@ to generate symbols), this tag is ignored, and the nodes stay in the .dtb, regardless of being referenced or not. Just confirmed by trying this.

Cheers,
Andre.

> 
>  Cheers,
> 
> > +			spi0_pins: spi0-pins {
> > +				pins = "PC0", "PC2", "PC3";
> > +				function = "spi0";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi0_cs_pin: spi0-cs-pin {
> > +				pins = "PC5";
> > +				function = "spi0";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi1_pins: spi1-pins {
> > +				pins = "PH4", "PH5", "PH6";
> > +				function = "spi1";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi1_cs_pin: spi1-cs-pin {
> > +				pins = "PH3";
> > +				function = "spi1";
> > +			};
> > +
> >  			spdif_tx_pin: spdif-tx-pin {
> >  				pins = "PH7";
> >  				function = "spdif";
> > @@ -504,6 +528,36 @@
> >  			#size-cells = <0>;
> >  		};
> >  
> > +		spi0: spi@5010000 {
> > +			compatible = "allwinner,sun50i-h6-spi",
> > +				     "allwinner,sun8i-h3-spi";
> > +			reg = <0x05010000 0x1000>;
> > +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> > +			clock-names = "ahb", "mod";
> > +			dmas = <&dma 22>, <&dma 22>;
> > +			dma-names = "rx", "tx";
> > +			resets = <&ccu RST_BUS_SPI0>;
> > +			status = "disabled";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +		};
> > +
> > +		spi1: spi@5011000 {
> > +			compatible = "allwinner,sun50i-h6-spi",
> > +				     "allwinner,sun8i-h3-spi";
> > +			reg = <0x05011000 0x1000>;
> > +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> > +			clock-names = "ahb", "mod";
> > +			dmas = <&dma 23>, <&dma 23>;
> > +			dma-names = "rx", "tx";
> > +			resets = <&ccu RST_BUS_SPI1>;
> > +			status = "disabled";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +		};
> > +
> >  		emac: ethernet@5020000 {
> >  			compatible = "allwinner,sun50i-h6-emac",
> >  				     "allwinner,sun50i-a64-emac";
> > -- 
> > 2.17.1

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 11:47       ` Andre Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: Andre Przywara @ 2020-01-08 11:47 UTC (permalink / raw)
  To: Emmanuel Vadot
  Cc: Mark Rutland, devicetree, Mark Brown, linux-sunxi, Maxime Ripard,
	linux-spi, Chen-Yu Tsai, Rob Herring, Icenowy Zheng,
	linux-arm-kernel

On Wed, 8 Jan 2020 12:34:48 +0100
Emmanuel Vadot <manu@bidouilliste.com> wrote:

Hi Emmanuel,

> On Wed,  8 Jan 2020 10:10:05 +0000
> Andre Przywara <andre.przywara@arm.com> wrote:
> 
> > The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> > but with the added capability of 3-wire and 4-wire operation modes.
> > For now the driver does not support those, but the SPI registers are
> > fully backwards-compatible, just adding bits and registers which were
> > formerly reserved. So we can use the existing driver for the "normal" SPI
> > modes, for instance to access the SPI NOR flash soldered on the PineH64
> > board.
> > We use an H6 specific compatible string in addition to the existing H3
> > string, so when the driver later gains Quad SPI support, it should work
> > automatically without any DT changes.
> > 
> > Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> > connecting another SPI flash to the SPI1 header pins.
> > 
> > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > ---
> >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> >  1 file changed, 54 insertions(+)
> > 
> > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > index 3329283e38ab..40835850893e 100644
> > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > @@ -338,6 +338,30 @@
> >  				bias-pull-up;
> >  			};
> >  
> > +			/omit-if-no-ref/  
> 
>  That would prevent users to use an overlay and use those pins, is that
> something that we want ? I'm not sure that the space saved by those are
> useful.

Me neither ;-), but Maxime asked for it before, and it doesn't really hurt.

For overlays: if a .dtb is compiled with support for overlays (-@ to generate symbols), this tag is ignored, and the nodes stay in the .dtb, regardless of being referenced or not. Just confirmed by trying this.

Cheers,
Andre.

> 
>  Cheers,
> 
> > +			spi0_pins: spi0-pins {
> > +				pins = "PC0", "PC2", "PC3";
> > +				function = "spi0";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi0_cs_pin: spi0-cs-pin {
> > +				pins = "PC5";
> > +				function = "spi0";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi1_pins: spi1-pins {
> > +				pins = "PH4", "PH5", "PH6";
> > +				function = "spi1";
> > +			};
> > +
> > +			/omit-if-no-ref/
> > +			spi1_cs_pin: spi1-cs-pin {
> > +				pins = "PH3";
> > +				function = "spi1";
> > +			};
> > +
> >  			spdif_tx_pin: spdif-tx-pin {
> >  				pins = "PH7";
> >  				function = "spdif";
> > @@ -504,6 +528,36 @@
> >  			#size-cells = <0>;
> >  		};
> >  
> > +		spi0: spi@5010000 {
> > +			compatible = "allwinner,sun50i-h6-spi",
> > +				     "allwinner,sun8i-h3-spi";
> > +			reg = <0x05010000 0x1000>;
> > +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> > +			clock-names = "ahb", "mod";
> > +			dmas = <&dma 22>, <&dma 22>;
> > +			dma-names = "rx", "tx";
> > +			resets = <&ccu RST_BUS_SPI0>;
> > +			status = "disabled";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +		};
> > +
> > +		spi1: spi@5011000 {
> > +			compatible = "allwinner,sun50i-h6-spi",
> > +				     "allwinner,sun8i-h3-spi";
> > +			reg = <0x05011000 0x1000>;
> > +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> > +			clock-names = "ahb", "mod";
> > +			dmas = <&dma 23>, <&dma 23>;
> > +			dma-names = "rx", "tx";
> > +			resets = <&ccu RST_BUS_SPI1>;
> > +			status = "disabled";
> > +			#address-cells = <1>;
> > +			#size-cells = <0>;
> > +		};
> > +
> >  		emac: ethernet@5020000 {
> >  			compatible = "allwinner,sun50i-h6-emac",
> >  				     "allwinner,sun50i-a64-emac";
> > -- 
> > 2.17.1

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
  2020-01-08 11:47       ` Andre Przywara
  (?)
@ 2020-01-08 14:32         ` Emmanuel Vadot
  -1 siblings, 0 replies; 30+ messages in thread
From: Emmanuel Vadot @ 2020-01-08 14:32 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Maxime Ripard, Chen-Yu Tsai, Mark Rutland, devicetree,
	Rob Herring, linux-spi, linux-sunxi, Mark Brown, Icenowy Zheng,
	linux-arm-kernel

On Wed, 8 Jan 2020 11:47:06 +0000
Andre Przywara <andre.przywara@arm.com> wrote:

> On Wed, 8 Jan 2020 12:34:48 +0100
> Emmanuel Vadot <manu@bidouilliste.com> wrote:
> 
> Hi Emmanuel,
> 
> > On Wed,  8 Jan 2020 10:10:05 +0000
> > Andre Przywara <andre.przywara@arm.com> wrote:
> > 
> > > The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> > > but with the added capability of 3-wire and 4-wire operation modes.
> > > For now the driver does not support those, but the SPI registers are
> > > fully backwards-compatible, just adding bits and registers which were
> > > formerly reserved. So we can use the existing driver for the "normal" SPI
> > > modes, for instance to access the SPI NOR flash soldered on the PineH64
> > > board.
> > > We use an H6 specific compatible string in addition to the existing H3
> > > string, so when the driver later gains Quad SPI support, it should work
> > > automatically without any DT changes.
> > > 
> > > Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> > > connecting another SPI flash to the SPI1 header pins.
> > > 
> > > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > > ---
> > >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> > >  1 file changed, 54 insertions(+)
> > > 
> > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > index 3329283e38ab..40835850893e 100644
> > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > @@ -338,6 +338,30 @@
> > >  				bias-pull-up;
> > >  			};
> > >  
> > > +			/omit-if-no-ref/  
> > 
> >  That would prevent users to use an overlay and use those pins, is that
> > something that we want ? I'm not sure that the space saved by those are
> > useful.
> 
> Me neither ;-), but Maxime asked for it before, and it doesn't really hurt.
> 
> For overlays: if a .dtb is compiled with support for overlays (-@ to generate symbols), this tag is ignored, and the nodes stay in the .dtb, regardless of being referenced or not. Just confirmed by trying this.

 Oh I didn't knew that (and didn't tried before sending my mail
sorry :P), then it's good for me leaving them :)

 Thanks,

> Cheers,
> Andre.
> 
> > 
> >  Cheers,
> > 
> > > +			spi0_pins: spi0-pins {
> > > +				pins = "PC0", "PC2", "PC3";
> > > +				function = "spi0";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi0_cs_pin: spi0-cs-pin {
> > > +				pins = "PC5";
> > > +				function = "spi0";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi1_pins: spi1-pins {
> > > +				pins = "PH4", "PH5", "PH6";
> > > +				function = "spi1";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi1_cs_pin: spi1-cs-pin {
> > > +				pins = "PH3";
> > > +				function = "spi1";
> > > +			};
> > > +
> > >  			spdif_tx_pin: spdif-tx-pin {
> > >  				pins = "PH7";
> > >  				function = "spdif";
> > > @@ -504,6 +528,36 @@
> > >  			#size-cells = <0>;
> > >  		};
> > >  
> > > +		spi0: spi@5010000 {
> > > +			compatible = "allwinner,sun50i-h6-spi",
> > > +				     "allwinner,sun8i-h3-spi";
> > > +			reg = <0x05010000 0x1000>;
> > > +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > > +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> > > +			clock-names = "ahb", "mod";
> > > +			dmas = <&dma 22>, <&dma 22>;
> > > +			dma-names = "rx", "tx";
> > > +			resets = <&ccu RST_BUS_SPI0>;
> > > +			status = "disabled";
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +		};
> > > +
> > > +		spi1: spi@5011000 {
> > > +			compatible = "allwinner,sun50i-h6-spi",
> > > +				     "allwinner,sun8i-h3-spi";
> > > +			reg = <0x05011000 0x1000>;
> > > +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > > +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> > > +			clock-names = "ahb", "mod";
> > > +			dmas = <&dma 23>, <&dma 23>;
> > > +			dma-names = "rx", "tx";
> > > +			resets = <&ccu RST_BUS_SPI1>;
> > > +			status = "disabled";
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +		};
> > > +
> > >  		emac: ethernet@5020000 {
> > >  			compatible = "allwinner,sun50i-h6-emac",
> > >  				     "allwinner,sun50i-a64-emac";
> > > -- 
> > > 2.17.1


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 14:32         ` Emmanuel Vadot
  0 siblings, 0 replies; 30+ messages in thread
From: Emmanuel Vadot @ 2020-01-08 14:32 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, devicetree, Mark Brown, linux-sunxi, Maxime Ripard,
	linux-spi, Chen-Yu Tsai, Rob Herring, Icenowy Zheng,
	linux-arm-kernel

On Wed, 8 Jan 2020 11:47:06 +0000
Andre Przywara <andre.przywara@arm.com> wrote:

> On Wed, 8 Jan 2020 12:34:48 +0100
> Emmanuel Vadot <manu@bidouilliste.com> wrote:
> 
> Hi Emmanuel,
> 
> > On Wed,  8 Jan 2020 10:10:05 +0000
> > Andre Przywara <andre.przywara@arm.com> wrote:
> > 
> > > The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> > > but with the added capability of 3-wire and 4-wire operation modes.
> > > For now the driver does not support those, but the SPI registers are
> > > fully backwards-compatible, just adding bits and registers which were
> > > formerly reserved. So we can use the existing driver for the "normal" SPI
> > > modes, for instance to access the SPI NOR flash soldered on the PineH64
> > > board.
> > > We use an H6 specific compatible string in addition to the existing H3
> > > string, so when the driver later gains Quad SPI support, it should work
> > > automatically without any DT changes.
> > > 
> > > Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> > > connecting another SPI flash to the SPI1 header pins.
> > > 
> > > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > > ---
> > >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> > >  1 file changed, 54 insertions(+)
> > > 
> > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > index 3329283e38ab..40835850893e 100644
> > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > @@ -338,6 +338,30 @@
> > >  				bias-pull-up;
> > >  			};
> > >  
> > > +			/omit-if-no-ref/  
> > 
> >  That would prevent users to use an overlay and use those pins, is that
> > something that we want ? I'm not sure that the space saved by those are
> > useful.
> 
> Me neither ;-), but Maxime asked for it before, and it doesn't really hurt.
> 
> For overlays: if a .dtb is compiled with support for overlays (-@ to generate symbols), this tag is ignored, and the nodes stay in the .dtb, regardless of being referenced or not. Just confirmed by trying this.

 Oh I didn't knew that (and didn't tried before sending my mail
sorry :P), then it's good for me leaving them :)

 Thanks,

> Cheers,
> Andre.
> 
> > 
> >  Cheers,
> > 
> > > +			spi0_pins: spi0-pins {
> > > +				pins = "PC0", "PC2", "PC3";
> > > +				function = "spi0";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi0_cs_pin: spi0-cs-pin {
> > > +				pins = "PC5";
> > > +				function = "spi0";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi1_pins: spi1-pins {
> > > +				pins = "PH4", "PH5", "PH6";
> > > +				function = "spi1";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi1_cs_pin: spi1-cs-pin {
> > > +				pins = "PH3";
> > > +				function = "spi1";
> > > +			};
> > > +
> > >  			spdif_tx_pin: spdif-tx-pin {
> > >  				pins = "PH7";
> > >  				function = "spdif";
> > > @@ -504,6 +528,36 @@
> > >  			#size-cells = <0>;
> > >  		};
> > >  
> > > +		spi0: spi@5010000 {
> > > +			compatible = "allwinner,sun50i-h6-spi",
> > > +				     "allwinner,sun8i-h3-spi";
> > > +			reg = <0x05010000 0x1000>;
> > > +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > > +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> > > +			clock-names = "ahb", "mod";
> > > +			dmas = <&dma 22>, <&dma 22>;
> > > +			dma-names = "rx", "tx";
> > > +			resets = <&ccu RST_BUS_SPI0>;
> > > +			status = "disabled";
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +		};
> > > +
> > > +		spi1: spi@5011000 {
> > > +			compatible = "allwinner,sun50i-h6-spi",
> > > +				     "allwinner,sun8i-h3-spi";
> > > +			reg = <0x05011000 0x1000>;
> > > +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > > +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> > > +			clock-names = "ahb", "mod";
> > > +			dmas = <&dma 23>, <&dma 23>;
> > > +			dma-names = "rx", "tx";
> > > +			resets = <&ccu RST_BUS_SPI1>;
> > > +			status = "disabled";
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +		};
> > > +
> > >  		emac: ethernet@5020000 {
> > >  			compatible = "allwinner,sun50i-h6-emac",
> > >  				     "allwinner,sun50i-a64-emac";
> > > -- 
> > > 2.17.1


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-08 14:32         ` Emmanuel Vadot
  0 siblings, 0 replies; 30+ messages in thread
From: Emmanuel Vadot @ 2020-01-08 14:32 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, devicetree, Mark Brown, linux-sunxi, Maxime Ripard,
	linux-spi, Chen-Yu Tsai, Rob Herring, Icenowy Zheng,
	linux-arm-kernel

On Wed, 8 Jan 2020 11:47:06 +0000
Andre Przywara <andre.przywara@arm.com> wrote:

> On Wed, 8 Jan 2020 12:34:48 +0100
> Emmanuel Vadot <manu@bidouilliste.com> wrote:
> 
> Hi Emmanuel,
> 
> > On Wed,  8 Jan 2020 10:10:05 +0000
> > Andre Przywara <andre.przywara@arm.com> wrote:
> > 
> > > The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> > > but with the added capability of 3-wire and 4-wire operation modes.
> > > For now the driver does not support those, but the SPI registers are
> > > fully backwards-compatible, just adding bits and registers which were
> > > formerly reserved. So we can use the existing driver for the "normal" SPI
> > > modes, for instance to access the SPI NOR flash soldered on the PineH64
> > > board.
> > > We use an H6 specific compatible string in addition to the existing H3
> > > string, so when the driver later gains Quad SPI support, it should work
> > > automatically without any DT changes.
> > > 
> > > Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> > > connecting another SPI flash to the SPI1 header pins.
> > > 
> > > Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> > > ---
> > >  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> > >  1 file changed, 54 insertions(+)
> > > 
> > > diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > index 3329283e38ab..40835850893e 100644
> > > --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> > > @@ -338,6 +338,30 @@
> > >  				bias-pull-up;
> > >  			};
> > >  
> > > +			/omit-if-no-ref/  
> > 
> >  That would prevent users to use an overlay and use those pins, is that
> > something that we want ? I'm not sure that the space saved by those are
> > useful.
> 
> Me neither ;-), but Maxime asked for it before, and it doesn't really hurt.
> 
> For overlays: if a .dtb is compiled with support for overlays (-@ to generate symbols), this tag is ignored, and the nodes stay in the .dtb, regardless of being referenced or not. Just confirmed by trying this.

 Oh I didn't knew that (and didn't tried before sending my mail
sorry :P), then it's good for me leaving them :)

 Thanks,

> Cheers,
> Andre.
> 
> > 
> >  Cheers,
> > 
> > > +			spi0_pins: spi0-pins {
> > > +				pins = "PC0", "PC2", "PC3";
> > > +				function = "spi0";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi0_cs_pin: spi0-cs-pin {
> > > +				pins = "PC5";
> > > +				function = "spi0";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi1_pins: spi1-pins {
> > > +				pins = "PH4", "PH5", "PH6";
> > > +				function = "spi1";
> > > +			};
> > > +
> > > +			/omit-if-no-ref/
> > > +			spi1_cs_pin: spi1-cs-pin {
> > > +				pins = "PH3";
> > > +				function = "spi1";
> > > +			};
> > > +
> > >  			spdif_tx_pin: spdif-tx-pin {
> > >  				pins = "PH7";
> > >  				function = "spdif";
> > > @@ -504,6 +528,36 @@
> > >  			#size-cells = <0>;
> > >  		};
> > >  
> > > +		spi0: spi@5010000 {
> > > +			compatible = "allwinner,sun50i-h6-spi",
> > > +				     "allwinner,sun8i-h3-spi";
> > > +			reg = <0x05010000 0x1000>;
> > > +			interrupts = <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
> > > +			clocks = <&ccu CLK_BUS_SPI0>, <&ccu CLK_SPI0>;
> > > +			clock-names = "ahb", "mod";
> > > +			dmas = <&dma 22>, <&dma 22>;
> > > +			dma-names = "rx", "tx";
> > > +			resets = <&ccu RST_BUS_SPI0>;
> > > +			status = "disabled";
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +		};
> > > +
> > > +		spi1: spi@5011000 {
> > > +			compatible = "allwinner,sun50i-h6-spi",
> > > +				     "allwinner,sun8i-h3-spi";
> > > +			reg = <0x05011000 0x1000>;
> > > +			interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
> > > +			clocks = <&ccu CLK_BUS_SPI1>, <&ccu CLK_SPI1>;
> > > +			clock-names = "ahb", "mod";
> > > +			dmas = <&dma 23>, <&dma 23>;
> > > +			dma-names = "rx", "tx";
> > > +			resets = <&ccu RST_BUS_SPI1>;
> > > +			status = "disabled";
> > > +			#address-cells = <1>;
> > > +			#size-cells = <0>;
> > > +		};
> > > +
> > >  		emac: ethernet@5020000 {
> > >  			compatible = "allwinner,sun50i-h6-emac",
> > >  				     "allwinner,sun50i-a64-emac";
> > > -- 
> > > 2.17.1


-- 
Emmanuel Vadot <manu@bidouilliste.com> <manu@freebsd.org>

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-11 17:26     ` Maxime Ripard
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Ripard @ 2020-01-11 17:26 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Chen-Yu Tsai, Mark Brown, linux-spi, linux-arm-kernel,
	linux-sunxi, Icenowy Zheng, devicetree, Rob Herring,
	Mark Rutland

On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
>
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>  				bias-pull-up;
>  			};
>
> +			/omit-if-no-ref/
> +			spi0_pins: spi0-pins {
> +				pins = "PC0", "PC2", "PC3";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi0_cs_pin: spi0-cs-pin {
> +				pins = "PC5";
> +				function = "spi0";
> +			};

It seems suspicious to use it in the Pine H64, since PC5 is also used
by the eMMC (and this prevents either the SPI or the emmc controller
to probe, depending on which probed first).

Maxime

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-11 17:26     ` Maxime Ripard
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Ripard @ 2020-01-11 17:26 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Chen-Yu Tsai, Mark Brown, linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Icenowy Zheng,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland

On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
>
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
>
> Signed-off-by: Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>  				bias-pull-up;
>  			};
>
> +			/omit-if-no-ref/
> +			spi0_pins: spi0-pins {
> +				pins = "PC0", "PC2", "PC3";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi0_cs_pin: spi0-cs-pin {
> +				pins = "PC5";
> +				function = "spi0";
> +			};

It seems suspicious to use it in the Pine H64, since PC5 is also used
by the eMMC (and this prevents either the SPI or the emmc controller
to probe, depending on which probed first).

Maxime

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-11 17:26     ` Maxime Ripard
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Ripard @ 2020-01-11 17:26 UTC (permalink / raw)
  To: Andre Przywara
  Cc: Mark Rutland, devicetree, linux-sunxi, Rob Herring, linux-spi,
	Chen-Yu Tsai, Mark Brown, Icenowy Zheng, linux-arm-kernel

On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> but with the added capability of 3-wire and 4-wire operation modes.
> For now the driver does not support those, but the SPI registers are
> fully backwards-compatible, just adding bits and registers which were
> formerly reserved. So we can use the existing driver for the "normal" SPI
> modes, for instance to access the SPI NOR flash soldered on the PineH64
> board.
> We use an H6 specific compatible string in addition to the existing H3
> string, so when the driver later gains Quad SPI support, it should work
> automatically without any DT changes.
>
> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> connecting another SPI flash to the SPI1 header pins.
>
> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> ---
>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>  1 file changed, 54 insertions(+)
>
> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> index 3329283e38ab..40835850893e 100644
> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> @@ -338,6 +338,30 @@
>  				bias-pull-up;
>  			};
>
> +			/omit-if-no-ref/
> +			spi0_pins: spi0-pins {
> +				pins = "PC0", "PC2", "PC3";
> +				function = "spi0";
> +			};
> +
> +			/omit-if-no-ref/
> +			spi0_cs_pin: spi0-cs-pin {
> +				pins = "PC5";
> +				function = "spi0";
> +			};

It seems suspicious to use it in the Pine H64, since PC5 is also used
by the eMMC (and this prevents either the SPI or the emmc controller
to probe, depending on which probed first).

Maxime

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-12 15:12       ` André Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: André Przywara @ 2020-01-12 15:12 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Chen-Yu Tsai, Mark Brown, linux-spi, linux-arm-kernel,
	linux-sunxi, Icenowy Zheng, devicetree, Rob Herring,
	Mark Rutland

On 11/01/2020 17:26, Maxime Ripard wrote:

Hi Maxime,

> On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
>> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
>> but with the added capability of 3-wire and 4-wire operation modes.
>> For now the driver does not support those, but the SPI registers are
>> fully backwards-compatible, just adding bits and registers which were
>> formerly reserved. So we can use the existing driver for the "normal" SPI
>> modes, for instance to access the SPI NOR flash soldered on the PineH64
>> board.
>> We use an H6 specific compatible string in addition to the existing H3
>> string, so when the driver later gains Quad SPI support, it should work
>> automatically without any DT changes.
>>
>> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
>> connecting another SPI flash to the SPI1 header pins.
>>
>> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
>> ---
>>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>>  1 file changed, 54 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> index 3329283e38ab..40835850893e 100644
>> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> @@ -338,6 +338,30 @@
>>  				bias-pull-up;
>>  			};
>>
>> +			/omit-if-no-ref/
>> +			spi0_pins: spi0-pins {
>> +				pins = "PC0", "PC2", "PC3";
>> +				function = "spi0";
>> +			};
>> +
>> +			/omit-if-no-ref/
>> +			spi0_cs_pin: spi0-cs-pin {
>> +				pins = "PC5";
>> +				function = "spi0";
>> +			};
> 
> It seems suspicious to use it in the Pine H64, since PC5 is also used
> by the eMMC (and this prevents either the SPI or the emmc controller
> to probe, depending on which probed first).

Argh, good catch! I saw that AW changed the pin sharing between SPI and
MMC2 slightly, but didn't actually check that they made it worse :-(
Because this time it's the MMC CMD pin affected, and not the somewhat
optional DS pin as in the A64.
So I see we can't really have both at the same time. So what about this:

We keep the SPI flash chip described as in patch 2/2 (as it's soldered
on every board), but mark it as disabled and explain this in a comment.
This way we can't access it under Linux, but keep a potential eMMC chip
accessible.

In U-Boot's DT copy we could deviate and mark it as "okay", as U-Boot
doesn't use both eMMC and SPI at the same time. I need to check whether
this works or we would need to move the pinmux setup out of the probe
routine into something later.

And we could go one step further: If U-Boot detects an eMMC connected
(it's on a socket and so optional), it changes the SPI flash status to
"disabled", to allow EFI apps and kernels using this DT to access the
eMMC - which is far more useful than the SPI flash.
Otherwise (no eMMC connected) it can stay at "okay", as there would be
no conflict.

Does this make sense?

Cheers,
Andre.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-12 15:12       ` André Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: André Przywara @ 2020-01-12 15:12 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Chen-Yu Tsai, Mark Brown, linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Icenowy Zheng,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland

On 11/01/2020 17:26, Maxime Ripard wrote:

Hi Maxime,

> On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
>> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
>> but with the added capability of 3-wire and 4-wire operation modes.
>> For now the driver does not support those, but the SPI registers are
>> fully backwards-compatible, just adding bits and registers which were
>> formerly reserved. So we can use the existing driver for the "normal" SPI
>> modes, for instance to access the SPI NOR flash soldered on the PineH64
>> board.
>> We use an H6 specific compatible string in addition to the existing H3
>> string, so when the driver later gains Quad SPI support, it should work
>> automatically without any DT changes.
>>
>> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
>> connecting another SPI flash to the SPI1 header pins.
>>
>> Signed-off-by: Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org>
>> ---
>>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>>  1 file changed, 54 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> index 3329283e38ab..40835850893e 100644
>> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> @@ -338,6 +338,30 @@
>>  				bias-pull-up;
>>  			};
>>
>> +			/omit-if-no-ref/
>> +			spi0_pins: spi0-pins {
>> +				pins = "PC0", "PC2", "PC3";
>> +				function = "spi0";
>> +			};
>> +
>> +			/omit-if-no-ref/
>> +			spi0_cs_pin: spi0-cs-pin {
>> +				pins = "PC5";
>> +				function = "spi0";
>> +			};
> 
> It seems suspicious to use it in the Pine H64, since PC5 is also used
> by the eMMC (and this prevents either the SPI or the emmc controller
> to probe, depending on which probed first).

Argh, good catch! I saw that AW changed the pin sharing between SPI and
MMC2 slightly, but didn't actually check that they made it worse :-(
Because this time it's the MMC CMD pin affected, and not the somewhat
optional DS pin as in the A64.
So I see we can't really have both at the same time. So what about this:

We keep the SPI flash chip described as in patch 2/2 (as it's soldered
on every board), but mark it as disabled and explain this in a comment.
This way we can't access it under Linux, but keep a potential eMMC chip
accessible.

In U-Boot's DT copy we could deviate and mark it as "okay", as U-Boot
doesn't use both eMMC and SPI at the same time. I need to check whether
this works or we would need to move the pinmux setup out of the probe
routine into something later.

And we could go one step further: If U-Boot detects an eMMC connected
(it's on a socket and so optional), it changes the SPI flash status to
"disabled", to allow EFI apps and kernels using this DT to access the
eMMC - which is far more useful than the SPI flash.
Otherwise (no eMMC connected) it can stay at "okay", as there would be
no conflict.

Does this make sense?

Cheers,
Andre.

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-12 15:12       ` André Przywara
  0 siblings, 0 replies; 30+ messages in thread
From: André Przywara @ 2020-01-12 15:12 UTC (permalink / raw)
  To: Maxime Ripard
  Cc: Mark Rutland, devicetree, linux-sunxi, Rob Herring, linux-spi,
	Chen-Yu Tsai, Mark Brown, Icenowy Zheng, linux-arm-kernel

On 11/01/2020 17:26, Maxime Ripard wrote:

Hi Maxime,

> On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
>> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
>> but with the added capability of 3-wire and 4-wire operation modes.
>> For now the driver does not support those, but the SPI registers are
>> fully backwards-compatible, just adding bits and registers which were
>> formerly reserved. So we can use the existing driver for the "normal" SPI
>> modes, for instance to access the SPI NOR flash soldered on the PineH64
>> board.
>> We use an H6 specific compatible string in addition to the existing H3
>> string, so when the driver later gains Quad SPI support, it should work
>> automatically without any DT changes.
>>
>> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
>> connecting another SPI flash to the SPI1 header pins.
>>
>> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
>> ---
>>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
>>  1 file changed, 54 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> index 3329283e38ab..40835850893e 100644
>> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
>> @@ -338,6 +338,30 @@
>>  				bias-pull-up;
>>  			};
>>
>> +			/omit-if-no-ref/
>> +			spi0_pins: spi0-pins {
>> +				pins = "PC0", "PC2", "PC3";
>> +				function = "spi0";
>> +			};
>> +
>> +			/omit-if-no-ref/
>> +			spi0_cs_pin: spi0-cs-pin {
>> +				pins = "PC5";
>> +				function = "spi0";
>> +			};
> 
> It seems suspicious to use it in the Pine H64, since PC5 is also used
> by the eMMC (and this prevents either the SPI or the emmc controller
> to probe, depending on which probed first).

Argh, good catch! I saw that AW changed the pin sharing between SPI and
MMC2 slightly, but didn't actually check that they made it worse :-(
Because this time it's the MMC CMD pin affected, and not the somewhat
optional DS pin as in the A64.
So I see we can't really have both at the same time. So what about this:

We keep the SPI flash chip described as in patch 2/2 (as it's soldered
on every board), but mark it as disabled and explain this in a comment.
This way we can't access it under Linux, but keep a potential eMMC chip
accessible.

In U-Boot's DT copy we could deviate and mark it as "okay", as U-Boot
doesn't use both eMMC and SPI at the same time. I need to check whether
this works or we would need to move the pinmux setup out of the probe
routine into something later.

And we could go one step further: If U-Boot detects an eMMC connected
(it's on a socket and so optional), it changes the SPI flash status to
"disabled", to allow EFI apps and kernels using this DT to access the
eMMC - which is far more useful than the SPI flash.
Otherwise (no eMMC connected) it can stay at "okay", as there would be
no conflict.

Does this make sense?

Cheers,
Andre.

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-13  8:59         ` Maxime Ripard
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Ripard @ 2020-01-13  8:59 UTC (permalink / raw)
  To: André Przywara
  Cc: Chen-Yu Tsai, Mark Brown, linux-spi, linux-arm-kernel,
	linux-sunxi, Icenowy Zheng, devicetree, Rob Herring,
	Mark Rutland

[-- Attachment #1: Type: text/plain, Size: 3316 bytes --]

On Sun, Jan 12, 2020 at 03:12:19PM +0000, André Przywara wrote:
> On 11/01/2020 17:26, Maxime Ripard wrote:
>
> Hi Maxime,
>
> > On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
> >> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> >> but with the added capability of 3-wire and 4-wire operation modes.
> >> For now the driver does not support those, but the SPI registers are
> >> fully backwards-compatible, just adding bits and registers which were
> >> formerly reserved. So we can use the existing driver for the "normal" SPI
> >> modes, for instance to access the SPI NOR flash soldered on the PineH64
> >> board.
> >> We use an H6 specific compatible string in addition to the existing H3
> >> string, so when the driver later gains Quad SPI support, it should work
> >> automatically without any DT changes.
> >>
> >> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> >> connecting another SPI flash to the SPI1 header pins.
> >>
> >> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> >> ---
> >>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> >>  1 file changed, 54 insertions(+)
> >>
> >> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> index 3329283e38ab..40835850893e 100644
> >> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> @@ -338,6 +338,30 @@
> >>  				bias-pull-up;
> >>  			};
> >>
> >> +			/omit-if-no-ref/
> >> +			spi0_pins: spi0-pins {
> >> +				pins = "PC0", "PC2", "PC3";
> >> +				function = "spi0";
> >> +			};
> >> +
> >> +			/omit-if-no-ref/
> >> +			spi0_cs_pin: spi0-cs-pin {
> >> +				pins = "PC5";
> >> +				function = "spi0";
> >> +			};
> >
> > It seems suspicious to use it in the Pine H64, since PC5 is also used
> > by the eMMC (and this prevents either the SPI or the emmc controller
> > to probe, depending on which probed first).
>
> Argh, good catch! I saw that AW changed the pin sharing between SPI and
> MMC2 slightly, but didn't actually check that they made it worse :-(
> Because this time it's the MMC CMD pin affected, and not the somewhat
> optional DS pin as in the A64.
> So I see we can't really have both at the same time. So what about this:
>
> We keep the SPI flash chip described as in patch 2/2 (as it's soldered
> on every board), but mark it as disabled and explain this in a comment.
> This way we can't access it under Linux, but keep a potential eMMC chip
> accessible.
>
> In U-Boot's DT copy we could deviate and mark it as "okay", as U-Boot
> doesn't use both eMMC and SPI at the same time. I need to check whether
> this works or we would need to move the pinmux setup out of the probe
> routine into something later.
>
> And we could go one step further: If U-Boot detects an eMMC connected
> (it's on a socket and so optional), it changes the SPI flash status to
> "disabled", to allow EFI apps and kernels using this DT to access the
> eMMC - which is far more useful than the SPI flash.
> Otherwise (no eMMC connected) it can stay at "okay", as there would be
> no conflict.
>
> Does this make sense?

It does, it seems like a good plan

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-13  8:59         ` Maxime Ripard
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Ripard @ 2020-01-13  8:59 UTC (permalink / raw)
  To: André Przywara
  Cc: Chen-Yu Tsai, Mark Brown, linux-spi-u79uwXL29TY76Z2rM5mHXA,
	linux-arm-kernel-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r,
	linux-sunxi-/JYPxA39Uh5TLH3MbocFFw, Icenowy Zheng,
	devicetree-u79uwXL29TY76Z2rM5mHXA, Rob Herring, Mark Rutland

[-- Attachment #1: Type: text/plain, Size: 3337 bytes --]

On Sun, Jan 12, 2020 at 03:12:19PM +0000, André Przywara wrote:
> On 11/01/2020 17:26, Maxime Ripard wrote:
>
> Hi Maxime,
>
> > On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
> >> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> >> but with the added capability of 3-wire and 4-wire operation modes.
> >> For now the driver does not support those, but the SPI registers are
> >> fully backwards-compatible, just adding bits and registers which were
> >> formerly reserved. So we can use the existing driver for the "normal" SPI
> >> modes, for instance to access the SPI NOR flash soldered on the PineH64
> >> board.
> >> We use an H6 specific compatible string in addition to the existing H3
> >> string, so when the driver later gains Quad SPI support, it should work
> >> automatically without any DT changes.
> >>
> >> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> >> connecting another SPI flash to the SPI1 header pins.
> >>
> >> Signed-off-by: Andre Przywara <andre.przywara-5wv7dgnIgG8@public.gmane.org>
> >> ---
> >>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> >>  1 file changed, 54 insertions(+)
> >>
> >> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> index 3329283e38ab..40835850893e 100644
> >> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> @@ -338,6 +338,30 @@
> >>  				bias-pull-up;
> >>  			};
> >>
> >> +			/omit-if-no-ref/
> >> +			spi0_pins: spi0-pins {
> >> +				pins = "PC0", "PC2", "PC3";
> >> +				function = "spi0";
> >> +			};
> >> +
> >> +			/omit-if-no-ref/
> >> +			spi0_cs_pin: spi0-cs-pin {
> >> +				pins = "PC5";
> >> +				function = "spi0";
> >> +			};
> >
> > It seems suspicious to use it in the Pine H64, since PC5 is also used
> > by the eMMC (and this prevents either the SPI or the emmc controller
> > to probe, depending on which probed first).
>
> Argh, good catch! I saw that AW changed the pin sharing between SPI and
> MMC2 slightly, but didn't actually check that they made it worse :-(
> Because this time it's the MMC CMD pin affected, and not the somewhat
> optional DS pin as in the A64.
> So I see we can't really have both at the same time. So what about this:
>
> We keep the SPI flash chip described as in patch 2/2 (as it's soldered
> on every board), but mark it as disabled and explain this in a comment.
> This way we can't access it under Linux, but keep a potential eMMC chip
> accessible.
>
> In U-Boot's DT copy we could deviate and mark it as "okay", as U-Boot
> doesn't use both eMMC and SPI at the same time. I need to check whether
> this works or we would need to move the pinmux setup out of the probe
> routine into something later.
>
> And we could go one step further: If U-Boot detects an eMMC connected
> (it's on a socket and so optional), it changes the SPI flash status to
> "disabled", to allow EFI apps and kernels using this DT to access the
> eMMC - which is far more useful than the SPI flash.
> Otherwise (no eMMC connected) it can stay at "okay", as there would be
> no conflict.
>
> Does this make sense?

It does, it seems like a good plan

Maxime

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

^ permalink raw reply	[flat|nested] 30+ messages in thread

* Re: [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes
@ 2020-01-13  8:59         ` Maxime Ripard
  0 siblings, 0 replies; 30+ messages in thread
From: Maxime Ripard @ 2020-01-13  8:59 UTC (permalink / raw)
  To: André Przywara
  Cc: Mark Rutland, devicetree, linux-sunxi, Rob Herring, linux-spi,
	Chen-Yu Tsai, Mark Brown, Icenowy Zheng, linux-arm-kernel


[-- Attachment #1.1: Type: text/plain, Size: 3316 bytes --]

On Sun, Jan 12, 2020 at 03:12:19PM +0000, André Przywara wrote:
> On 11/01/2020 17:26, Maxime Ripard wrote:
>
> Hi Maxime,
>
> > On Wed, Jan 08, 2020 at 10:10:05AM +0000, Andre Przywara wrote:
> >> The Allwinner H6 SoC contains two SPI controllers similar to the H3/A64,
> >> but with the added capability of 3-wire and 4-wire operation modes.
> >> For now the driver does not support those, but the SPI registers are
> >> fully backwards-compatible, just adding bits and registers which were
> >> formerly reserved. So we can use the existing driver for the "normal" SPI
> >> modes, for instance to access the SPI NOR flash soldered on the PineH64
> >> board.
> >> We use an H6 specific compatible string in addition to the existing H3
> >> string, so when the driver later gains Quad SPI support, it should work
> >> automatically without any DT changes.
> >>
> >> Tested by accessing the SPI flash on a Pine H64 board (SPI0), also
> >> connecting another SPI flash to the SPI1 header pins.
> >>
> >> Signed-off-by: Andre Przywara <andre.przywara@arm.com>
> >> ---
> >>  arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi | 54 ++++++++++++++++++++
> >>  1 file changed, 54 insertions(+)
> >>
> >> diff --git a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> index 3329283e38ab..40835850893e 100644
> >> --- a/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> +++ b/arch/arm64/boot/dts/allwinner/sun50i-h6.dtsi
> >> @@ -338,6 +338,30 @@
> >>  				bias-pull-up;
> >>  			};
> >>
> >> +			/omit-if-no-ref/
> >> +			spi0_pins: spi0-pins {
> >> +				pins = "PC0", "PC2", "PC3";
> >> +				function = "spi0";
> >> +			};
> >> +
> >> +			/omit-if-no-ref/
> >> +			spi0_cs_pin: spi0-cs-pin {
> >> +				pins = "PC5";
> >> +				function = "spi0";
> >> +			};
> >
> > It seems suspicious to use it in the Pine H64, since PC5 is also used
> > by the eMMC (and this prevents either the SPI or the emmc controller
> > to probe, depending on which probed first).
>
> Argh, good catch! I saw that AW changed the pin sharing between SPI and
> MMC2 slightly, but didn't actually check that they made it worse :-(
> Because this time it's the MMC CMD pin affected, and not the somewhat
> optional DS pin as in the A64.
> So I see we can't really have both at the same time. So what about this:
>
> We keep the SPI flash chip described as in patch 2/2 (as it's soldered
> on every board), but mark it as disabled and explain this in a comment.
> This way we can't access it under Linux, but keep a potential eMMC chip
> accessible.
>
> In U-Boot's DT copy we could deviate and mark it as "okay", as U-Boot
> doesn't use both eMMC and SPI at the same time. I need to check whether
> this works or we would need to move the pinmux setup out of the probe
> routine into something later.
>
> And we could go one step further: If U-Boot detects an eMMC connected
> (it's on a socket and so optional), it changes the SPI flash status to
> "disabled", to allow EFI apps and kernels using this DT to access the
> eMMC - which is far more useful than the SPI flash.
> Otherwise (no eMMC connected) it can stay at "okay", as there would be
> no conflict.
>
> Does this make sense?

It does, it seems like a good plan

Maxime

[-- Attachment #1.2: signature.asc --]
[-- Type: application/pgp-signature, Size: 228 bytes --]

[-- Attachment #2: Type: text/plain, Size: 176 bytes --]

_______________________________________________
linux-arm-kernel mailing list
linux-arm-kernel@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/linux-arm-kernel

^ permalink raw reply	[flat|nested] 30+ messages in thread

end of thread, other threads:[~2020-01-13  8:59 UTC | newest]

Thread overview: 30+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-01-08 10:10 [PATCH 0/2] arm64: dts: sun50i: H6: Enable SPI flash Andre Przywara
2020-01-08 10:10 ` Andre Przywara
2020-01-08 10:10 ` Andre Przywara
2020-01-08 10:10 ` [PATCH 1/2] arm64: dts: sun50i: H6: Add SPI controllers nodes and pinmuxes Andre Przywara
2020-01-08 10:10   ` Andre Przywara
2020-01-08 10:10   ` Andre Przywara
2020-01-08 10:45   ` [linux-sunxi] " Clément Péron
2020-01-08 10:45     ` Clément Péron
2020-01-08 10:45     ` Clément Péron
2020-01-08 11:34   ` Emmanuel Vadot
2020-01-08 11:34     ` Emmanuel Vadot
2020-01-08 11:34     ` Emmanuel Vadot
2020-01-08 11:47     ` Andre Przywara
2020-01-08 11:47       ` Andre Przywara
2020-01-08 11:47       ` Andre Przywara
2020-01-08 14:32       ` Emmanuel Vadot
2020-01-08 14:32         ` Emmanuel Vadot
2020-01-08 14:32         ` Emmanuel Vadot
2020-01-11 17:26   ` Maxime Ripard
2020-01-11 17:26     ` Maxime Ripard
2020-01-11 17:26     ` Maxime Ripard
2020-01-12 15:12     ` André Przywara
2020-01-12 15:12       ` André Przywara
2020-01-12 15:12       ` André Przywara
2020-01-13  8:59       ` Maxime Ripard
2020-01-13  8:59         ` Maxime Ripard
2020-01-13  8:59         ` Maxime Ripard
2020-01-08 10:10 ` [PATCH 2/2] arm64: dts: allwinner: h6: Pine H64: Add SPI flash node Andre Przywara
2020-01-08 10:10   ` Andre Przywara
2020-01-08 10:10   ` Andre Przywara

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.