2015-07-27 10:35:49

by Ian Campbell

[permalink] [raw]
Subject: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
LogicTile Express 20MG" added a new dts file to arch/arm64 which
included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
.dtsi supplied by arch/arm.

Unfortunately this causes some issues for the split device tree
repository[0], since things get moved around there. In that context
the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
while the include is at src/arm/vexpress-v2m-rs1.dtsi.

The sharing of the .dtsi is legitimate since the baseboard is the same
for various vexpress systems whatever processor they use.

Rather than using ../../ tricks to pickup .dtsi files from another
arch this patch creates a new directory include/dt-dtsi as a
home for such cross-arch .dtsi files, arranges for it to be in the
include path when the .dts files are processed by cpp and switches the
.dts files to use cpp #include instead of /include/. The dtsi file
itself is moved into a vendor subdir in this case "arm" (the vendor,
not the ARCH=).

[0] https://git.kernel.org/cgit/linux/kernel/git/devicetree/devicetree-rebasing.git/

Signed-off-by: Ian Campbell <[email protected]>
Cc: Rob Herring <[email protected]>
Cc: Pawel Moll <[email protected]>
Cc: Mark Rutland <[email protected]>
Cc: Kumar Gala <[email protected]>
Cc: Liviu Dudau <[email protected]>
Cc: Sudeep Holla <[email protected]>
Cc: Lorenzo Pieralisi <[email protected]>
Cc: Russell King <[email protected]>
Cc: Catalin Marinas <[email protected]>
Cc: Will Deacon <[email protected]>
Cc: Kristina Martsenko <[email protected]>
Cc: Kevin Hilman <[email protected]>
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
Cc: [email protected]
---
v2: Move to include/dt-dtsi and introduce a per-vendor subdirectory.
---
Documentation/devicetree/bindings/arm/vexpress.txt | 4 ++--
arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 2 +-
arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 2 +-
arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 2 +-
arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts | 2 +-
{arch/arm/boot/dts => include/dt-dtsi/arm}/vexpress-v2m-rs1.dtsi | 0
scripts/Makefile.lib | 1 +
7 files changed, 7 insertions(+), 6 deletions(-)
rename {arch/arm/boot/dts => include/dt-dtsi/arm}/vexpress-v2m-rs1.dtsi (100%)

diff --git a/Documentation/devicetree/bindings/arm/vexpress.txt b/Documentation/devicetree/bindings/arm/vexpress.txt
index 39844cd..dccf570 100644
--- a/Documentation/devicetree/bindings/arm/vexpress.txt
+++ b/Documentation/devicetree/bindings/arm/vexpress.txt
@@ -7,7 +7,7 @@ peripherals. Processor and RAM "live" on the tiles.

The motherboard and each core tile should be described by a separate
Device Tree source file, with the tile's description including
-the motherboard file using a /include/ directive. As the motherboard
+the motherboard file using a #include directive. As the motherboard
can be initialized in one of two different configurations ("memory
maps"), care must be taken to include the correct one.

@@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
/* Active high IRQ 0 is connected to GIC's SPI0 */
interrupt-map = <0 0 0 &gic 0 0 4>;

- /include/ "vexpress-v2m-rs1.dtsi"
+ #include <arm/vexpress-v2m-rs1.dtsi>
};
};

diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
index 9420053..7ea7054 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
@@ -278,6 +278,6 @@
<0 0 41 &gic 0 41 4>,
<0 0 42 &gic 0 42 4>;

- /include/ "vexpress-v2m-rs1.dtsi"
+ #include <arm/vexpress-v2m-rs1.dtsi>
};
};
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
index 17f63f7..afe997a4 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
@@ -636,6 +636,6 @@
<0 0 41 &gic 0 41 4>,
<0 0 42 &gic 0 42 4>;

