[PATCHv2] arm: dts: socfpga: Add SPI nodes to SOCFPGA DT.
diff mbox

Message ID 1412796428-3255-1-git-send-email-tthayer@opensource.altera.com
State New, archived
Headers show

Commit Message

tthayer@opensource.altera.com Oct. 8, 2014, 7:27 p.m. UTC
From: Thor Thayer <tthayer@opensource.altera.com>

Add 2 SPI nodes to SOCFPGA device tree.

Signed-off-by: Thor Thayer <tthayer@opensource.altera.com>
---
v2: Remove extra files. Move SPIDEV into board specific file.
---
 arch/arm/boot/dts/socfpga.dtsi          |   24 ++++++++++++++++++++++++
 arch/arm/boot/dts/socfpga_cyclone5.dtsi |   10 ++++++++++
 2 files changed, 34 insertions(+)

Comments

Mark Brown Oct. 8, 2014, 8:05 p.m. UTC | #1
On Wed, Oct 08, 2014 at 02:27:08PM -0500, tthayer@opensource.altera.com wrote:

> +			spidev@0 {
> +				compatible = "spidev";
> +				reg = <0>;	/* chip select */
> +				spi-max-frequency = <100000000>;
> +			};

No, if you're putting spidev into the DT that's broken - describe the
hardware, not the software you're using to control it.
tthayer@opensource.altera.com Oct. 9, 2014, 7:19 p.m. UTC | #2
On 10/08/2014 03:05 PM, Mark Brown wrote:
> On Wed, Oct 08, 2014 at 02:27:08PM -0500, tthayer@opensource.altera.com wrote:
>
>> +			spidev@0 {
>> +				compatible = "spidev";
>> +				reg = <0>;	/* chip select */
>> +				spi-max-frequency = <100000000>;
>> +			};
> No, if you're putting spidev into the DT that's broken - describe the
> hardware, not the software you're using to control it.
Hi Mark,

There are quite a few instances of the spidev as a child of a spi node 
in the arch/arm/dts directory
- imx6qdl-tx6.dtsi
- imx53-tx53.dtsi
- tegra30-apalis-eval.dts
- spear1340-evb.dts

I believe the reason these are added to the device tree is that they are 
automatically probed.

If there is a different or better way to handle spidev, I'll be happy to 
do it. This seemed to be the cleanest way and had precedent.

Thanks for reviewing this and I appreciate your input.

Thor
--
To unsubscribe from this list: send the line "unsubscribe linux-spi" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Mark Brown Oct. 9, 2014, 11:05 p.m. UTC | #3
On Thu, Oct 09, 2014 at 02:19:09PM -0500, Thor Thayer wrote:

> There are quite a few instances of the spidev as a child of a spi node in
> the arch/arm/dts directory
> - imx6qdl-tx6.dtsi
> - imx53-tx53.dtsi
> - tegra30-apalis-eval.dts
> - spear1340-evb.dts

> I believe the reason these are added to the device tree is that they are
> automatically probed.

These are all buggy - the DT is there to describe the hardware, not how
Linux currently implements it.  I see I need to add some code to spidev
to make it complain loudy if instantiated from DT.

> If there is a different or better way to handle spidev, I'll be happy to do
> it. This seemed to be the cleanest way and had precedent.

The DT should say what the physical device connected to the bus is using
whatever binding is appropriate for that device.  If that happens to be
spidev in current Linux then the appropriate ID should be added to spidev.

Patch
diff mbox

diff --git a/arch/arm/boot/dts/socfpga.dtsi b/arch/arm/boot/dts/socfpga.dtsi
index 4d77ad6..d81bc2d3 100644
--- a/arch/arm/boot/dts/socfpga.dtsi
+++ b/arch/arm/boot/dts/socfpga.dtsi
@@ -628,6 +628,30 @@ 
 			clock-names = "biu", "ciu";
 		};
 
+		spi0: spi@fff00000 {
+			compatible = "snps,dw-apb-ssi";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0xfff00000 0x1000>;
+			interrupts = <0 154 4>;
+			num-cs = <4>;
+			bus-num = <0>;
+			clocks = <&spi_m_clk>;
+			status = "disabled";
+		};
+
+		spi1: spi@fff01000 {
+			compatible = "snps,dw-apb-ssi";
+			#address-cells = <1>;
+			#size-cells = <0>;
+			reg = <0xfff01000 0x1000>;
+			interrupts = <0 156 4>;
+			num-cs = <4>;
+			bus-num = <1>;
+			clocks = <&spi_m_clk>;
+			status = "disabled";
+		};
+
 		/* Local timer */
 		timer@fffec600 {
 			compatible = "arm,cortex-a9-twd-timer";
diff --git a/arch/arm/boot/dts/socfpga_cyclone5.dtsi b/arch/arm/boot/dts/socfpga_cyclone5.dtsi
index bf51182..85c6b5c 100644
--- a/arch/arm/boot/dts/socfpga_cyclone5.dtsi
+++ b/arch/arm/boot/dts/socfpga_cyclone5.dtsi
@@ -48,5 +48,15 @@ 
 		sysmgr@ffd08000 {
 			cpu1-start-addr = <0xffd080c4>;
 		};
+
+		spi0: spi@fff00000 {
+			status = "okay";
+
+			spidev@0 {
+				compatible = "spidev";
+				reg = <0>;	/* chip select */
+				spi-max-frequency = <100000000>;
+			};
+		};
 	};
 };