Re: [PATCH 2/2] arm64: dts: apple: Add missing M1 (t8103) devices

From: Mark Kettenis
Date: Fri Nov 19 2021 - 06:25:56 EST


> From: Janne Grunau <j@xxxxxxxxxx>
> Cc: Mark Kettenis <mark.kettenis@xxxxxxxxx>,
> linux-arm-kernel@xxxxxxxxxxxxxxxxxxx, devicetree@xxxxxxxxxxxxxxx,
> linux-kernel@xxxxxxxxxxxxxxx
> Date: Tue, 16 Nov 2021 22:53:15 +0100
>
> This adds support for following Apple M1 devices:
> - MacBook Pro (13-inch, M1, 2020)
> - MacBook Air (M1, 2020)
> - iMac (24-inch 2021)
>
> Signed-off-by: Janne Grunau <j@xxxxxxxxxx>
> ---
> arch/arm64/boot/dts/apple/Makefile | 4 ++
> arch/arm64/boot/dts/apple/t8103-j274.dts | 29 +-------------
> arch/arm64/boot/dts/apple/t8103-j293.dts | 33 +++++++++++++++
> arch/arm64/boot/dts/apple/t8103-j313.dts | 33 +++++++++++++++
> arch/arm64/boot/dts/apple/t8103-j456.dts | 41 +++++++++++++++++++
> arch/arm64/boot/dts/apple/t8103-j457.dts | 47 ++++++++++++++++++++++
> arch/arm64/boot/dts/apple/t8103-jxxx.dtsi | 49 +++++++++++++++++++++++
> 7 files changed, 208 insertions(+), 28 deletions(-)
> create mode 100644 arch/arm64/boot/dts/apple/t8103-j293.dts
> create mode 100644 arch/arm64/boot/dts/apple/t8103-j313.dts
> create mode 100644 arch/arm64/boot/dts/apple/t8103-j456.dts
> create mode 100644 arch/arm64/boot/dts/apple/t8103-j457.dts
> create mode 100644 arch/arm64/boot/dts/apple/t8103-jxxx.dtsi

There are multiple ways to skin this cat. But I think this is a
reasonable way to do things and this should work fine for U-Boot and
OpenBSD.

Reviewed-by: Mark Kettenis <kettenis@xxxxxxxxxxx>