- /include/ "vexpress-v2m-rs1.dtsi"
+ #include <arm/vexpress-v2m-rs1.dtsi>
};
};
diff --git a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
index d2709b7..498181c 100644
--- a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
+++ b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
@@ -248,6 +248,6 @@
<0 0 41 &gic 0 41 4>,
<0 0 42 &gic 0 42 4>;

- /include/ "vexpress-v2m-rs1.dtsi"
+ #include <arm/vexpress-v2m-rs1.dtsi>
};
};
diff --git a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
index 5b1d018..b86c5a8 100644
--- a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
+++ b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
@@ -186,6 +186,6 @@
<0 0 41 &gic GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
<0 0 42 &gic GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;

- /include/ "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi"
+ #include <arm/vexpress-v2m-rs1.dtsi>
};
};
diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/include/dt-dtsi/arm/vexpress-v2m-rs1.dtsi
similarity index 100%
rename from arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
rename to include/dt-dtsi/arm/vexpress-v2m-rs1.dtsi
diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 79e8661..0d948d4 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -163,6 +163,7 @@ dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
-I$(srctree)/arch/$(SRCARCH)/boot/dts \
-I$(srctree)/arch/$(SRCARCH)/boot/dts/include \
-I$(srctree)/drivers/of/testcase-data \
+ -I$(srctree)/include/dt-dtsi \
-undef -D__DTS__

# Finds the multi-part object the current object will be linked into
--
2.1.4


2015-07-27 10:42:12

by Mark Rutland

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

Hi,

On Mon, Jul 27, 2015 at 11:35:43AM +0100, Ian Campbell wrote:
> Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
> LogicTile Express 20MG" added a new dts file to arch/arm64 which
> included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
> .dtsi supplied by arch/arm.
>
> Unfortunately this causes some issues for the split device tree
> repository[0], since things get moved around there. In that context
> the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
> while the include is at src/arm/vexpress-v2m-rs1.dtsi.
>
> The sharing of the .dtsi is legitimate since the baseboard is the same
> for various vexpress systems whatever processor they use.
>
> Rather than using ../../ tricks to pickup .dtsi files from another
> arch this patch creates a new directory include/dt-dtsi as a
> home for such cross-arch .dtsi files, arranges for it to be in the
> include path when the .dts files are processed by cpp and switches the
> .dts files to use cpp #include instead of /include/. The dtsi file
> itself is moved into a vendor subdir in this case "arm" (the vendor,
> not the ARCH=).
>
> [0] https://git.kernel.org/cgit/linux/kernel/git/devicetree/devicetree-rebasing.git/
>
> Signed-off-by: Ian Campbell <[email protected]>

I'm happy with the general idea, and having a separate directory for
dtsis, with vendor subdirs makes sense to me. So FWIW:

Acked-by: Mark Rutland <[email protected]>

Mark.

