diff --git a/target/linux/lantiq/dts/DGN1000B.dts b/target/linux/lantiq/dts/DGN1000B.dts
index a6bd5a8021c168f75396d0f754930d7393a104a2..68415ca35cbe2bd2b7e53ed22af3f8be4590c68c 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 d43da9df040147473bb96a15e32452602944c3f8..48e2471e47579f88858ffec61a18c371270961dc 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 56efe7150f932be91daa209c6084b653eca17990..ad89ed95158ad030b9c0a9edc994fb0a63489598 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 c6a593bfeda92aeca660457e5066eae61c427df5..648e36bcf0d85ff577f6829b074abd1f467abc0e 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 30225d5cc165c40317412ca8ac1c3332ccce1d67..eabb98056fad73e7be58a1370d58b31b503bdbcc 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 5389446eba5d14edce9a9988eb7529b0bd00780f..c0bba436d1c3ac101ce83f159c1573798c1b2c02 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 25b834647c4fb36086a94a8333adb33ce0779ad2..0be95c3711ef8cd60cffb7265cb98deb0a0f4804 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 e38541ef69bf8972bf93b291f03f2a7eedb04c33..fce6f871745d568000b6a0a2ab24167f93bfae98 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 ece2706e5df67f5c7faa3bbf01a7059f26ca5c64..1c9f5ccb13248964362f711d4ecb7c00b566acb2 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 974b06b9d507edba7774d5de4a9b5f950802d249..ae13f805106c8c0476c234d3130ae56ab40d3f25 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