Re: [PATCH v5 1/1] arm64: dts: exynos: Add initial device tree support for Exynos7885 SoC

From: Krzysztof Kozlowski
Date: Sat Feb 12 2022 - 11:38:16 EST


On 07/02/2022 00:18, David Virag wrote:
> Add initial Exynos7885 device tree nodes with dts for the Samsung Galaxy
> A8 (2018), a.k.a. "jackpotlte", with model number "SM-A530F".
> Currently this includes some clock support, UART support, and I2C nodes.
>
> Signed-off-by: David Virag <virag.david003@xxxxxxxxx>
> ---
> Changes in v2:
> - Remove address-cells, and size-cells from dts, since they are
> already in the dtsi.
> - Lower case hex in memory node
> - Fix node names with underscore instead of hyphen
> - Fix line breaks
> - Fix "-key" missing from gpio keys node names
> - Use the form without "key" in gpio key labels on all keys
> - Suffix pin configuration node names with "-pins"
> - Remove "fimc_is_mclk" nodes from pinctrl dtsi for now
> - Use macros for "samsung,pin-con-pdn", and "samsung,pin-con-pdn"
> - Add comment about Arm PMU
> - Rename "clock-oscclk" to "osc-clock"
> - Include exynos-syscon-restart.dtsi instead of rewriting its contents
>
> Changes in v3:
> - Fix typo (seperate -> separate)
>
> Changes in v4:
> - Fixed leading 0x in clock-controller nodes
> - Actually suffixed pin configuration node names with "-pins"
> - Seperated Cortex-A53 and Cortex-A73 PMU
>
> Changes in v5:
> - Use "-gpio-bank" suffix in gpio bank nodes
> - Remove interrupts from gpio-keys
> - Move oscclk clock-frequency to board dts
> - Seperate cmu_core clock names into 4 lines
> - Use EXYNOS5420_PIN_DRV_LVx macros
> - Add missing include from pinctrl dtsi
> - Drop decon pinctrl nodes
> - Order pinctrls by addresses
>
> arch/arm64/boot/dts/exynos/Makefile | 7 +-
> .../boot/dts/exynos/exynos7885-jackpotlte.dts | 93 ++
> .../boot/dts/exynos/exynos7885-pinctrl.dtsi | 855 ++++++++++++++++++
> arch/arm64/boot/dts/exynos/exynos7885.dtsi | 440 +++++++++
> 4 files changed, 1392 insertions(+), 3 deletions(-)
> create mode 100644 arch/arm64/boot/dts/exynos/exynos7885-jackpotlte.dts
> create mode 100644 arch/arm64/boot/dts/exynos/exynos7885-pinctrl.dtsi
> create mode 100644 arch/arm64/boot/dts/exynos/exynos7885.dtsi
>

Tried to apply and there was a conflict in Makefile, so this looks like
based on something wrong. Patches should be based on maintainer's tree,
which can be easily achieved by basing just on linux-next.

Anyway, I fixed the conflicts but it fails new pinctrl schema (already
in next) with few errors. This looks like the same error exynos850 had:
https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git/commit/?h=next/dt64&id=daeb1c2b50fb98118d6318b5fdbd9ef9bdfaeaf5
also maybe:
https://git.kernel.org/pub/scm/linux/kernel/git/krzk/linux.git/commit/?h=next/dt64&id=f377d4d4beafca755d2b6e6368895b1f3fb383c6

DTSI or schema might need adjustement.

> diff --git a/arch/arm64/boot/dts/exynos/Makefile b/arch/arm64/boot/dts/exynos/Makefile
> index b41e86df0a84..c68c4ad577ac 100644
> --- a/arch/arm64/boot/dts/exynos/Makefile
> +++ b/arch/arm64/boot/dts/exynos/Makefile
> @@ -1,6 +1,7 @@
> # SPDX-License-Identifier: GPL-2.0
> dtb-$(CONFIG_ARCH_EXYNOS) += \
> - exynos5433-tm2.dtb \
> - exynos5433-tm2e.dtb \
> - exynos7-espresso.dtb \
> + exynos5433-tm2.dtb \
> + exynos5433-tm2e.dtb \
> + exynos7-espresso.dtb \
> + exynos7885-jackpotlte.dtb \

Please rebase.

> exynosautov9-sadk.dtb
> diff --git a/arch/arm64/boot/dts/exynos/exynos7885-jackpotlte.dts b/arch/arm64/boot/dts/exynos/exynos7885-jackpotlte.dts
> new file mode 100644
> index 000000000000..d707dba906d1
> --- /dev/null
> +++ b/arch/arm64/boot/dts/exynos/exynos7885-jackpotlte.dts
> @@ -0,0 +1,93 @@
> +// SPDX-License-Identifier: GPL-2.0
> +/*
> + * Samsung Galaxy A8 2018 (jackpotlte/SM-A530F) device tree source
> + *
> + * Copyright (c) 2021 Samsung Electronics Co., Ltd.
> + * Copyright (c) 2021 Dávid Virág
> + *

No need for blank line.

> + */
> +
> +/dts-v1/;
> +#include "exynos7885.dtsi"
> +#include <dt-bindings/gpio/gpio.h>
> +#include <dt-bindings/input/input.h>
> +#include <dt-bindings/interrupt-controller/irq.h>
> +
> +/ {
> + model = "Samsung Galaxy A8 (2018)";
> + compatible = "samsung,jackpotlte", "samsung,exynos7885";
> + chassis-type = "handset";
> +
> + aliases {
> + serial0 = &serial_0;
> + serial1 = &serial_1;
> + serial2 = &serial_2;
> + };
> +
> + chosen {
> + stdout-path = &serial_2;
> + };
> +
> + memory@80000000 {
> + device_type = "memory";
> + reg = <0x0 0x80000000 0x3da00000>,
> + <0x0 0xc0000000 0x40000000>,
> + <0x8 0x80000000 0x40000000>;
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> + pinctrl-names = "default";
> + pinctrl-0 = <&key_volup &key_voldown &key_power>;
> +
> + volup-key {
> + label = "Volume Up";
> + linux,code = <KEY_VOLUMEUP>;
> + gpios = <&gpa1 5 GPIO_ACTIVE_LOW>;
> + };
> +
> + voldown-key {
> + label = "Volume Down";
> + linux,code = <KEY_VOLUMEDOWN>;
> + gpios = <&gpa1 6 GPIO_ACTIVE_LOW>;
> + };
> +
> + power-key {
> + label = "Power";
> + linux,code = <KEY_POWER>;
> + gpios = <&gpa1 7 GPIO_ACTIVE_LOW>;
> + wakeup-source;
> + };
> + };
> +};
> +
> +&serial_2 {
> + status = "okay";
> +};
> +
> +&pinctrl_alive {
> + key_volup: key-volup-pins {
> + samsung,pins = "gpa1-5";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +
> + key_voldown: key-voldown-pins {
> + samsung,pins = "gpa1-6";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +
> + key_power: key-power-pins {
> + samsung,pins = "gpa1-7";
> + samsung,pin-function = <EXYNOS_PIN_FUNC_F>;
> + samsung,pin-pud = <EXYNOS_PIN_PULL_NONE>;
> + samsung,pin-drv = <EXYNOS5420_PIN_DRV_LV1>;
> + };
> +};
> +
> +&oscclk {

Order overriden nodes alphabeticall by label name, so (ossclk,
pinctrl_alive, serial).

Best regards,
Krzysztof