> Cc: Rob Herring <[email protected]>
> Cc: Pawel Moll <[email protected]>
> Cc: Mark Rutland <[email protected]>
> Cc: Kumar Gala <[email protected]>
> Cc: Liviu Dudau <[email protected]>
> Cc: Sudeep Holla <[email protected]>
> Cc: Lorenzo Pieralisi <[email protected]>
> Cc: Russell King <[email protected]>
> Cc: Catalin Marinas <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: Kristina Martsenko <[email protected]>
> Cc: Kevin Hilman <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> v2: Move to include/dt-dtsi and introduce a per-vendor subdirectory.
> ---
> Documentation/devicetree/bindings/arm/vexpress.txt | 4 ++--
> arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 2 +-
> arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 2 +-
> arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 2 +-
> arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts | 2 +-
> {arch/arm/boot/dts => include/dt-dtsi/arm}/vexpress-v2m-rs1.dtsi | 0
> scripts/Makefile.lib | 1 +
> 7 files changed, 7 insertions(+), 6 deletions(-)
> rename {arch/arm/boot/dts => include/dt-dtsi/arm}/vexpress-v2m-rs1.dtsi (100%)
>
> diff --git a/Documentation/devicetree/bindings/arm/vexpress.txt b/Documentation/devicetree/bindings/arm/vexpress.txt
> index 39844cd..dccf570 100644
> --- a/Documentation/devicetree/bindings/arm/vexpress.txt
> +++ b/Documentation/devicetree/bindings/arm/vexpress.txt
> @@ -7,7 +7,7 @@ peripherals. Processor and RAM "live" on the tiles.
>
> The motherboard and each core tile should be described by a separate
> Device Tree source file, with the tile's description including
> -the motherboard file using a /include/ directive. As the motherboard
> +the motherboard file using a #include directive. As the motherboard
> can be initialized in one of two different configurations ("memory
> maps"), care must be taken to include the correct one.
>
> @@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
> /* Active high IRQ 0 is connected to GIC's SPI0 */
> interrupt-map = <0 0 0 &gic 0 0 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
>
> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
> index 9420053..7ea7054 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
> @@ -278,6 +278,6 @@
> <0 0 41 &gic 0 41 4>,
> <0 0 42 &gic 0 42 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> index 17f63f7..afe997a4 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> @@ -636,6 +636,6 @@
> <0 0 41 &gic 0 41 4>,
> <0 0 42 &gic 0 42 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
> index d2709b7..498181c 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
> @@ -248,6 +248,6 @@
> <0 0 41 &gic 0 41 4>,
> <0 0 42 &gic 0 42 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
> index 5b1d018..b86c5a8 100644
> --- a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
> +++ b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
> @@ -186,6 +186,6 @@
> <0 0 41 &gic GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
> <0 0 42 &gic GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
>
> - /include/ "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/include/dt-dtsi/arm/vexpress-v2m-rs1.dtsi
> similarity index 100%
> rename from arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
> rename to include/dt-dtsi/arm/vexpress-v2m-rs1.dtsi
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 79e8661..0d948d4 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -163,6 +163,7 @@ dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
> -I$(srctree)/arch/$(SRCARCH)/boot/dts \
> -I$(srctree)/arch/$(SRCARCH)/boot/dts/include \
> -I$(srctree)/drivers/of/testcase-data \
> + -I$(srctree)/include/dt-dtsi \
> -undef -D__DTS__
>
> # Finds the multi-part object the current object will be linked into
> --
> 2.1.4
>

2015-07-29 11:07:42

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

Hi Ian,


2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
> Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
> LogicTile Express 20MG" added a new dts file to arch/arm64 which
> included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
> .dtsi supplied by arch/arm.
>
> Unfortunately this causes some issues for the split device tree
> repository[0], since things get moved around there. In that context
> the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
> while the include is at src/arm/vexpress-v2m-rs1.dtsi.
>
> The sharing of the .dtsi is legitimate since the baseboard is the same
> for various vexpress systems whatever processor they use.
>
> Rather than using ../../ tricks to pickup .dtsi files from another
> arch this patch creates a new directory include/dt-dtsi as a
> home for such cross-arch .dtsi files, arranges for it to be in the
> include path when the .dts files are processed by cpp and switches the


"include/dt-dtsi/" can be referenced from normal C sources.

I think another possible home for cross-arch DTSI is "kernel/dts/".
This directory can be hidden from C sources.




> .dts files to use cpp #include instead of /include/. The dtsi file
> itself is moved into a vendor subdir in this case "arm" (the vendor,
> not the ARCH=).
>
> [0] https://git.kernel.org/cgit/linux/kernel/git/devicetree/devicetree-rebasing.git/
>
> Signed-off-by: Ian Campbell <[email protected]>
> Cc: Rob Herring <[email protected]>
> Cc: Pawel Moll <[email protected]>
> Cc: Mark Rutland <[email protected]>
> Cc: Kumar Gala <[email protected]>
> Cc: Liviu Dudau <[email protected]>
> Cc: Sudeep Holla <[email protected]>
> Cc: Lorenzo Pieralisi <[email protected]>
> Cc: Russell King <[email protected]>
> Cc: Catalin Marinas <[email protected]>
> Cc: Will Deacon <[email protected]>
> Cc: Kristina Martsenko <[email protected]>
> Cc: Kevin Hilman <[email protected]>
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> Cc: [email protected]
> ---
> v2: Move to include/dt-dtsi and introduce a per-vendor subdirectory.
> ---
> Documentation/devicetree/bindings/arm/vexpress.txt | 4 ++--
> arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts | 2 +-
> arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts | 2 +-
> arch/arm/boot/dts/vexpress-v2p-ca5s.dts | 2 +-
> arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts | 2 +-
> {arch/arm/boot/dts => include/dt-dtsi/arm}/vexpress-v2m-rs1.dtsi | 0
> scripts/Makefile.lib | 1 +
> 7 files changed, 7 insertions(+), 6 deletions(-)
> rename {arch/arm/boot/dts => include/dt-dtsi/arm}/vexpress-v2m-rs1.dtsi (100%)
>
> diff --git a/Documentation/devicetree/bindings/arm/vexpress.txt b/Documentation/devicetree/bindings/arm/vexpress.txt
> index 39844cd..dccf570 100644
> --- a/Documentation/devicetree/bindings/arm/vexpress.txt
> +++ b/Documentation/devicetree/bindings/arm/vexpress.txt
> @@ -7,7 +7,7 @@ peripherals. Processor and RAM "live" on the tiles.
>
> The motherboard and each core tile should be described by a separate
> Device Tree source file, with the tile's description including
> -the motherboard file using a /include/ directive. As the motherboard
> +the motherboard file using a #include directive. As the motherboard
> can be initialized in one of two different configurations ("memory
> maps"), care must be taken to include the correct one.
>
> @@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
> /* Active high IRQ 0 is connected to GIC's SPI0 */
> interrupt-map = <0 0 0 &gic 0 0 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };



You do not have to replace /include/ with #include,
if you add the include path for DTC.



> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
> index 9420053..7ea7054 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca15-tc1.dts
> @@ -278,6 +278,6 @@
> <0 0 41 &gic 0 41 4>,
> <0 0 42 &gic 0 42 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> index 17f63f7..afe997a4 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca15_a7.dts
> @@ -636,6 +636,6 @@
> <0 0 41 &gic 0 41 4>,
> <0 0 42 &gic 0 42 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
> index d2709b7..498181c 100644
> --- a/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
> +++ b/arch/arm/boot/dts/vexpress-v2p-ca5s.dts
> @@ -248,6 +248,6 @@
> <0 0 41 &gic 0 41 4>,
> <0 0 42 &gic 0 42 4>;
>
> - /include/ "vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
> index 5b1d018..b86c5a8 100644
> --- a/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
> +++ b/arch/arm64/boot/dts/arm/vexpress-v2f-1xv7-ca53x2.dts
> @@ -186,6 +186,6 @@
> <0 0 41 &gic GIC_SPI 41 IRQ_TYPE_LEVEL_HIGH>,
> <0 0 42 &gic GIC_SPI 42 IRQ_TYPE_LEVEL_HIGH>;
>
> - /include/ "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi"
> + #include <arm/vexpress-v2m-rs1.dtsi>
> };
> };
> diff --git a/arch/arm/boot/dts/vexpress-v2m-rs1.dtsi b/include/dt-dtsi/arm/vexpress-v2m-rs1.dtsi
> similarity index 100%
> rename from arch/arm/boot/dts/vexpress-v2m-rs1.dtsi
> rename to include/dt-dtsi/arm/vexpress-v2m-rs1.dtsi
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 79e8661..0d948d4 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -163,6 +163,7 @@ dtc_cpp_flags = -Wp,-MD,$(depfile).pre.tmp -nostdinc \
> -I$(srctree)/arch/$(SRCARCH)/boot/dts \
> -I$(srctree)/arch/$(SRCARCH)/boot/dts/include \
> -I$(srctree)/drivers/of/testcase-data \
> + -I$(srctree)/include/dt-dtsi \
> -undef -D__DTS__
>
> # Finds the multi-part object the current object will be linked into


