ODROID-N2/C4: arm64/dts: add device tree overlay support

Signed-off-by: Dongjin Kim <tobetter@gmail.com>
Change-Id: I325baa8ec879f6a004049d1fe0a8d79fdd5542cc
This commit is contained in:
Dongjin Kim
2021-02-10 05:55:12 +00:00
committed by Mauro (mdrjr) Ribeiro
parent b4d4630b3c
commit 1faaa20274
21 changed files with 578 additions and 0 deletions

View File

@@ -83,3 +83,6 @@ dtb-$(CONFIG_ARCH_MESON) += meson64_odroidc4.dtb
dtb-$(CONFIG_ARCH_MESON) += meson64_odroidhc4.dtb
dtb-$(CONFIG_ARCH_MESON) += meson64_odroidn2.dtb
dtb-$(CONFIG_ARCH_MESON) += meson64_odroidn2_plus.dtb
subdir-y += overlays/odroidc4
subdir-y += overlays/odroidn2

View File

@@ -0,0 +1,12 @@
dtbo-y += \
hktft32.dtbo \
hktft35.dtbo \
pcf8563.dtbo \
spi0.dtbo \
sx865x-i2c1.dtbo \
w1-gpio_p15.dtbo \
w1-gpio_p22.dtbo \
hifishield2.dtbo
targets += $(dtbo-y)
always-y := $(dtbo-y)

View File

@@ -0,0 +1,67 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/clock/axg-audio-clkc.h>
/ {
fragment@0 {
// i2c2 aliased with i2c0.
target = <&i2c2>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
pcm5122: pcm5122@4c {
#sound-dai-cells = <0>;
compatible = "ti,pcm5122";
reg = <0x4c>;
AVDD-supply = <&vddao_3v3>;
DVDD-supply = <&vddao_3v3>;
CPVDD-supply = <&vddao_3v3>;
status = "okay";
};
};
};
fragment@1 {
// add pcm5122 as seconday dai link to HDMI
target-path = "/sound";
sound_overlay: __overlay__ {
dai-link-3 {
codec-2 {
sound-dai = <&pcm5122>;
};
};
};
};
fragment@2 {
// set I2S master clocks and output on AO pins
target = <&tdmif_b>;
__overlay__ {
status = "okay";
pinctrl-0 = <&mclk0_ao_pins>,
<&tdm_ao_b_fs_pins>,
<&tdm_ao_b_sclk_pins>,
<&tdm_ao_b_dout0_pins>;
pinctrl-names = "default";
assigned-clocks = <&clkc_audio AUD_CLKID_TDM_MCLK_PAD0>,
<&clkc_audio AUD_CLKID_TDM_SCLK_PAD1>,
<&clkc_audio AUD_CLKID_TDM_LRCLK_PAD1>;
assigned-clock-parents = <&clkc_audio AUD_CLKID_MST_B_MCLK>,
<&clkc_audio AUD_CLKID_MST_B_SCLK>,
<&clkc_audio AUD_CLKID_MST_B_LRCLK>;
assigned-clock-rates = <0>, <0>, <0>;
};
};
};

View File

@@ -0,0 +1,33 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&spicc0>;
__overlay__ {
status = "okay";
cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>;
display: display@0 {
#address-cells = <0x1>;
#size-cells = <0x0>;
status = "okay";
compatible = "hardkernel,hktft32";
reg = <0>;
spi-max-frequency = <40000000>;
rotation = <90>;
reset-gpios = <&gpio GPIOX_4 GPIO_ACTIVE_HIGH>;
dc-gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1,53 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target-path = "/";
__overlay__ {
backlight: backlight {
compatible = "gpio-backlight";
gpios = <&gpio GPIOX_6 GPIO_ACTIVE_HIGH>;
};
display: display {
#address-cells = <2>;
#size-cells = <1>;
status = "okay";
compatible = "hardkernel,ili9488";
reg = <0x0 0xff63445c 0x0 0x04>;
rotate = <270>;
backlight = <&backlight>;
db-bits-0 = <0x00000002>;
db-bits-1 = <0x00000004>;
db-bits-2 = <0x00000001>;
db-bits-3 = <0x00000800>;
db-bits-4 = <0x00000200>;
db-bits-5 = <0x00000100>;
db-bits-6 = <0x00000080>;
db-bits-7 = <0x00000010>;
db-bits-wr = <0x00000400>;
reset-gpios = <&gpio GPIOX_3 GPIO_ACTIVE_HIGH>;
dc-gpios = <&gpio GPIOX_14 GPIO_ACTIVE_HIGH>;
wr-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>;
cs-gpios = <&gpio GPIOX_16 GPIO_ACTIVE_HIGH>;
db-gpios = <&gpio GPIOX_1 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_2 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_0 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_11 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_9 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_8 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_7 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_4 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1,23 @@
/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>;
};
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&spicc0>;
__overlay__ {
status = "okay";
cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>;
spidev: spidev@0 {
spi-max-frequency = <100000000>;
};
};
};
};

View File

@@ -0,0 +1,34 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ {
fragment@0 {
target = <&i2c3>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
sx865x: sx865x@49 {
status = "okay";
compatible = "semtech,sx8650";
reg = <0x49>;
#clock-cells = <0>;
interrupt-parent = <&gpio_intc>;
/* GPIOH_5 */
interrupts = <33 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio GPIOH_7 GPIO_ACTIVE_LOW>;
touchscreen-inverted-x;
touchscreen-swapped-x-y;
};
};
};
};

View File

