From: Felix Fietkau Date: Sun, 17 Jan 2016 19:56:03 +0000 (+0000) Subject: lantiq: Switch to the new SPI driver X-Git-Tag: reboot~834 X-Git-Url: http://git.cdn.openwrt.org/?a=commitdiff_plain;h=04ad02d132fb14d509d14054313405f24cf1e8ff;p=openwrt%2Fstaging%2Fblogic.git lantiq: Switch to the new SPI driver Compared to the "old" driver: - Each device must assign a pinctrl setting to the SPI node to allow the new SPI driver to configure the SPI pins. While here we are also using separate input and output settings so we are independent of whether the bootloader configures the pins correctly. - We use the new "compatible" strings to make the driver choose the correct number of chip-selects for each SoC. - The new driver starts counting the chip-selects at 1 (instead of 0, like the old one did). Thus we have to adjust the devices accordingly. Signed-off-by: Martin Blumenstingl SVN-Revision: 48293 --- diff --git a/target/linux/lantiq/dts/DGN1000B.dts b/target/linux/lantiq/dts/DGN1000B.dts index a6bd5a8021c1..68415ca35cbe 100644 --- a/target/linux/lantiq/dts/DGN1000B.dts +++ b/target/linux/lantiq/dts/DGN1000B.dts @@ -28,10 +28,6 @@ pinctrl-0 = <&state_default>; state_default: pinmux { - spi { - lantiq,groups = "spi", "spi_cs1"; - lantiq,function = "spi"; - }; asc { lantiq,groups = "asc"; lantiq,function = "asc"; @@ -42,6 +38,18 @@ lantiq,open-drain = <1>; }; }; + pins_spi_default: pins_spi_default { + spi_in { + lantiq,groups = "spi_di"; + lantiq,function = "spi"; + }; + spi_out { + lantiq,groups = "spi_do", "spi_clk", + "spi_cs1"; + lantiq,function = "spi"; + lantiq,output = <1>; + }; + }; }; etop@E180000 { @@ -50,11 +58,14 @@ }; spi@E100800 { - m25p80@0 { + pinctrl-names = "default"; + pinctrl-0 = <&pins_spi_default>; + + m25p80@1 { #address-cells = <1>; #size-cells = <1>; compatible = "jedec,spi-nor"; - reg = <0 0>; + reg = <1 0>; spi-max-frequency = <5000000>; partition@0 { diff --git a/target/linux/lantiq/dts/DGN3500.dtsi b/target/linux/lantiq/dts/DGN3500.dtsi index d43da9df0401..48e2471e4757 100644 --- a/target/linux/lantiq/dts/DGN3500.dtsi +++ b/target/linux/lantiq/dts/DGN3500.dtsi @@ -45,10 +45,18 @@ lantiq,output = <1>; lantiq,pull = <0>; }; - spi { - lantiq,groups = "spi", "spi_cs4"; + }; + pins_spi_default: pins_spi_default { + spi_in { + lantiq,groups = "spi_di"; lantiq,function = "spi"; }; + spi_out { + lantiq,groups = "spi_do", "spi_clk", + "spi_cs4"; + lantiq,function = "spi"; + lantiq,output = <1>; + }; }; }; @@ -150,13 +158,16 @@ }; &spi { + pinctrl-names = "default"; + pinctrl-0 = <&pins_spi_default>; + status = "ok"; - m25p80@3 { + m25p80@4 { #address-cells = <1>; #size-cells = <1>; compatible = "jedec,spi-nor"; - reg = <3 0>; + reg = <4 0>; spi-max-frequency = <1000000>; partition@0 { diff --git a/target/linux/lantiq/dts/EASY80920.dtsi b/target/linux/lantiq/dts/EASY80920.dtsi index 56efe7150f93..ad89ed95158a 100644 --- a/target/linux/lantiq/dts/EASY80920.dtsi +++ b/target/linux/lantiq/dts/EASY80920.dtsi @@ -53,10 +53,6 @@ lantiq,groups = "stp"; lantiq,function = "stp"; }; - spi { - lantiq,groups = "spi", "spi_cs4"; - lantiq,function = "spi"; - }; nand { lantiq,groups = "nand cle", "nand ale", "nand rd", "nand rdy"; @@ -90,6 +86,18 @@ lantiq,pull = <2>; }; }; + pins_spi_default: pins_spi_default { + spi_in { + lantiq,groups = "spi_di"; + lantiq,function = "spi"; + }; + spi_out { + lantiq,groups = "spi_do", "spi_clk", + "spi_cs4"; + lantiq,function = "spi"; + lantiq,output = <1>; + }; + }; }; eth@E108000 { @@ -297,13 +305,16 @@ }; &spi { + pinctrl-names = "default"; + pinctrl-0 = <&pins_spi_default>; + status = "ok"; - m25p80@3 { + m25p80@4 { #address-cells = <1>; #size-cells = <1>; compatible = "jedec,spi-nor"; - reg = <3 0>; + reg = <4 0>; spi-max-frequency = <1000000>; partition@0 { diff --git a/target/linux/lantiq/dts/FRITZ3370.dts b/target/linux/lantiq/dts/FRITZ3370.dts index c6a593bfeda9..648e36bcf0d8 100644 --- a/target/linux/lantiq/dts/FRITZ3370.dts +++ b/target/linux/lantiq/dts/FRITZ3370.dts @@ -66,10 +66,6 @@ pinctrl-0 = <&state_default>; state_default: pinmux { - spi { - lantiq,groups = "spi", "spi_cs4"; - lantiq,function = "spi"; - }; mdio { lantiq,groups = "mdio"; lantiq,function = "mdio"; @@ -92,6 +88,18 @@ lantiq,output = <1>; }; }; + pins_spi_default: pins_spi_default { + spi_in { + lantiq,groups = "spi_di"; + lantiq,function = "spi"; + }; + spi_out { + lantiq,groups = "spi_do", "spi_clk", + "spi_cs4"; + lantiq,function = "spi"; + lantiq,output = <1>; + }; + }; }; eth@E108000 { @@ -239,13 +247,16 @@ }; &spi { + pinctrl-names = "default"; + pinctrl-0 = <&pins_spi_default>; + status = "ok"; - m25p80@3 { + m25p80@4 { #address-cells = <1>; #size-cells = <1>; compatible = "jedec,spi-nor"; - reg = <3 0>; + reg = <4 0>; spi-max-frequency = <1000000>; ath9k_cal: partition@0 { diff --git a/target/linux/lantiq/dts/TDW89X0.dtsi b/target/linux/lantiq/dts/TDW89X0.dtsi index 30225d5cc165..eabb98056fad 100644 --- a/target/linux/lantiq/dts/TDW89X0.dtsi +++ b/target/linux/lantiq/dts/TDW89X0.dtsi @@ -43,16 +43,24 @@ lantiq,open-drain = <0>; lantiq,output = <1>; }; - spi { - lantiq,groups = "spi", "spi_cs4"; - lantiq,function = "spi"; - }; pcie-rst { lantiq,pins = "io38"; lantiq,pull = <0>; lantiq,output = <1>; }; }; + pins_spi_default: pins_spi_default { + spi_in { + lantiq,groups = "spi_di"; + lantiq,function = "spi"; + }; + spi_out { + lantiq,groups = "spi_do", "spi_clk", + "spi_cs4"; + lantiq,function = "spi"; + lantiq,output = <1>; + }; + }; }; eth@E108000 { @@ -211,13 +219,16 @@ }; &spi { + pinctrl-names = "default"; + pinctrl-0 = <&pins_spi_default>; + status = "ok"; - m25p80@3 { + m25p80@4 { #address-cells = <1>; #size-cells = <1>; compatible = "jedec,spi-nor"; - reg = <3 0>; + reg = <4 0>; spi-max-frequency = <33250000>; m25p,fast-read; diff --git a/target/linux/lantiq/dts/amazonse.dtsi b/target/linux/lantiq/dts/amazonse.dtsi index 5389446eba5d..c0bba436d1c3 100644 --- a/target/linux/lantiq/dts/amazonse.dtsi +++ b/target/linux/lantiq/dts/amazonse.dtsi @@ -73,10 +73,12 @@ reg = <0x10000000 0xEF00000>; spi@E100800 { - compatible = "lantiq,spi-xway"; + compatible = "lantiq,ase-spi"; reg = <0xE100800 0x100>; interrupt-parent = <&icu0>; interrupts = <24 25 26>; + interrupt-names = "spi_rx", "spi_tx", "spi_err", + "spi_frm"; #address-cells = <1>; #size-cells = <1>; }; diff --git a/target/linux/lantiq/dts/ar9.dtsi b/target/linux/lantiq/dts/ar9.dtsi index 25b834647c4f..0be95c3711ef 100644 --- a/target/linux/lantiq/dts/ar9.dtsi +++ b/target/linux/lantiq/dts/ar9.dtsi @@ -101,10 +101,12 @@ }; spi: spi@E100800 { - compatible = "lantiq,spi-xway"; + compatible = "lantiq,xrx100-spi"; reg = <0xE100800 0x100>; interrupt-parent = <&icu0>; interrupts = <22 23 24>; + interrupt-names = "spi_rx", "spi_tx", "spi_err", + "spi_frm"; #address-cells = <1>; #size-cells = <1>; status = "disabled"; diff --git a/target/linux/lantiq/dts/vr9.dtsi b/target/linux/lantiq/dts/vr9.dtsi index e38541ef69bf..fce6f871745d 100644 --- a/target/linux/lantiq/dts/vr9.dtsi +++ b/target/linux/lantiq/dts/vr9.dtsi @@ -113,10 +113,12 @@ }; spi: spi@E100800 { - compatible = "lantiq,spi-xway"; + compatible = "lantiq,xrx200-spi"; reg = <0xE100800 0x100>; interrupt-parent = <&icu0>; interrupts = <22 23 24>; + interrupt-names = "spi_rx", "spi_tx", "spi_err", + "spi_frm"; #address-cells = <1>; #size-cells = <1>; status = "disabled"; diff --git a/target/linux/lantiq/xrx200/config-default b/target/linux/lantiq/xrx200/config-default index ece2706e5df6..1c9f5ccb1324 100644 --- a/target/linux/lantiq/xrx200/config-default +++ b/target/linux/lantiq/xrx200/config-default @@ -56,9 +56,8 @@ CONFIG_RTL8366S_PHY=y CONFIG_RTL8367B_PHY=y CONFIG_RTL8367_PHY=y CONFIG_SPI=y -CONFIG_SPI_BITBANG=y +CONFIG_SPI_LANTIQ=y CONFIG_SPI_MASTER=y -CONFIG_SPI_XWAY=y CONFIG_SYS_SUPPORTS_MIPS16=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y diff --git a/target/linux/lantiq/xway/config-default b/target/linux/lantiq/xway/config-default index 974b06b9d507..ae13f805106c 100644 --- a/target/linux/lantiq/xway/config-default +++ b/target/linux/lantiq/xway/config-default @@ -54,9 +54,8 @@ CONFIG_RTL8366S_PHY=y CONFIG_RTL8367B_PHY=y CONFIG_RTL8367_PHY=y CONFIG_SPI=y -CONFIG_SPI_BITBANG=y +CONFIG_SPI_LANTIQ=y CONFIG_SPI_MASTER=y -CONFIG_SPI_XWAY=y CONFIG_SYS_SUPPORTS_MIPS16=y CONFIG_UBIFS_FS=y CONFIG_UBIFS_FS_ADVANCED_COMPR=y