Please add include path for DTC too
so that both /include/ and #include are available.



diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
index 79e8661..fc6c06c 100644
--- a/scripts/Makefile.lib
+++ b/scripts/Makefile.lib
@@ -285,7 +285,7 @@ quiet_cmd_dtc = DTC $@
cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
$(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ; \
$(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
- -i $(dir $<) $(DTC_FLAGS) \
+ -i $(dir $<) -i $(srctree)/kernel/dts $(DTC_FLAGS) \
-d $(depfile).dtc.tmp $(dtc-tmp) ; \
cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)




--
Best Regards
Masahiro Yamada

2015-07-29 13:23:04

by Ian Campbell

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
> Hi Ian,
>
>
> 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
> > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
> > LogicTile Express 20MG" added a new dts file to arch/arm64 which
> > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
> > .dtsi supplied by arch/arm.
> >
> > Unfortunately this causes some issues for the split device tree
> > repository[0], since things get moved around there. In that context
> > the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
> > while the include is at src/arm/vexpress-v2m-rs1.dtsi.
> >
> > The sharing of the .dtsi is legitimate since the baseboard is the same
> > for various vexpress systems whatever processor they use.
> >
> > Rather than using ../../ tricks to pickup .dtsi files from another
> > arch this patch creates a new directory include/dt-dtsi as a
> > home for such cross-arch .dtsi files, arranges for it to be in the
> > include path when the .dts files are processed by cpp and switches the
>
>
> "include/dt-dtsi/" can be referenced from normal C sources.
>
> I think another possible home for cross-arch DTSI is "kernel/dts/".
> This directory can be hidden from C sources.

I suppose, I don't really mind and will follow the direction of the other
DTB maintainers. It doesn't seem like a big deal to me.

> >@@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
> > /* Active high IRQ 0 is connected to GIC's SPI0 */
> > interrupt-map = <0 0 0 &gic 0 0 4>;
> >
> > - /include/ "vexpress-v2m-rs1.dtsi"
> > + #include <arm/vexpress-v2m-rs1.dtsi>
> > };
> > };
>
>
>
> You do not have to replace /include/ with #include,
> if you add the include path for DTC.

