armbian_build/patch/kernel/sunxi-next/add-a20-overlays.patch
2017-02-26 23:13:57 +03:00

664 lines
15 KiB
Diff

diff --git a/arch/arm/boot/dts/overlay/Makefile b/arch/arm/boot/dts/overlay/Makefile
new file mode 100644
index 00000000..be4f2595
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/Makefile
@@ -0,0 +1,28 @@
+ifeq ($(CONFIG_OF_CONFIGFS),y)
+
+dtbo-$(CONFIG_MACH_SUN7I) += \
+ sun7i-a20-analog-codec.dtbo \
+ sun7i-a20-can.dtbo \
+ sun7i-a20-i2c1.dtbo \
+ sun7i-a20-i2c2.dtbo \
+ sun7i-a20-i2c3.dtbo \
+ sun7i-a20-nand.dtbo \
+ sun7i-a20-spdif-out.dtbo \
+ sun7i-a20-spi0-cs0-spidev.dtbo \
+ sun7i-a20-spi0-cs1-spidev.dtbo \
+ sun7i-a20-spi1-a-spidev.dtbo \
+ sun7i-a20-spi1-b-spidev.dtbo \
+ sun7i-a20-spi2-a-spidev.dtbo \
+ sun7i-a20-spi2-b-spidev.dtbo \
+ sun7i-a20-uart1.dtbo \
+ sun7i-a20-uart2.dtbo \
+ sun7i-a20-uart3.dtbo \
+ sun7i-a20-w1.dtbo
+
+targets += dtbs dtbs_install
+targets += $(dtbo-y)
+
+endif
+
+always := $(dtbo-y)
+clean-files := *.dtbo
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-analog-codec.dts b/arch/arm/boot/dts/overlay/sun7i-a20-analog-codec.dts
new file mode 100644
index 00000000..74bb13d0
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-analog-codec.dts
@@ -0,0 +1,12 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target = <&codec>;
+ __overlay__ {
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-can.dts b/arch/arm/boot/dts/overlay/sun7i-a20-can.dts
new file mode 100644
index 00000000..4d2b33af
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-can.dts
@@ -0,0 +1,34 @@
+/dts-v1/ /plugin/;
+
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target = <&pio>;
+ __overlay__ {
+ can0_pins_a: can0@0 {
+ allwinner,pins = "PH20", "PH21";
+ allwinner,function = "can";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+ };
+ };
+
+ fragment@1 {
+ target-path = "/soc@01c00000";
+ __overlay__ {
+ can0: can@01c2bc00 {
+ compatible = "allwinner,sun4i-a10-can";
+ reg = <0x01c2bc00 0x400>;
+ interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+ clocks = <&apb1_gates 4>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&can0_pins_a>;
+ status = "okay";
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-i2c1.dts b/arch/arm/boot/dts/overlay/sun7i-a20-i2c1.dts
new file mode 100644
index 00000000..1a5dc776
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-i2c1.dts
@@ -0,0 +1,21 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the i2c1 controller node */
+ i2c1 = "/soc@01c00000/i2c@01c2b000";
+ };
+ };
+ fragment@1 {
+ target = <&i2c1>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c1_pins_a>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-i2c2.dts b/arch/arm/boot/dts/overlay/sun7i-a20-i2c2.dts
new file mode 100644
index 00000000..3f94c827
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-i2c2.dts
@@ -0,0 +1,21 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the i2c2 controller node */
+ i2c2 = "/soc@01c00000/i2c@01c2b400";
+ };
+ };
+ fragment@1 {
+ target = <&i2c2>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c2_pins_a>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-i2c3.dts b/arch/arm/boot/dts/overlay/sun7i-a20-i2c3.dts
new file mode 100644
index 00000000..0236b5ae
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-i2c3.dts
@@ -0,0 +1,21 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the i2c3 controller node */
+ i2c3 = "/soc@01c00000/i2c@01c2b800";
+ };
+ };
+ fragment@1 {
+ target = <&i2c3>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&i2c3_pins_a>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-nand.dts b/arch/arm/boot/dts/overlay/sun7i-a20-nand.dts
new file mode 100644
index 00000000..fa778acc
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-nand.dts
@@ -0,0 +1,116 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target = <&pio>;
+ __overlay__ {
+ nand_pins_a: nand_base0@0 {
+ allwinner,pins = "PC0", "PC1", "PC2",
+ "PC5", "PC8", "PC9", "PC10",
+ "PC11", "PC12", "PC13", "PC14",
+ "PC15", "PC16";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+
+ nand_cs0_pins_a: nand_cs@0 {
+ allwinner,pins = "PC4";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+
+ nand_cs1_pins_a: nand_cs@1 {
+ allwinner,pins = "PC3";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+
+ nand_cs2_pins_a: nand_cs@2 {
+ allwinner,pins = "PC17";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+
+ nand_cs3_pins_a: nand_cs@3 {
+ allwinner,pins = "PC18";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+
+ nand_rb0_pins_a: nand_rb@0 {
+ allwinner,pins = "PC6";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+
+ nand_rb1_pins_a: nand_rb@1 {
+ allwinner,pins = "PC7";
+ allwinner,function = "nand0";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+ };
+ };
+
+ fragment@1 {
+ target = <&nfc>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&nand_pins_a>, <&nand_cs0_pins_a>, <&nand_rb0_pins_a>;
+ status = "okay";
+
+ nand@0 {
+ reg = <0>;
+ allwinner,rb = <0>;
+ nand-ecc-mode = "hw";
+ nand-on-flash-bbt;
+
+ partitions {
+ compatible = "fixed-partitions";
+ #address-cells = <2>;
+ #size-cells = <2>;
+
+ partition@0 {
+ label = "SPL";
+ reg = <0x0 0x0 0x0 0x400000>;
+ };
+
+ partition@400000 {
+ label = "SPL.backup";
+ reg = <0x0 0x400000 0x0 0x400000>;
+ };
+
+ partition@800000 {
+ label = "U-Boot";
+ reg = <0x0 0x800000 0x0 0x400000>;
+ };
+
+ partition@c00000 {
+ label = "U-Boot.backup";
+ reg = <0x0 0xc00000 0x0 0x400000>;
+ };
+
+ partition@1000000 {
+ label = "env";
+ reg = <0x0 0x1000000 0x0 0x400000>;
+ };
+
+ partition@1400000 {
+ label = "rootfs";
+ reg = <0x0 0xa00000 0x01 0xff000000>;
+ };
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spdif-out.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spdif-out.dts
new file mode 100644
index 00000000..0463f43c
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spdif-out.dts
@@ -0,0 +1,37 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target = <&spdif>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&spdif_tx_pins_a>;
+ status = "okay";
+ };
+ };
+
+ fragment@1 {
+ target-path = "/";
+ __overlay__ {
+ sound {
+ compatible = "simple-audio-card";
+ simple-audio-card,name = "On-board SPDIF";
+
+ simple-audio-card,cpu {
+ sound-dai = <&spdif>;
+ };
+
+ simple-audio-card,codec {
+ sound-dai = <&spdif_out>;
+ };
+
+ spdif_out: spdif-out {
+ #sound-dai-cells = <0>;
+ compatible = "linux,spdif-dit";
+ };
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spi0-cs0-spidev.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spi0-cs0-spidev.dts
new file mode 100644
index 00000000..926d6325
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spi0-cs0-spidev.dts
@@ -0,0 +1,29 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the SPI controller nodes */
+ spi0 = "/soc@01c00000/spi@01c05000";
+ };
+ };
+ fragment@1 {
+ target = <&spi0>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ /* "PI11" "PI12" "PI13", "PI10" */
+ pinctrl-0 = <&spi0_pins_a>, <&spi0_cs0_pins_a>;
+ status = "okay";
+ spidev@0 {
+ compatible = "spidev";
+ reg = <0>;
+ spi-max-frequency = <1000000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spi0-cs1-spidev.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spi0-cs1-spidev.dts
new file mode 100644
index 00000000..4258672a
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spi0-cs1-spidev.dts
@@ -0,0 +1,29 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the SPI controller nodes */
+ spi0 = "/soc@01c00000/spi@01c05000";
+ };
+ };
+ fragment@1 {
+ target = <&spi0>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ /* "PI11" "PI12" "PI13", "PI14" */
+ pinctrl-0 = <&spi0_pins_a>, <&spi0_cs1_pins_a>;
+ status = "okay";
+ spidev@1 {
+ compatible = "spidev";
+ reg = <1>;
+ spi-max-frequency = <1000000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spi1-a-spidev.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spi1-a-spidev.dts
new file mode 100644
index 00000000..9034b747
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spi1-a-spidev.dts
@@ -0,0 +1,29 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the SPI controller nodes */
+ spi0 = "/soc@01c00000/spi@01c05000";
+ };
+ };
+ fragment@1 {
+ target = <&spi0>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi2_pins_a>, <&spi2_cs0_pins_a>;
+
+ status = "okay";
+ spidev@0 {
+ compatible = "spidev";
+ reg = <0>;
+ spi-max-frequency = <1000000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spi1-b-spidev.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spi1-b-spidev.dts
new file mode 100644
index 00000000..a49ca8a3
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spi1-b-spidev.dts
@@ -0,0 +1,29 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the SPI controller nodes */
+ spi2 = "/soc@01c00000/spi@01c05000";
+ };
+ };
+ fragment@1 {
+ target = <&spi2>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ /* "PB15" "PB16" "PB17", "PB14" */
+ pinctrl-0 = <&spi2_pins_b>, <&spi2_cs0_pins_b>;
+ status = "okay";
+ spidev@0 {
+ compatible = "spidev";
+ reg = <0>;
+ spi-max-frequency = <1000000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spi2-a-spidev.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spi2-a-spidev.dts
new file mode 100644
index 00000000..9034b747
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spi2-a-spidev.dts
@@ -0,0 +1,29 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the SPI controller nodes */
+ spi0 = "/soc@01c00000/spi@01c05000";
+ };
+ };
+ fragment@1 {
+ target = <&spi0>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ pinctrl-0 = <&spi2_pins_a>, <&spi2_cs0_pins_a>;
+
+ status = "okay";
+ spidev@0 {
+ compatible = "spidev";
+ reg = <0>;
+ spi-max-frequency = <1000000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-spi2-b-spidev.dts b/arch/arm/boot/dts/overlay/sun7i-a20-spi2-b-spidev.dts
new file mode 100644
index 00000000..a49ca8a3
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-spi2-b-spidev.dts
@@ -0,0 +1,29 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ /* Path to the SPI controller nodes */
+ spi2 = "/soc@01c00000/spi@01c05000";
+ };
+ };
+ fragment@1 {
+ target = <&spi2>;
+ __overlay__ {
+ #address-cells = <1>;
+ #size-cells = <0>;
+ pinctrl-names = "default";
+ /* "PB15" "PB16" "PB17", "PB14" */
+ pinctrl-0 = <&spi2_pins_b>, <&spi2_cs0_pins_b>;
+ status = "okay";
+ spidev@0 {
+ compatible = "spidev";
+ reg = <0>;
+ spi-max-frequency = <1000000>;
+ };
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-uart1.dts b/arch/arm/boot/dts/overlay/sun7i-a20-uart1.dts
new file mode 100644
index 00000000..4fd6eede
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-uart1.dts
@@ -0,0 +1,20 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ uart1 = "/soc@01c00000/serial@01c28400";
+ };
+ };
+ fragment@1 {
+ target = <&uart1>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart1_pins>, <&uart1_rts_cts_pins>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-uart2.dts b/arch/arm/boot/dts/overlay/sun7i-a20-uart2.dts
new file mode 100644
index 00000000..56774b07
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-uart2.dts
@@ -0,0 +1,20 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ uart2 = "/soc@01c00000/serial@01c28800";
+ };
+ };
+ fragment@1 {
+ target = <&uart2>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart2_pins>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-uart3.dts b/arch/arm/boot/dts/overlay/sun7i-a20-uart3.dts
new file mode 100644
index 00000000..b34cf534
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-uart3.dts
@@ -0,0 +1,20 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/aliases";
+ __overlay__ {
+ uart3 = "/soc@01c00000/serial@01c28c00";
+ };
+ };
+ fragment@1 {
+ target = <&uart3>;
+ __overlay__ {
+ pinctrl-names = "default";
+ pinctrl-0 = <&uart3_pins>;
+ status = "okay";
+ };
+ };
+};
diff --git a/arch/arm/boot/dts/overlay/sun7i-a20-w1.dts b/arch/arm/boot/dts/overlay/sun7i-a20-w1.dts
new file mode 100644
index 00000000..0b28406a
--- /dev/null
+++ b/arch/arm/boot/dts/overlay/sun7i-a20-w1.dts
@@ -0,0 +1,31 @@
+/dts-v1/ /plugin/;
+
+/ {
+ compatible = "allwinner,sun7i-a20";
+
+ fragment@0 {
+ target-path = "/";
+ __overlay__ {
+
+ w1: onewire@0 {
+ compatible = "w1-gpio";
+ pinctrl-names = "default";
+ pinctrl-0 = <&w1_pins>;
+ gpios = <&pio 3 14 0>; /* PD14 */
+ status = "okay";
+ };
+ };
+ };
+
+ fragment@1 {
+ target = <&pio>;
+ __overlay__ {
+ w1_pins: w1_pins@0 {
+ allwinner,pins = "PD14";
+ allwinner,function = "gpio_in";
+ allwinner,drive = <0>;
+ allwinner,pull = <0>;
+ };
+ };
+ };
+};