diff --git a/arch/arm64/Makefile b/arch/arm64/Makefile index 1412c114b413..fa2533562090 100644 --- a/arch/arm64/Makefile +++ b/arch/arm64/Makefile @@ -156,7 +156,7 @@ PHONY += dtbs dtbs_install dtbs: prepare scripts $(Q)$(MAKE) $(build)=$(boot)/dts -dtbs_install: prepare scripts +dtbs_install: $(Q)$(MAKE) $(dtbinst)=$(boot)/dts Image-dtb Image.gz-dtb: vmlinux scripts dtbs diff --git a/arch/arm64/boot/dts/.gitignore b/arch/arm64/boot/dts/.gitignore index b60ed208c779..77ed402cbbc8 100644 --- a/arch/arm64/boot/dts/.gitignore +++ b/arch/arm64/boot/dts/.gitignore @@ -1 +1,2 @@ *.dtb +*.dtbo diff --git a/arch/arm64/boot/dts/amlogic/Makefile b/arch/arm64/boot/dts/amlogic/Makefile index 83124f5422f6..1469dcda53b5 100644 --- a/arch/arm64/boot/dts/amlogic/Makefile +++ b/arch/arm64/boot/dts/amlogic/Makefile @@ -1,12 +1,15 @@ +ifndef CONFIG_ARCH_MESON64_ODROID_COMMON dtb-y += g12a_s905d2_skt.dtb dtb-y += g12a_s905d2_skt_buildroot.dtb dtb-y += g12a_s905d2_u200_buildroot.dtb dtb-y += g12a_s905d2_u200_drm_buildroot.dtb dtb-y += g12b_a311d_w400.dtb dtb-y += g12b_a311d_w400_buildroot.dtb -dtb-$(CONFIG_ARCH_MESON64_ODROIDC3) += meson64_odroidc3.dtb -dtb-$(CONFIG_ARCH_MESON64_ODROIDC3) += meson64_odroidc3_android.dtb +endif dtb-$(CONFIG_ARCH_MESON64_ODROIDC4) += meson64_odroidc4.dtb dtb-$(CONFIG_ARCH_MESON64_ODROIDC4) += meson64_odroidc4_android.dtb dtb-$(CONFIG_ARCH_MESON64_ODROIDN2) += meson64_odroidn2.dtb dtb-$(CONFIG_ARCH_MESON64_ODROIDN2) += meson64_odroidn2_android.dtb + +subdir-$(CONFIG_ARCH_MESON64_ODROIDC4) := overlays/odroidc4 +subdir-$(CONFIG_ARCH_MESON64_ODROIDN2) := overlays/odroidn2 diff --git a/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts b/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts index 44211817af1d..73088c06b2ab 100644 --- a/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts +++ b/arch/arm64/boot/dts/amlogic/meson64_odroidc4.dts @@ -735,6 +735,23 @@ status = "okay"; }; /* Audio Related end */ + + gpio_keypad{ + compatible = "amlogic, gpio_keypad"; + status = "okay"; + scan_period = <20>; + key_num = <1>; + key_name = "power"; + key_code = <116>; + reg = <0x0 0xFF800000 0x0 0x400>; + }; + + hk-lirc-helper { + compatible = "hk-lirc-helper"; + /* Multi-format IR controller */ + reg = <0x0 0xff808040 0x0 0x44>; + status = "ok"; + }; }; /* end of / */ &audiobus { @@ -786,7 +803,7 @@ }; /* end of audiobus */ &uart_A { - status = "okay"; + status = "disabled"; }; &usb3_phy_v2 { @@ -871,7 +888,7 @@ }; /* end of pinctrl_aobus */ &spicc0 { - status = "okay"; + status = "disabled"; /* 40 Pin Header : MOSI(GPIOX.8->19 Pin), MISO(GPIOX.9->21 Pin), @@ -885,102 +902,12 @@ cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>, <&gpio GPIOH_6 GPIO_ACTIVE_LOW>; - - can0: can@0 { - compatible = "microchip,mcp2515"; - reg = <0>; - spi-max-frequency = <10000000>; - status = "disabled"; - gpio-irq = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; - }; - - spidev@0 { - status = "okay"; - - compatible = "linux,spidev"; - /* spi default max clock 100Mhz */ - spi-max-frequency = <100000000>; - reg = <0>; - }; - - /* SPI 3.2" Touch Screen Define */ - ads7846@1 { - status = "disabled"; - - spi-max-frequency = <1000000>; - - compatible = "ti,ads7846"; - - reg = <1>; - - /* ODROID-N2 Touch interrupt gpio */ - pendown-gpio = <&gpio GPIOX_3 GPIO_ACTIVE_HIGH>; - - ti,swap-xy = <1>; - ti,x-min = /bits/ 16 <0>; - ti,x-max = /bits/ 16 <8000>; - ti,y-min = /bits/ 16 <0>; - ti,y-max = /bits/ 16 <4800>; - ti,x-plate-ohms = /bits/ 16 <40>; - ti,pressure-max = /bits/ 16 <255>; - - linux,wakeup; - }; - - hktft32@0 { - status = "disabled"; - compatible = "odroid,hktft32"; - reg = <0>; - pinctrl-names = "hktft32"; - pinctrl-0 = <&hktft32_pins>; - - spi-max-frequency = <40000000>; - rotate = <90>; - bgr; - backlight; - fps = <20>; - bpp = <16>; - reset-gpios = <&gpio GPIOX_4 GPIO_ACTIVE_LOW>; - dc-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>; - debug = <0>; - - hktft32_pins: hktft32_pins { - mux { - groups = "GPIOX_4", - "GPIOX_7"; - function = "gpio_periphs"; - output-high; - drive-strength = <3>; - }; - }; - }; }; &i2c2 { - pcf8563: rtc@51 { - status = "disabled"; - compatible = "nxp,pcf8563"; - reg = <0x51>; - }; + status = "disabled"; }; &i2c3 { - /* Hardkernel I2C 3.5" Touchscreen */ - /* drivers/input/sx8650.c */ - sx865x: sx865x@49 { - status = "disabled"; - compatible = "semtech,sx8650"; - reg = <0x49>; - #clock-cells = <0>; - - /* H/W Pin control setup */ - /* ODROID-C4 */ - gpio-pendown = <&gpio GPIOH_5 GPIO_ACTIVE_LOW>; - gpio-reset = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; - - /* platform data setup */ - invert-x = <0>; - invert-y = <1>; - swap-xy = <1>; - }; + status = "disabled"; }; diff --git a/arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts b/arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts index 8adf1387b671..adf5c860592e 100644 --- a/arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts +++ b/arch/arm64/boot/dts/amlogic/meson64_odroidn2.dts @@ -371,113 +371,11 @@ cpu_opp_table0: cpu_opp_table0 { compatible = "operating-points-v2"; opp-shared; - - opp00 { - opp-hz = /bits/ 64 <100000000>; - opp-microvolt = <731000>; - }; - opp01 { - opp-hz = /bits/ 64 <250000000>; - opp-microvolt = <731000>; - }; - opp02 { - opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <731000>; - }; - opp03 { - opp-hz = /bits/ 64 <667000000>; - opp-microvolt = <731000>; - }; - opp04 { - opp-hz = /bits/ 64 <1000000000>; - opp-microvolt = <731000>; - }; - opp05 { - opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <731000>; - }; - opp06 { - opp-hz = /bits/ 64 <1398000000>; - opp-microvolt = <761000>; - }; - opp07 { - opp-hz = /bits/ 64 <1512000000>; - opp-microvolt = <791000>; - }; - opp08 { - opp-hz = /bits/ 64 <1608000000>; - opp-microvolt = <831000>; - }; - opp09 { - opp-hz = /bits/ 64 <1704000000>; - opp-microvolt = <861000>; - }; - opp10 { - opp-hz = /bits/ 64 <1896000000>; - opp-microvolt = <981000>; - }; - opp11 { - opp-hz = /bits/ 64 <1992000000>; - opp-microvolt = <1001000>; - }; }; cpu_opp_table1: cpu_opp_table1 { compatible = "operating-points-v2"; opp-shared; - - opp00 { - opp-hz = /bits/ 64 <100000000>; - opp-microvolt = <751000>; - }; - opp01 { - opp-hz = /bits/ 64 <250000000>; - opp-microvolt = <751000>; - }; - opp02 { - opp-hz = /bits/ 64 <500000000>; - opp-microvolt = <751000>; - }; - opp03 { - opp-hz = /bits/ 64 <667000000>; - opp-microvolt = <751000>; - }; - opp04 { - opp-hz = /bits/ 64 <1000000000>; - opp-microvolt = <771000>; - }; - opp05 { - opp-hz = /bits/ 64 <1200000000>; - opp-microvolt = <771000>; - }; - opp06 { - opp-hz = /bits/ 64 <1398000000>; - opp-microvolt = <791000>; - }; - opp07 { - opp-hz = /bits/ 64 <1512000000>; - opp-microvolt = <821000>; - }; - opp08 { - opp-hz = /bits/ 64 <1608000000>; - opp-microvolt = <861000>; - }; - opp09 { - opp-hz = /bits/ 64 <1704000000>; - opp-microvolt = <891000>; - }; - opp10 { - opp-hz = /bits/ 64 <1800000000>; - opp-microvolt = <981000>; - }; - opp11 { - opp-hz = /bits/ 64 <1908000000>; - opp-microvolt = <1022000>; - }; - opp12 { - opp-hz = /bits/ 64 <2004000000>; - opp-microvolt = <1022000>; - }; }; cpufreq-meson { @@ -567,11 +465,11 @@ }; &saradc { - status = "okay"; + status = "disabled"; }; &i2c2 { - status = "okay"; + status = "disabled"; pinctrl-names = "default","gpio_periphs"; /* 40 Pin Header : SDA(GPIOX.17->3 Pin), SCL(GPIOX.18->5 Pin) */ pinctrl-0 = <&i2c2_master_pins1>; @@ -582,30 +480,11 @@ &i2c3 { /* default i2c clock-frequency is 100Khz */ - status = "okay"; - - /* Hardkernel I2C 3.5" Touchscreen */ - /* drivers/input/sx8650.c */ - sx865x: sx865x@49 { - status = "disabled"; - compatible = "semtech,sx8650"; - reg = <0x49>; - #clock-cells = <0>; - - /* H/W Pin control setup */ - /* ODROID-N2 */ - gpio-pendown = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>; - gpio-reset = <&gpio GPIOA_12 GPIO_ACTIVE_LOW>; - - /* platform data setup */ - invert-x = <0>; - invert-y = <1>; - swap-xy = <1>; - }; + status = "disabled"; }; &spicc0 { - status = "okay"; + status = "disabled"; /* 40 Pin Header : MOSI(GPIOX.8->19 Pin), MISO(GPIOX.9->21 Pin), @@ -619,45 +498,4 @@ cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>, <&gpio GPIOA_4 GPIO_ACTIVE_LOW>; - - can0: can@0 { - compatible = "microchip,mcp2515"; - reg = <0>; - spi-max-frequency = <10000000>; - status = "disabled"; - gpio-irq = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; - }; - - spidev@0 { - status = "okay"; - - compatible = "linux,spidev"; - /* spi default max clock 100Mhz */ - spi-max-frequency = <100000000>; - reg = <0>; - }; - - /* SPI 3.2" Touch Screen Define */ - ads7846@1 { - status = "disabled"; - - spi-max-frequency = <1000000>; - - compatible = "ti,ads7846"; - - reg = <1>; - - /* ODROID-N2 Touch interrupt gpio */ - pendown-gpio = <&gpio GPIOX_3 GPIO_ACTIVE_HIGH>; - - ti,swap-xy = <1>; - ti,x-min = /bits/ 16 <0>; - ti,x-max = /bits/ 16 <8000>; - ti,y-min = /bits/ 16 <0>; - ti,y-max = /bits/ 16 <4800>; - ti,x-plate-ohms = /bits/ 16 <40>; - ti,pressure-max = /bits/ 16 <255>; - - linux,wakeup; - }; }; diff --git a/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi b/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi index 9eaa2b00dacf..d54842d7c289 100644 --- a/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesong12_odroid_common.dtsi @@ -22,9 +22,9 @@ serial2 = &uart_B; serial3 = &uart_C; serial4 = &uart_AO_B; - i2c0 = &i2c0; - i2c1 = &i2c2; - i2c2 = &i2c3; + i2c0 = &i2c2; + i2c1 = &i2c3; + i2c2 = &i2c0; i2c3 = &i2c1; i2c4 = &i2c_AO; tsensor0 = &p_tsensor; diff --git a/arch/arm64/boot/dts/amlogic/mesonsm1_odroid_common.dtsi b/arch/arm64/boot/dts/amlogic/mesonsm1_odroid_common.dtsi index 5d51a94ae27d..fdbd4b79ee04 100644 --- a/arch/arm64/boot/dts/amlogic/mesonsm1_odroid_common.dtsi +++ b/arch/arm64/boot/dts/amlogic/mesonsm1_odroid_common.dtsi @@ -22,9 +22,9 @@ serial2 = &uart_B; serial3 = &uart_C; serial4 = &uart_AO_B; - i2c0 = &i2c0; - i2c1 = &i2c2; - i2c2 = &i2c3; + i2c0 = &i2c2; + i2c1 = &i2c3; + i2c2 = &i2c0; i2c3 = &i2c1; i2c4 = &i2c_AO; tsensor0 = &p_tsensor; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/Makefile b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/Makefile new file mode 100644 index 000000000000..8e5b0f15f94d --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/Makefile @@ -0,0 +1,18 @@ +# Overlays for the Odroid platform + +dtbo-$(CONFIG_ARCH_MESON64_ODROIDC4) += spi0.dtbo \ + i2c0.dtbo \ + i2c1.dtbo \ + uart0.dtbo \ + uart1.dtbo \ + uart2.dtbo \ + hktft32.dtbo \ + hktft35.dtbo \ + ads7846.dtbo \ + sx865x-i2c1.dtbo \ + pcf8563.dtbo \ + onewire.dtbo \ + can0.dtbo + +targets += $(dtbo-y) +always := $(dtbo-y) diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/ads7846.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/ads7846.dts new file mode 100644 index 000000000000..86460d0d488c --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/ads7846.dts @@ -0,0 +1,38 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + ads7846: ads7846@0 { + status = "okay"; + compatible = "ti,ads7846"; + + spi-max-frequency = <1000000>; + reg = <1>; + + pendown-gpio = <&gpio GPIOX_3 GPIO_ACTIVE_HIGH>; + + ti,swap-xy = <1>; + ti,x-min = /bits/ 16 <0>; + ti,x-max = /bits/ 16 <8000>; + ti,y-min = /bits/ 16 <0>; + ti,y-max = /bits/ 16 <4800>; + ti,x-plate-ohms = /bits/ 16 <40>; + ti,pressure-max = /bits/ 16 <255>; + + linux,wakeup; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/can0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/can0.dts new file mode 100644 index 000000000000..41b4cc728919 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/can0.dts @@ -0,0 +1,23 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + can0: can@0 { + compatible = "microchip,mcp2515"; + gpio-irq = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; + reg = <0>; + spi-max-frequency = <10000000>; + status = "okay"; + }; + }; + }; +}; \ No newline at end of file diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/hktft32.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/hktft32.dts new file mode 100644 index 000000000000..ce521b084494 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/hktft32.dts @@ -0,0 +1,46 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + hktft32: hktft32@0 { + status = "okay"; + compatible = "odroid,hktft32"; + reg = <0>; + pinctrl-names = "hktft32"; + pinctrl-0 = <&hktft32_pins>; + + spi-max-frequency = <40000000>; + rotate = <90>; + bgr; + backlight; + fps = <20>; + bpp = <16>; + reset-gpios = <&gpio GPIOX_4 GPIO_ACTIVE_LOW>; + dc-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>; + debug = <0>; + + hktft32_pins: hktft32_pins { + mux { + groups = "GPIOX_4", + "GPIOX_7"; + function = "gpio_periphs"; + output-high; + drive-strength = <3>; + }; + }; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/hktft35.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/hktft35.dts new file mode 100644 index 000000000000..076d289f968c --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/hktft35.dts @@ -0,0 +1,63 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target-path = "/"; + + #address-cells = <1>; + #size-cells = <0>; + + __overlay__ { + hktft35: hktft35 { + status = "okay"; + compatible = "odroid,hktft35"; + pinctrl-names = "hktft35"; + pinctrl-0 = <&hktft35_pins>; + + rotate = <270>; + bgr; + fps = <20>; + bpp = <16>; + reset-gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; + dc-gpios = <&gpio GPIOX_14 GPIO_ACTIVE_LOW>; + wr-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>; + cs-gpios = <&gpio GPIOX_16 GPIO_ACTIVE_LOW>; + led-gpios = <&gpio GPIOX_6 GPIO_ACTIVE_LOW>; + db-gpios = <&gpio GPIOX_1 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_2 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_0 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_11 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_9 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_8 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_7 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_4 GPIO_ACTIVE_LOW>; + debug = <0>; + + hktft35_pins: hktft35_pins { + mux { + groups = "GPIOX_0", + "GPIOX_1", + "GPIOX_2", + "GPIOX_3", + "GPIOX_4", + "GPIOX_6", + "GPIOX_7", + "GPIOX_8", + "GPIOX_9", + "GPIOX_10", + "GPIOX_11", + "GPIOX_14", + "GPIOX_16"; + function = "gpio_periphs"; + output-high; + drive-strength = <3>; + }; + }; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/i2c0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/i2c0.dts new file mode 100644 index 000000000000..36e4d0e1f6b1 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/i2c0.dts @@ -0,0 +1,14 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + // i2c2 aliased with i2c0. + // This activates i2c2 but it will be named as i2c0 on the userspace. + target = <&i2c2>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/i2c1.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/i2c1.dts new file mode 100644 index 000000000000..2e9198151a94 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/i2c1.dts @@ -0,0 +1,14 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + // i2c3 aliased with i2c1. + // This activates i2c3 but it will be named as i2c1 on the userspace. + target = <&i2c3>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/onewire.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/onewire.dts new file mode 100644 index 000000000000..24745fc97fda --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/onewire.dts @@ -0,0 +1,19 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target-path = "/"; + + __overlay__ { + onewire:onewire { + compatible = "w1-gpio"; + gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>; + status = "okay"; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/pcf8563.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/pcf8563.dts new file mode 100644 index 000000000000..d45b0a3f3ecf --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/pcf8563.dts @@ -0,0 +1,22 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + // i2c2 aliased with i2c0. + target = <&i2c2>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + pcf8563: rtc@51 { + status = "okay"; + compatible = "nxp,pcf8563"; + reg = <0x51>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/spi0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/spi0.dts new file mode 100644 index 000000000000..7c6a43b6209a --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/spi0.dts @@ -0,0 +1,23 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + spidev: spidev@0 { + status = "okay"; + compatible = "linux,spidev"; + reg = <0>; + /* spi default max clock 100Mhz */ + spi-max-frequency = <100000000>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/sx865x-i2c1.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/sx865x-i2c1.dts new file mode 100644 index 000000000000..663cf5e7bc00 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/sx865x-i2c1.dts @@ -0,0 +1,39 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + // i2c3 aliased with i2c1. + target = <&i2c3>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + /* Hardkernel I2C 3.5" Touchscreen */ + /* drivers/input/sx8650.c */ + sx865x: sx865x@49 { + status = "okay"; + compatible = "semtech,sx8650"; + reg = <0x49>; + #clock-cells = <0>; + + /* H/W Pin control setup */ + /* ODROID-C4 */ + gpio-pendown = <&gpio GPIOH_5 GPIO_ACTIVE_LOW>; + gpio-reset = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>; + + /* platform data setup */ + invert-x = <0>; + invert-y = <1>; + swap-xy = <1>; + }; + }; + }; +}; + diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart0.dts new file mode 100644 index 000000000000..ef5468a12130 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart0.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&uart_A>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart1.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart1.dts new file mode 100644 index 000000000000..9cc1f5715e0a --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart1.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&uart_B>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart2.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart2.dts new file mode 100644 index 000000000000..c2267df1fb66 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidc4/uart2.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&uart_C>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/Makefile b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/Makefile new file mode 100644 index 000000000000..a63e7fa8e88b --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/Makefile @@ -0,0 +1,19 @@ +# Overlays for the Odroid platform + +dtbo-$(CONFIG_ARCH_MESON64_ODROIDN2) += spi0.dtbo \ + i2c0.dtbo \ + i2c1.dtbo \ + uart0.dtbo \ + uart1.dtbo \ + hktft32.dtbo \ + hktft35.dtbo \ + ads7846.dtbo \ + sx865x-i2c1.dtbo \ + saradc.dtbo \ + irblaster.dtbo \ + odroidn2-opp.dtbo \ + onewire.dtbo \ + can0.dtbo + +targets += $(dtbo-y) +always := $(dtbo-y) diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/ads7846.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/ads7846.dts new file mode 100644 index 000000000000..86460d0d488c --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/ads7846.dts @@ -0,0 +1,38 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + ads7846: ads7846@0 { + status = "okay"; + compatible = "ti,ads7846"; + + spi-max-frequency = <1000000>; + reg = <1>; + + pendown-gpio = <&gpio GPIOX_3 GPIO_ACTIVE_HIGH>; + + ti,swap-xy = <1>; + ti,x-min = /bits/ 16 <0>; + ti,x-max = /bits/ 16 <8000>; + ti,y-min = /bits/ 16 <0>; + ti,y-max = /bits/ 16 <4800>; + ti,x-plate-ohms = /bits/ 16 <40>; + ti,pressure-max = /bits/ 16 <255>; + + linux,wakeup; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/can0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/can0.dts new file mode 100644 index 000000000000..41b4cc728919 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/can0.dts @@ -0,0 +1,23 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + can0: can@0 { + compatible = "microchip,mcp2515"; + gpio-irq = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; + reg = <0>; + spi-max-frequency = <10000000>; + status = "okay"; + }; + }; + }; +}; \ No newline at end of file diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/hktft32.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/hktft32.dts new file mode 100644 index 000000000000..7b5ced41cc9b --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/hktft32.dts @@ -0,0 +1,46 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + hktft32: hktft32@0 { + status = "okay"; + compatible = "odroid,hktft32"; + reg = <0>; + pinctrl-names = "hktft32"; + pinctrl-0 = <&hktft32_pins>; + + spi-max-frequency = <40000000>; + rotate = <90>; + bgr; + backlight; + fps = <20>; + bpp = <16>; + reset-gpios = <&gpio GPIOX_4 GPIO_ACTIVE_LOW>; + dc-gpio = <&gpio GPIOX_7 GPIO_ACTIVE_LOW>; + debug = <0>; + + hktft32_pins: hktft32_pins { + mux { + groups = "GPIOX_4", + "GPIOX_7"; + function = "gpio_periphs"; + output-high; + drive-strength = <3>; + }; + }; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/hktft35.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/hktft35.dts new file mode 100644 index 000000000000..163961ea94cc --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/hktft35.dts @@ -0,0 +1,63 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target-path = "/"; + + #address-cells = <1>; + #size-cells = <0>; + + __overlay__ { + hktft35: hktft35 { + status = "okay"; + compatible = "odroid,hktft35"; + pinctrl-name = "hktft35"; + pinctrl-0 = <&hktft35_pins>; + + rotate = <270>; + bgr; + fps = <20>; + bpp = <16>; + reset-gpios = <&gpio GPIOX_3 GPIO_ACTIVE_LOW>; + dc-gpios = <&gpio GPIOX_14 GPIO_ACTIVE_LOW>; + wr-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>; + cs-gpios = <&gpio GPIOX_16 GPIO_ACTIVE_LOW>; + led-gpios = <&gpio GPIOX_5 GPIO_ACTIVE_LOW>; + db-gpios = <&gpio GPIOX_1 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_2 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_0 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_11 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_9 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_8 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_7 GPIO_ACTIVE_LOW>, + <&gpio GPIOX_4 GPIO_ACTIVE_LOW>; + debug = <0>; + + hktft35_pins: hktft35_pins { + mux { + groups = "GPIOX_0", + "GPIOX_1", + "GPIOX_2", + "GPIOX_3", + "GPIOX_4", + "GPIOX_5", + "GPIOX_7", + "GPIOX_8", + "GPIOX_9", + "GPIOX_10", + "GPIOX_11", + "GPIOX_14", + "GPIOX_16"; + function = "gpio_periphs"; + output-high; + drive-strength = <3>; + }; + }; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/i2c0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/i2c0.dts new file mode 100644 index 000000000000..36e4d0e1f6b1 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/i2c0.dts @@ -0,0 +1,14 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + // i2c2 aliased with i2c0. + // This activates i2c2 but it will be named as i2c0 on the userspace. + target = <&i2c2>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/i2c1.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/i2c1.dts new file mode 100644 index 000000000000..2e9198151a94 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/i2c1.dts @@ -0,0 +1,14 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + // i2c3 aliased with i2c1. + // This activates i2c3 but it will be named as i2c1 on the userspace. + target = <&i2c3>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/irblaster.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/irblaster.dts new file mode 100644 index 000000000000..699506098c12 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/irblaster.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&irblaster>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/odroidn2-opp.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/odroidn2-opp.dts new file mode 100644 index 000000000000..2a6f2eb70126 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/odroidn2-opp.dts @@ -0,0 +1,118 @@ +// cpu opp table +/dts-v1/; +/plugin/; + +/{ + fragment@0 { + target= <&cpu_opp_table0>; + + __overlay__ { + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <730000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <730000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <730000>; + }; + opp03 { + opp-hz = /bits/ 64 <667000000>; + opp-microvolt = <730000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <730000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <730000>; + }; + opp06 { + opp-hz = /bits/ 64 <1398000000>; + opp-microvolt = <760000>; + }; + opp07 { + opp-hz = /bits/ 64 <1512000000>; + opp-microvolt = <790000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <830000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <860000>; + }; + opp10 { + opp-hz = /bits/ 64 <1896000000>; + opp-microvolt = <980000>; + }; + opp11 { + opp-hz = /bits/ 64 <1992000000>; + opp-microvolt = <1000000>; + }; + }; + }; + fragment@1 { + target= <&cpu_opp_table1>; + + __overlay__ { + opp00 { + opp-hz = /bits/ 64 <100000000>; + opp-microvolt = <750000>; + }; + opp01 { + opp-hz = /bits/ 64 <250000000>; + opp-microvolt = <750000>; + }; + opp02 { + opp-hz = /bits/ 64 <500000000>; + opp-microvolt = <750000>; + }; + opp03 { + opp-hz = /bits/ 64 <667000000>; + opp-microvolt = <750000>; + }; + opp04 { + opp-hz = /bits/ 64 <1000000000>; + opp-microvolt = <770000>; + }; + opp05 { + opp-hz = /bits/ 64 <1200000000>; + opp-microvolt = <770000>; + }; + opp06 { + opp-hz = /bits/ 64 <1398000000>; + opp-microvolt = <790000>; + }; + opp07 { + opp-hz = /bits/ 64 <1512000000>; + opp-microvolt = <820000>; + }; + opp08 { + opp-hz = /bits/ 64 <1608000000>; + opp-microvolt = <860000>; + }; + opp09 { + opp-hz = /bits/ 64 <1704000000>; + opp-microvolt = <890000>; + }; + opp10 { + opp-hz = /bits/ 64 <1800000000>; + opp-microvolt = <980000>; + }; + opp11 { + opp-hz = /bits/ 64 <1908000000>; + opp-microvolt = <1020000>; + }; + opp12 { + opp-hz = /bits/ 64 <2004000000>; + opp-microvolt = <1020000>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/onewire.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/onewire.dts new file mode 100644 index 000000000000..24745fc97fda --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/onewire.dts @@ -0,0 +1,19 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + target-path = "/"; + + __overlay__ { + onewire:onewire { + compatible = "w1-gpio"; + gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>; + status = "okay"; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/saradc.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/saradc.dts new file mode 100644 index 000000000000..8daff5e5fe8f --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/saradc.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&saradc>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/spi0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/spi0.dts new file mode 100644 index 000000000000..7c6a43b6209a --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/spi0.dts @@ -0,0 +1,23 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&spicc0>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + spidev: spidev@0 { + status = "okay"; + compatible = "linux,spidev"; + reg = <0>; + /* spi default max clock 100Mhz */ + spi-max-frequency = <100000000>; + }; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/sx865x-i2c1.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/sx865x-i2c1.dts new file mode 100644 index 000000000000..727d22d567ab --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/sx865x-i2c1.dts @@ -0,0 +1,37 @@ +/dts-v1/; +/plugin/; + +#include +#include + +/ { + fragment@0 { + // i2c3 aliased with i2c1. + target = <&i2c3>; + + __overlay__ { + status = "okay"; + + #address-cells = <1>; + #size-cells = <0>; + + sx865x: sx865x@49 { + status = "okay"; + compatible = "semtech,sx8650"; + reg = <0x49>; + #clock-cells = <0>; + + /* H/W Pin control setup */ + /* ODROID-N2 */ + gpio-pendown = <&gpio GPIOX_19 GPIO_ACTIVE_LOW>; + gpio-reset = <&gpio GPIOA_12 GPIO_ACTIVE_LOW>; + + /* platform data setup */ + invert-x = <0>; + invert-y = <1>; + swap-xy = <1>; + }; + }; + }; +}; + diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/uart0.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/uart0.dts new file mode 100644 index 000000000000..ef5468a12130 --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/uart0.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&uart_A>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm64/boot/dts/amlogic/overlays/odroidn2/uart1.dts b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/uart1.dts new file mode 100644 index 000000000000..9cc1f5715e0a --- /dev/null +++ b/arch/arm64/boot/dts/amlogic/overlays/odroidn2/uart1.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&uart_B>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/scripts/Makefile.dtbinst b/scripts/Makefile.dtbinst index f112bc99ae0f..5cc1ddca85e8 100644 --- a/scripts/Makefile.dtbinst +++ b/scripts/Makefile.dtbinst @@ -21,6 +21,7 @@ include scripts/Kbuild.include include $(src)/Makefile dtbinst-files := $(sort $(dtb-y) $(if $(CONFIG_OF_ALL_DTBS), $(dtb-))) +dtboinst-files := $(sort $(dtbo-y) $(if $(CONFIG_OF_ALL_DTBS), $(dtbo-))) dtbinst-dirs := $(subdir-y) $(subdir-m) # Helper targets for Installing DTBs into the boot directory @@ -32,10 +33,13 @@ install-dir = $(patsubst $(dtbinst-root)%,$(INSTALL_DTBS_PATH)%,$(obj)) $(dtbinst-files): %.dtb: $(obj)/%.dtb $(call cmd,dtb_install,$(install-dir)) +$(dtboinst-files): %.dtbo: $(obj)/%.dtbo + $(call cmd,dtb_install,$(install-dir)) + $(dtbinst-dirs): $(Q)$(MAKE) $(dtbinst)=$(obj)/$@ -PHONY += $(dtbinst-files) $(dtbinst-dirs) -__dtbs_install: $(dtbinst-files) $(dtbinst-dirs) +PHONY += $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs) +__dtbs_install: $(dtbinst-files) $(dtboinst-files) $(dtbinst-dirs) .PHONY: $(PHONY)