Ah, I looked for this but -i is not documented in the man page.

Is there any reason to prefer one over the other?

> Please add include path for DTC too
> so that both /include/ and #include are available.

OK.

I shall await further feedback on what path to use before spinning a v3.

Ian.

>
>
>
> diff --git a/scripts/Makefile.lib b/scripts/Makefile.lib
> index 79e8661..fc6c06c 100644
> --- a/scripts/Makefile.lib
> +++ b/scripts/Makefile.lib
> @@ -285,7 +285,7 @@ quiet_cmd_dtc = DTC $@
> cmd_dtc = mkdir -p $(dir ${dtc-tmp}) ; \
> $(CPP) $(dtc_cpp_flags) -x assembler-with-cpp -o $(dtc-tmp) $< ;
> \
> $(objtree)/scripts/dtc/dtc -O dtb -o $@ -b 0 \
> - -i $(dir $<) $(DTC_FLAGS) \
> + -i $(dir $<) -i $(srctree)/kernel/dts $(DTC_FLAGS) \
> -d $(depfile).dtc.tmp $(dtc-tmp) ; \
> cat $(depfile).pre.tmp $(depfile).dtc.tmp > $(depfile)
>
>
>
>

2015-07-29 13:28:31

by Mark Rutland

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

On Wed, Jul 29, 2015 at 02:22:54PM +0100, Ian Campbell wrote:
> On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
> > Hi Ian,
> >
> >
> > 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
> > > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
> > > LogicTile Express 20MG" added a new dts file to arch/arm64 which
> > > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
> > > .dtsi supplied by arch/arm.
> > >
> > > Unfortunately this causes some issues for the split device tree
> > > repository[0], since things get moved around there. In that context
> > > the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
> > > while the include is at src/arm/vexpress-v2m-rs1.dtsi.
> > >
> > > The sharing of the .dtsi is legitimate since the baseboard is the same
> > > for various vexpress systems whatever processor they use.
> > >
> > > Rather than using ../../ tricks to pickup .dtsi files from another
> > > arch this patch creates a new directory include/dt-dtsi as a
> > > home for such cross-arch .dtsi files, arranges for it to be in the
> > > include path when the .dts files are processed by cpp and switches the
> >
> >
> > "include/dt-dtsi/" can be referenced from normal C sources.
> >
> > I think another possible home for cross-arch DTSI is "kernel/dts/".
> > This directory can be hidden from C sources.
>
> I suppose, I don't really mind and will follow the direction of the other
> DTB maintainers. It doesn't seem like a big deal to me.