@@ -0,0 +1,34 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&pwm_f_x_pins>;
__overlay__ {
mux {
groups = "GPIOX_7";
function = "gpio_periphs";
bias-disable;
drive-strength-microamp = <4000>;
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
onewire: onewire {
compatible = "w1-gpio";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pdm_din1_x_pins>;
gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1,34 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&pdm_din1_x_pins>;
__overlay__ {
mux {
groups = "GPIOX_2";
function = "gpio_periphs";
bias-disable;
drive-strength-microamp = <4000>;
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
onewire: onewire {
compatible = "w1-gpio";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pdm_din1_x_pins>;
gpios = <&gpio GPIOX_2 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1,13 @@
dtbo-y += \
hktft35.dtbo \
spi0.dtbo \
pwm_cd.dtbo \
pwm_ef.dtbo \
uart0.dtbo \
uart1.dtbo \
sx865x-i2c1.dtbo \
w1-gpio_p15.dtbo \
w1-gpio_p22.dtbo
targets += $(dtbo-y)
always-y := $(dtbo-y)

View File

@@ -0,0 +1,53 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target-path = "/";
__overlay__ {
backlight: backlight {
compatible = "gpio-backlight";
gpios = <&gpio GPIOX_5 GPIO_ACTIVE_HIGH>;
};
display: display {
#address-cells = <2>;
#size-cells = <1>;
status = "okay";
compatible = "hardkernel,ili9488";
reg = <0x0 0xff63445c 0x0 0x04>;
rotate = <270>;
backlight = <&backlight>;
db-bits-0 = <0x00000002>;
db-bits-1 = <0x00000004>;
db-bits-2 = <0x00000001>;
db-bits-3 = <0x00000800>;
db-bits-4 = <0x00000200>;
db-bits-5 = <0x00000100>;
db-bits-6 = <0x00000080>;
db-bits-7 = <0x00000010>;
db-bits-wr = <0x00000400>;
reset-gpios = <&gpio GPIOX_3 GPIO_ACTIVE_HIGH>;
dc-gpios = <&gpio GPIOX_14 GPIO_ACTIVE_HIGH>;
wr-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_HIGH>;
cs-gpios = <&gpio GPIOX_16 GPIO_ACTIVE_HIGH>;
db-gpios = <&gpio GPIOX_1 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_2 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_0 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_11 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_9 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_8 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_7 GPIO_ACTIVE_HIGH>,
<&gpio GPIOX_4 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1,24 @@
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target = <&pwm_cd>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pwm_c_x5_pins &pwm_d_x6_pins>;
pinctrl-1 = <&pwmcd_to_gpios>;
clocks = <&xtal>,
<&xtal>,
<&xtal>,
<&xtal>;
clock-names = "clkin0",
"clkin1",
"clkin2",
"clkin3";
};
};
};

View File

@@ -0,0 +1,24 @@
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target = <&pwm_ef>;
__overlay__ {
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pwm_e_pins &pwm_f_x_pins>;
pinctrl-1 = <&pwmef_to_gpios>;
clocks = <&xtal>,
<&xtal>,
<&xtal>,
<&xtal>;
clock-names = "clkin0",
"clkin1",
"clkin2",
"clkin3";
};
};
};

View File

@@ -0,0 +1,21 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&spicc0>;
__overlay__ {
status = "okay";
cs-gpios = <&gpio GPIOX_10 GPIO_ACTIVE_LOW>;
spidev: spidev@0 {
spi-max-frequency = <100000000>;
};
};
};
};

View File

@@ -0,0 +1,34 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/gpio.h>
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/interrupt-controller/irq.h>
/ {
fragment@0 {
target = <&i2c3>;
__overlay__ {
status = "okay";
#address-cells = <1>;
#size-cells = <0>;
sx865x: sx865x@49 {
status = "okay";
compatible = "semtech,sx8650";
reg = <0x49>;
#clock-cells = <0>;
interrupt-parent = <&gpio_intc>;
/* GPIOX_19 */
interrupts = <96 IRQ_TYPE_EDGE_FALLING>;
reset-gpios = <&gpio GPIOA_12 GPIO_ACTIVE_LOW>;
touchscreen-inverted-x;
touchscreen-swapped-x-y;
};
};
};
};

View File

@@ -0,0 +1,13 @@
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target = <&uart_A>;
__overlay__ {
status = "okay";
};
};
};

View File

@@ -0,0 +1,13 @@
/dts-v1/;
/plugin/;
/ {
fragment@0 {
target = <&uart_B>;
__overlay__ {
status = "okay";
};
};
};

View File

@@ -0,0 +1,34 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&pwm_f_x_pins>;
__overlay__ {
mux {
groups = "GPIOX_7";
function = "gpio_periphs";
bias-disable;
drive-strength-microamp = <4000>;
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
onewire: onewire {
compatible = "w1-gpio";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pdm_din1_x_pins>;
gpios = <&gpio GPIOX_7 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1,34 @@
/dts-v1/;
/plugin/;
#include <dt-bindings/gpio/meson-g12a-gpio.h>
#include <dt-bindings/gpio/gpio.h>
/ {
fragment@0 {
target = <&pdm_din1_x_pins>;
__overlay__ {
mux {
groups = "GPIOX_2";
function = "gpio_periphs";
bias-disable;
drive-strength-microamp = <4000>;
};
};
};
fragment@1 {
target-path = "/";
__overlay__ {
onewire: onewire {
compatible = "w1-gpio";
status = "okay";
pinctrl-names = "default";
pinctrl-0 = <&pdm_din1_x_pins>;
gpios = <&gpio GPIOX_2 GPIO_ACTIVE_HIGH>;
};
};
};
};

View File

@@ -0,0 +1 @@
odroidn2