From f4fa5785238393813ddc7105f799d1da00254933 Mon Sep 17 00:00:00 2001 From: Yang Deokgyu Date: Thu, 5 Dec 2019 18:07:13 +0900 Subject: [PATCH] ODROID-XU4: Introduce device tree overlay Copy *.dtbo files at arch/arm/boot/dts/overlays to boot partition, e.g, /media/boot/overlays/. Then use "fdtoverlay" tool to integrate DTB and DTBOs. Or, you also can use "fdt apply" u-boot command to prepare device tree blob at booting time. Signed-off-by: Yang Deokgyu Change-Id: I40e6a915e2149952fb548f64e7fae335ba12db18 --- .gitignore | 1 + Makefile | 7 +++- arch/arm/boot/dts/Makefile | 3 ++ arch/arm/boot/dts/exynos5422-odroidxu4.dts | 8 ++--- arch/arm/boot/dts/overlays/Makefile | 31 ++++++++++++++++ .../dts/overlays/hktft-cs-ogst-overlay.dts | 36 +++++++++++++++++++ .../arm/boot/dts/overlays/hktft32-overlay.dts | 36 +++++++++++++++++++ .../arm/boot/dts/overlays/hktft35-overlay.dts | 36 +++++++++++++++++++ arch/arm/boot/dts/overlays/i2c1-overlay.dts | 12 +++++++ arch/arm/boot/dts/overlays/i2c5-overlay.dts | 12 +++++++ .../arm/boot/dts/overlays/spidev1-overlay.dts | 20 +++++++++++ 11 files changed, 197 insertions(+), 5 deletions(-) create mode 100644 arch/arm/boot/dts/overlays/Makefile create mode 100644 arch/arm/boot/dts/overlays/hktft-cs-ogst-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hktft32-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/hktft35-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/i2c1-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/i2c5-overlay.dts create mode 100644 arch/arm/boot/dts/overlays/spidev1-overlay.dts diff --git a/.gitignore b/.gitignore index 70580bdd352cc..a0cf56d7d0d2e 100644 --- a/.gitignore +++ b/.gitignore @@ -17,6 +17,7 @@ *.c.[012]*.* *.dt.yaml *.dtb +*.dtbo *.dtb.S *.dwo *.elf diff --git a/Makefile b/Makefile index 07998b60d56cf..5579165a84634 100644 --- a/Makefile +++ b/Makefile @@ -1242,7 +1242,12 @@ ifneq ($(dtstree),) %.dtb: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) $(dtstree)/$@ -PHONY += dtbs dtbs_install dt_binding_check +%.dtbo: + $(Q)$(MAKE) -C $(dtstree)/overlays $@ + +PHONY += dtbs dtbs_install dt_binding_check dtbos +dtbos: + $(Q)$(MAKE) -C $(dtstree)/overlays dtbs dtbs_check: include/config/kernel.release scripts_dtc $(Q)$(MAKE) $(build)=$(dtstree) diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile index b21b3a64641a7..f6e3a8817c576 100644 --- a/arch/arm/boot/dts/Makefile +++ b/arch/arm/boot/dts/Makefile @@ -1303,3 +1303,6 @@ dtb-$(CONFIG_ARCH_ASPEED) += \ aspeed-bmc-opp-zaius.dtb \ aspeed-bmc-portwell-neptune.dtb \ aspeed-bmc-quanta-q71l.dtb + +DTC_FLAGS ?= -@ +subdir-y := overlays diff --git a/arch/arm/boot/dts/exynos5422-odroidxu4.dts b/arch/arm/boot/dts/exynos5422-odroidxu4.dts index 6e7da591654f4..6768dc18ebeeb 100644 --- a/arch/arm/boot/dts/exynos5422-odroidxu4.dts +++ b/arch/arm/boot/dts/exynos5422-odroidxu4.dts @@ -143,25 +143,25 @@ /* i2c@12C70000 */ &i2c_1 { - status = "okay"; + status = "disabled"; samsung,i2c-max-bus-freq = <400000>; }; /* i2c@12cb0000 */ &hsi2c_5 { - status = "okay"; + status = "disabled"; samsung,hs-mode; clock-frequency = <400000>; }; &spi_1 { - status = "okay"; + status = "disabled"; samsung,spi-src-clk = <0>; num-cs = <2>; cs-gpios = <&gpa2 5 GPIO_ACTIVE_HIGH>, <&gpx2 1 GPIO_ACTIVE_HIGH>; spidev: spidev@0 { - status = "okay"; + status = "disabled"; reg = <0>; compatible = "odroid,spidev"; spi-max-frequency = <1000000>; diff --git a/arch/arm/boot/dts/overlays/Makefile b/arch/arm/boot/dts/overlays/Makefile new file mode 100644 index 0000000000000..dff81c41c8688 --- /dev/null +++ b/arch/arm/boot/dts/overlays/Makefile @@ -0,0 +1,31 @@ +# Overlays for the Odroid platform + +DTC ?= dtc +DTCO_FLAGS ?= \ + -Wno-unit_address_vs_reg \ + -@ + +OBJ := $(patsubst %.dts, %.dtbo, $(wildcard *.dts)) + +dtbo-y := \ + spidev1-overlay.dtbo \ + i2c1-overlay.dtbo \ + i2c5-overlay.dtbo \ + hktft32-overlay.dtbo \ + hktft35-overlay.dtbo \ + hktft-cs-ogst-overlay.dtbo + +%.dtbo: %.dts + @echo " DTCO $@" + @$(DTC) $(DTCO_FLAGS) -I dts -O dtb -o $@ $^ + +dtbos: $(dtbo-y) + +all: $(dtbos) + +clean: + @rm -rf *.dtbo + +.PHONY: all clean dtbos + +always += $(dtbo-y) diff --git a/arch/arm/boot/dts/overlays/hktft-cs-ogst-overlay.dts b/arch/arm/boot/dts/overlays/hktft-cs-ogst-overlay.dts new file mode 100644 index 0000000000000..a727fb311574f --- /dev/null +++ b/arch/arm/boot/dts/overlays/hktft-cs-ogst-overlay.dts @@ -0,0 +1,36 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&i2c_1>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@1 { + target = <&hsi2c_5>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@2 { + target = <&spi_1>; + + __overlay__ { + status = "okay"; + }; + }; + + fragment@3 { + target = <&hktft_cs_ogst>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/hktft32-overlay.dts b/arch/arm/boot/dts/overlays/hktft32-overlay.dts new file mode 100644 index 0000000000000..7bda6cd8e6d8a --- /dev/null +++ b/arch/arm/boot/dts/overlays/hktft32-overlay.dts @@ -0,0 +1,36 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&i2c_1>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@1 { + target = <&hsi2c_5>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@2 { + target = <&spi_1>; + + __overlay__ { + status = "okay"; + }; + }; + + fragment@3 { + target = <&hktft32>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/hktft35-overlay.dts b/arch/arm/boot/dts/overlays/hktft35-overlay.dts new file mode 100644 index 0000000000000..a656dd272165c --- /dev/null +++ b/arch/arm/boot/dts/overlays/hktft35-overlay.dts @@ -0,0 +1,36 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&i2c_1>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@1 { + target = <&hsi2c_5>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@2 { + target = <&spi_1>; + + __overlay__ { + status = "disabled"; + }; + }; + + fragment@3 { + target = <&hktft35>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/i2c1-overlay.dts b/arch/arm/boot/dts/overlays/i2c1-overlay.dts new file mode 100644 index 0000000000000..2fd27754e7c89 --- /dev/null +++ b/arch/arm/boot/dts/overlays/i2c1-overlay.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&i2c_1>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/i2c5-overlay.dts b/arch/arm/boot/dts/overlays/i2c5-overlay.dts new file mode 100644 index 0000000000000..9ef9e66699e08 --- /dev/null +++ b/arch/arm/boot/dts/overlays/i2c5-overlay.dts @@ -0,0 +1,12 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&hsi2c_5>; + + __overlay__ { + status = "okay"; + }; + }; +}; diff --git a/arch/arm/boot/dts/overlays/spidev1-overlay.dts b/arch/arm/boot/dts/overlays/spidev1-overlay.dts new file mode 100644 index 0000000000000..c5cb6bcb60114 --- /dev/null +++ b/arch/arm/boot/dts/overlays/spidev1-overlay.dts @@ -0,0 +1,20 @@ +/dts-v1/; +/plugin/; + +/ { + fragment@0 { + target = <&spi_1>; + + __overlay__ { + status = "okay"; + }; + }; + + fragment@1 { + target = <&spidev>; + + __overlay__ { + status = "okay"; + }; + }; +};