I don't really have a preference either way.

> > >@@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
> > > /* Active high IRQ 0 is connected to GIC's SPI0 */
> > > interrupt-map = <0 0 0 &gic 0 0 4>;
> > >
> > > - /include/ "vexpress-v2m-rs1.dtsi"
> > > + #include <arm/vexpress-v2m-rs1.dtsi>
> > > };
> > > };
> >
> >
> >
> > You do not have to replace /include/ with #include,
> > if you add the include path for DTC.
>
> Ah, I looked for this but -i is not documented in the man page.
>
> Is there any reason to prefer one over the other?

#include allows you to use CPP in the file you're including, /include/
does not.

I would imagine we have to use #include in case the dtsi itself has
#include statements...

> > Please add include path for DTC too
> > so that both /include/ and #include are available.

... though that does not preclude adding it to the path for /include/.

Thanks,
Mark.

2015-07-29 14:38:18

by Ian Campbell

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

On Wed, 2015-07-29 at 14:27 +0100, Mark Rutland wrote:
> On Wed, Jul 29, 2015 at 02:22:54PM +0100, Ian Campbell wrote:
> > On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
> > > Hi Ian,
> > >
> > >
> > > 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
> > > > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2
> > > > on
> > > > LogicTile Express 20MG" added a new dts file to arch/arm64 which
> > > > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
> > > > .dtsi supplied by arch/arm.
> > > >
> > > > Unfortunately this causes some issues for the split device tree
> > > > repository[0], since things get moved around there. In that context
> > > > the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
> > > > while the include is at src/arm/vexpress-v2m-rs1.dtsi.
> > > >
> > > > The sharing of the .dtsi is legitimate since the baseboard is the
> > > > same
> > > > for various vexpress systems whatever processor they use.
> > > >
> > > > Rather than using ../../ tricks to pickup .dtsi files from another
> > > > arch this patch creates a new directory include/dt-dtsi as a
> > > > home for such cross-arch .dtsi files, arranges for it to be in the
> > > > include path when the .dts files are processed by cpp and switches
> > > > the
> > >
> > >
> > > "include/dt-dtsi/" can be referenced from normal C sources.
> > >
> > > I think another possible home for cross-arch DTSI is "kernel/dts/".
> > > This directory can be hidden from C sources.
> >
> > I suppose, I don't really mind and will follow the direction of the
> > other
> > DTB maintainers. It doesn't seem like a big deal to me.
>
> I don't really have a preference either way.

I'm inclined to leave it, "visible to C sources" doesn't seem like that
much of an issue and IMHO the cure (kernel/dts/...) is worse than the
disease.