> diff --git a/arch/arm64/boot/dts/apple/Makefile b/arch/arm64/boot/dts/apple/Makefile
> index cbbd701ebf05..c0510c25ca6a 100644
> --- a/arch/arm64/boot/dts/apple/Makefile
> +++ b/arch/arm64/boot/dts/apple/Makefile
> @@ -1,2 +1,6 @@
> # SPDX-License-Identifier: GPL-2.0
> dtb-$(CONFIG_ARCH_APPLE) += t8103-j274.dtb
> +dtb-$(CONFIG_ARCH_APPLE) += t8103-j293.dtb
> +dtb-$(CONFIG_ARCH_APPLE) += t8103-j313.dtb
> +dtb-$(CONFIG_ARCH_APPLE) += t8103-j456.dtb
> +dtb-$(CONFIG_ARCH_APPLE) += t8103-j457.dtb
> diff --git a/arch/arm64/boot/dts/apple/t8103-j274.dts b/arch/arm64/boot/dts/apple/t8103-j274.dts
> index 02c36301e985..9e01ef70039d 100644
> --- a/arch/arm64/boot/dts/apple/t8103-j274.dts
> +++ b/arch/arm64/boot/dts/apple/t8103-j274.dts
> @@ -10,39 +10,15 @@
> /dts-v1/;
>
> #include "t8103.dtsi"
> +#include "t8103-jxxx.dtsi"
>
> / {
> compatible = "apple,j274", "apple,t8103", "apple,arm-platform";
> model = "Apple Mac mini (M1, 2020)";
>
> aliases {
> - serial0 = &serial0;
> ethernet0 = &ethernet0;
> };
> -
> - chosen {
> - #address-cells = <2>;
> - #size-cells = <2>;
> - ranges;
> -
> - stdout-path = "serial0";
> -
> - framebuffer0: framebuffer@0 {
> - compatible = "apple,simple-framebuffer", "simple-framebuffer";
> - reg = <0 0 0 0>; /* To be filled by loader */
> - /* Format properties will be added by loader */
> - status = "disabled";
> - };
> - };
> -
> - memory@800000000 {
> - device_type = "memory";
> - reg = <0x8 0 0x2 0>; /* To be filled by loader */
> - };
> -};
> -
> -&serial0 {
> - status = "okay";
> };
>
> /*
> @@ -50,9 +26,6 @@ &serial0 {
> * on-board devices and properties that are populated by the bootloader
> * (such as MAC addresses).
> */
> -&port00 {
> - bus-range = <1 1>;
> -};
>
> &port01 {
> bus-range = <2 2>;
> diff --git a/arch/arm64/boot/dts/apple/t8103-j293.dts b/arch/arm64/boot/dts/apple/t8103-j293.dts
> new file mode 100644
> index 000000000000..466035f00b69
> --- /dev/null
> +++ b/arch/arm64/boot/dts/apple/t8103-j293.dts
> @@ -0,0 +1,33 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR MIT
> +/*
> + * Apple MacBook Pro (13-inch, M1, 2020)
> + *
> + * target-type: J293
> + *
> + * Copyright The Asahi Linux Contributors
> + */
> +
> +/dts-v1/;
> +
> +#include "t8103.dtsi"
> +#include "t8103-jxxx.dtsi"
> +
> +/ {
> + compatible = "apple,j293", "apple,t8103", "apple,arm-platform";
> + model = "Apple MacBook Pro (13-inch, M1, 2020)";
> +};
> +
> +/*
> + * Remove unused PCIe ports and disable the associated DARTs.
> + */
> +
> +&pcie0_dart_1 {
> + status = "disabled";
> +};
> +
> +&pcie0_dart_2 {
> + status = "disabled";
> +};
> +
> +/delete-node/ &port01;
> +/delete-node/ &port02;
> diff --git a/arch/arm64/boot/dts/apple/t8103-j313.dts b/arch/arm64/boot/dts/apple/t8103-j313.dts
> new file mode 100644
> index 000000000000..b0ebb45bdb6f
> --- /dev/null
> +++ b/arch/arm64/boot/dts/apple/t8103-j313.dts
> @@ -0,0 +1,33 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR MIT
> +/*
> + * Apple MacBook Air (M1, 2020)
> + *
> + * target-type: J313
> + *
> + * Copyright The Asahi Linux Contributors
> + */
> +
> +/dts-v1/;
> +
> +#include "t8103.dtsi"
> +#include "t8103-jxxx.dtsi"
> +
> +/ {
> + compatible = "apple,j313", "apple,t8103", "apple,arm-platform";
> + model = "Apple MacBook Air (M1, 2020)";
> +};
> +
> +/*
> + * Remove unused PCIe ports and disable the associated DARTs.
> + */
> +
> +&pcie0_dart_1 {
> + status = "disabled";
> +};
> +
> +&pcie0_dart_2 {
> + status = "disabled";
> +};
> +
> +/delete-node/ &port01;
> +/delete-node/ &port02;
> diff --git a/arch/arm64/boot/dts/apple/t8103-j456.dts b/arch/arm64/boot/dts/apple/t8103-j456.dts
> new file mode 100644
> index 000000000000..7267e069355b
> --- /dev/null
> +++ b/arch/arm64/boot/dts/apple/t8103-j456.dts
> @@ -0,0 +1,41 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR MIT
> +/*
> + * Apple iMac (24-inch, 4x USB-C, M1, 2020)
> + *
> + * target-type: J456
> + *
> + * Copyright The Asahi Linux Contributors
> + */
> +
> +/dts-v1/;
> +
> +#include "t8103.dtsi"
> +#include "t8103-jxxx.dtsi"
> +
> +/ {
> + compatible = "apple,j456", "apple,t8103", "apple,arm-platform";
> + model = "Apple iMac (24-inch, 4x USB-C, M1, 2020)";
> +
> + aliases {
> + ethernet0 = &ethernet0;
> + };
> +};
> +
> +/*
> + * Force the bus number assignments so that we can declare some of the
> + * on-board devices and properties that are populated by the bootloader
> + * (such as MAC addresses).
> + */
> +
> +&port01 {
> + bus-range = <2 2>;
> +};
> +
> +&port02 {
> + bus-range = <3 3>;
> + ethernet0: ethernet@0,0 {
> + reg = <0x30000 0x0 0x0 0x0 0x0>;
> + /* To be filled by the loader */
> + local-mac-address = [00 10 18 00 00 00];
> + };
> +};
> diff --git a/arch/arm64/boot/dts/apple/t8103-j457.dts b/arch/arm64/boot/dts/apple/t8103-j457.dts
> new file mode 100644
> index 000000000000..d7c622931627
> --- /dev/null
> +++ b/arch/arm64/boot/dts/apple/t8103-j457.dts
> @@ -0,0 +1,47 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR MIT
> +/*
> + * Apple iMac (24-inch, 2x USB-C, M1, 2020)
> + *
> + * target-type: J457
> + *
> + * Copyright The Asahi Linux Contributors
> + */
> +
> +/dts-v1/;
> +
> +#include "t8103.dtsi"
> +#include "t8103-jxxx.dtsi"
> +
> +/ {
> + compatible = "apple,j457", "apple,t8103", "apple,arm-platform";
> + model = "Apple iMac (24-inch, 2x USB-C, M1, 2020)";
> +
> + aliases {
> + ethernet0 = &ethernet0;
> + };
> +};
> +
> +/*
> + * Force the bus number assignments so that we can declare some of the
> + * on-board devices and properties that are populated by the bootloader
> + * (such as MAC addresses).
> + */
> +
> +&port02 {
> + bus-range = <3 3>;
> + ethernet0: ethernet@0,0 {
> + reg = <0x30000 0x0 0x0 0x0 0x0>;
> + /* To be filled by the loader */
> + local-mac-address = [00 10 18 00 00 00];
> + };
> +};
> +
> +/*
> + * Remove unused PCIe port and disable the associated DART.
> + */
> +
> +&pcie0_dart_1 {
> + status = "disabled";
> +};
> +
> +/delete-node/ &port01;
> diff --git a/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
> new file mode 100644
> index 000000000000..53d22b434d76
> --- /dev/null
> +++ b/arch/arm64/boot/dts/apple/t8103-jxxx.dtsi
> @@ -0,0 +1,49 @@
> +// SPDX-License-Identifier: GPL-2.0+ OR MIT
> +/*
> + * Apple M1 Mac mini, MacBook Air/Pro, iMac 24" (M1, 2020/2021)
> + *
> + * This file contains parts common to all Apple M1 devices using the t8103.
> + *
> + * target-type: J274, J293, J313, J456, J457
> + *
> + * Copyright The Asahi Linux Contributors
> + */
> +
> +/ {
> + aliases {
> + serial0 = &serial0;
> + };
> +
> + chosen {
> + #address-cells = <2>;
> + #size-cells = <2>;
> + ranges;
> +
> + stdout-path = "serial0";
> +
> + framebuffer0: framebuffer@0 {
> + compatible = "apple,simple-framebuffer", "simple-framebuffer";
> + reg = <0 0 0 0>; /* To be filled by loader */
> + /* Format properties will be added by loader */
> + status = "disabled";
> + };
> + };
> +
> + memory@800000000 {
> + device_type = "memory";
> + reg = <0x8 0 0x2 0>; /* To be filled by loader */
> + };
> +};
> +
> +&serial0 {
> + status = "okay";
> +};
> +
> +/*
> + * Force the bus number assignments so that we can declare some of the
> + * on-board devices and properties that are populated by the bootloader
> + * (such as MAC addresses).
> + */
> +&port00 {
> + bus-range = <1 1>;
> +};
> --
> 2.33.1
>
>