@@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
> > > > /* Active high IRQ 0 is connected to GIC's SPI0 */
> > > > interrupt-map = <0 0 0 &gic 0 0 4>;
> > > >
> > > > - /include/ "vexpress-v2m-rs1.dtsi"
> > > > + #include <arm/vexpress-v2m-rs1.dtsi>
> > > > };
> > > > };
> > >
> > >
> > >
> > > You do not have to replace /include/ with #include,
> > > if you add the include path for DTC.
> >
> > Ah, I looked for this but -i is not documented in the man page.
> >
> > Is there any reason to prefer one over the other?
>
> #include allows you to use CPP in the file you're including, /include/
> does not.
>
> I would imagine we have to use #include in case the dtsi itself has
> #include statements...

If it did, yes. I don't think vexpress-v2m-rs1.dtsi does, since it is using
/include/ today. I'm inclined to switch back to /include/ unless someone
objects.

> > > Please add include path for DTC too
> > > so that both /include/ and #include are available.
>
> ... though that does not preclude adding it to the path for /include/.

Indeed, I've done that locally already.

Ian.

2015-07-29 15:23:58

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

On Wed, Jul 29, 2015 at 8:22 AM, Ian Campbell <[email protected]> wrote:
> On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
>> Hi Ian,
>>
>>
>> 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
>> > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
>> > LogicTile Express 20MG" added a new dts file to arch/arm64 which
>> > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
>> > .dtsi supplied by arch/arm.
>> >
>> > Unfortunately this causes some issues for the split device tree
>> > repository[0], since things get moved around there. In that context
>> > the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
>> > while the include is at src/arm/vexpress-v2m-rs1.dtsi.
>> >
>> > The sharing of the .dtsi is legitimate since the baseboard is the same
>> > for various vexpress systems whatever processor they use.
>> >
>> > Rather than using ../../ tricks to pickup .dtsi files from another
>> > arch this patch creates a new directory include/dt-dtsi as a
>> > home for such cross-arch .dtsi files, arranges for it to be in the
>> > include path when the .dts files are processed by cpp and switches the
>>
>>
>> "include/dt-dtsi/" can be referenced from normal C sources.
>>
>> I think another possible home for cross-arch DTSI is "kernel/dts/".
>> This directory can be hidden from C sources.
>
> I suppose, I don't really mind and will follow the direction of the other
> DTB maintainers. It doesn't seem like a big deal to me.

Seems fine to me. We might think of other things to put here that are
not includes. Overlays perhaps?

>
>> >@@ -223,7 +223,7 @@ Example of a VE tile description (simplified)
>> > /* Active high IRQ 0 is connected to GIC's SPI0 */
>> > interrupt-map = <0 0 0 &gic 0 0 4>;
>> >
>> > - /include/ "vexpress-v2m-rs1.dtsi"
>> > + #include <arm/vexpress-v2m-rs1.dtsi>
>> > };
>> > };
>>
>>
>>
>> You do not have to replace /include/ with #include,
>> if you add the include path for DTC.
>
> Ah, I looked for this but -i is not documented in the man page.
>
> Is there any reason to prefer one over the other?

Yes, so you don't force the use of the C preprocessor.

Rob

2015-07-30 01:30:45

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

Hi,


2015-07-30 0:23 GMT+09:00 Rob Herring <[email protected]>:
> On Wed, Jul 29, 2015 at 8:22 AM, Ian Campbell <[email protected]> wrote:
>> On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
>>> Hi Ian,
>>>
>>>
>>> 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
>>> > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
>>> > LogicTile Express 20MG" added a new dts file to arch/arm64 which
>>> > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
>>> > .dtsi supplied by arch/arm.
>>> >
>>> > Unfortunately this causes some issues for the split device tree
>>> > repository[0], since things get moved around there. In that context
>>> > the new .dts ends up at src/arm64/arm/vexpress-v2f-1xv7-ca53x2.dts
>>> > while the include is at src/arm/vexpress-v2m-rs1.dtsi.
>>> >
>>> > The sharing of the .dtsi is legitimate since the baseboard is the same
>>> > for various vexpress systems whatever processor they use.
>>> >
>>> > Rather than using ../../ tricks to pickup .dtsi files from another
>>> > arch this patch creates a new directory include/dt-dtsi as a
>>> > home for such cross-arch .dtsi files, arranges for it to be in the
>>> > include path when the .dts files are processed by cpp and switches the
>>>
>>>
>>> "include/dt-dtsi/" can be referenced from normal C sources.
>>>
>>> I think another possible home for cross-arch DTSI is "kernel/dts/".
>>> This directory can be hidden from C sources.
>>
>> I suppose, I don't really mind and will follow the direction of the other
>> DTB maintainers. It doesn't seem like a big deal to me.
>
> Seems fine to me. We might think of other things to put here that are
> not includes. Overlays perhaps?


Putting device trees below "include/" seems weird to me.


I thought, kernel/ is a place where we put something common among
architectures.


"kernel/configs/" was created as a home for cross-arch config fragments.


arch/${ARCH}/configs/ - arch-specific *_defconfig and *.config
kernel/configs/ - arch-common *.config


Likewise,

arch/${ARCH}/boot/dts - arch-specific *.dts and *.dtsi
kernel/dts - arch-common *.dtsi


This is just a matter of preference, though.



--
Best Regards
Masahiro Yamada

2015-07-31 05:46:39

by Masahiro Yamada

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

Hi.

2015-07-30 10:30 GMT+09:00 Masahiro Yamada <[email protected]>:
> Hi,
>
>
> 2015-07-30 0:23 GMT+09:00 Rob Herring <[email protected]>:
>> On Wed, Jul 29, 2015 at 8:22 AM, Ian Campbell <[email protected]> wrote:
>>> On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
>>>> Hi Ian,
>>>>
>>>>
>>>> 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
>>>> > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
>>>> > LogicTile Express 20MG" added a new dts file to arch/arm64 which
>>>> > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
>>>> > .dtsi supplied by arch/arm.



BTW, is there any chance to merge arch/arm64 and arch/arm in the future?

For example, U-boot supports ARM64/32 in a single arch directory, arch/arm/.


I guess, the cross-arch home directory for DTSI would be only used to
share device trees between arm64 and arm32.





--
Best Regards
Masahiro Yamada

2015-07-31 13:06:15

by Rob Herring

[permalink] [raw]
Subject: Re: [PATCH v2] dtb: Create a common home for cross-architecture dtsi files.

On Fri, Jul 31, 2015 at 12:46 AM, Masahiro Yamada
<[email protected]> wrote:
> Hi.
>
> 2015-07-30 10:30 GMT+09:00 Masahiro Yamada <[email protected]>:
>> Hi,
>>
>>
>> 2015-07-30 0:23 GMT+09:00 Rob Herring <[email protected]>:
>>> On Wed, Jul 29, 2015 at 8:22 AM, Ian Campbell <[email protected]> wrote:
>>>> On Wed, 2015-07-29 at 20:07 +0900, Masahiro Yamada wrote:
>>>>> Hi Ian,
>>>>>
>>>>>
>>>>> 2015-07-27 19:35 GMT+09:00 Ian Campbell <[email protected]>:
>>>>> > Commit 9ccd608070b6 "arm64: dts: add device tree for ARM SMM-A53x2 on
>>>>> > LogicTile Express 20MG" added a new dts file to arch/arm64 which
>>>>> > included "../../../../arm/boot/dts/vexpress-v2m-rs1.dtsi", i.e. a
>>>>> > .dtsi supplied by arch/arm.
>
>
>
> BTW, is there any chance to merge arch/arm64 and arch/arm in the future?

In the kernel tree, not likely. It may happen if we ever move dts
files out of the kernel.

> For example, U-boot supports ARM64/32 in a single arch directory, arch/arm/.
>
>
> I guess, the cross-arch home directory for DTSI would be only used to
> share device trees between arm64 and arm32.

For SOC files, I think the amount sharing will be limited. While we
will probably see very similar SOCs, I'd guess the memory maps and
irqs will be different. Sharing is going to be limited to things like
daughter boards such as this case.

Rob