2022-07-17 21:38:57

by Matti Lehtimäki

[permalink] [raw]
Subject: [PATCH 0/3] Initial Samsung Galaxy Tab 4 10.1 (SM-T530) support

Add device tree node for pm8226 GPIOs and support for the Samsung Galaxy
Tab 4 10.1 (SM-T530) tablet which is based on apq8026.

Matti Lehtimäki (3):
ARM: dts: qcom: pm8226: Add node for the GPIOs
dt-bindings: arm: qcom: Document samsung,matissewifi device
ARM: dts: qcom: Add support for Samsung Galaxy Tab 4 10.1 (SM-T530)

.../devicetree/bindings/arm/qcom.yaml | 1 +
arch/arm/boot/dts/Makefile | 1 +
.../dts/qcom-apq8026-samsung-matissewifi.dts | 475 ++++++++++++++++++
arch/arm/boot/dts/qcom-pm8226.dtsi | 10 +
4 files changed, 487 insertions(+)
create mode 100644 arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts

--
2.34.1


2022-07-17 21:40:01

by Matti Lehtimäki

[permalink] [raw]
Subject: [PATCH 1/3] ARM: dts: qcom: pm8226: Add node for the GPIOs

The PM8226 provides 8 GPIOs. Add a node to support them.

Signed-off-by: Matti Lehtimäki <[email protected]>
---
arch/arm/boot/dts/qcom-pm8226.dtsi | 10 ++++++++++
1 file changed, 10 insertions(+)

diff --git a/arch/arm/boot/dts/qcom-pm8226.dtsi b/arch/arm/boot/dts/qcom-pm8226.dtsi
index 9b7d9d04ded6..235df06a0369 100644
--- a/arch/arm/boot/dts/qcom-pm8226.dtsi
+++ b/arch/arm/boot/dts/qcom-pm8226.dtsi
@@ -90,6 +90,16 @@ pm8226_mpps: mpps@a000 {
interrupt-controller;
#interrupt-cells = <2>;
};
+
+ pm8226_gpios: gpios@c000 {
+ compatible = "qcom,pm8226-gpio", "qcom,spmi-gpio";
+ reg = <0xc000>;
+ gpio-controller;
+ #gpio-cells = <2>;
+ gpio-ranges = <&pm8226_gpios 0 0 8>;
+ interrupt-controller;
+ #interrupt-cells = <2>;
+ };
};

pm8226_1: pm8226@1 {
--
2.34.1

2022-07-17 21:44:23

by Matti Lehtimäki

[permalink] [raw]
Subject: [PATCH 3/3] ARM: dts: qcom: Add support for Samsung Galaxy Tab 4 10.1 (SM-T530)

Add a device tree for the Samsung Galaxy Tab 4 10.1 (SM-T530) wifi tablet
based on the apq8026 platform.

Currently supported are accelerometer sensor, hall sensor, internal storage, physical
buttons (power & volume), screen (based on simple-framebuffer set up by
the bootloader) sdcard, touchscreen and USB.

Signed-off-by: Matti Lehtimäki <[email protected]>
---
arch/arm/boot/dts/Makefile | 1 +
.../dts/qcom-apq8026-samsung-matissewifi.dts | 475 ++++++++++++++++++
2 files changed, 476 insertions(+)
create mode 100644 arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts

diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
index 5112f493f494..4d02a1740079 100644
--- a/arch/arm/boot/dts/Makefile
+++ b/arch/arm/boot/dts/Makefile
@@ -1010,6 +1010,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
qcom-apq8016-sbc.dtb \
qcom-apq8026-asus-sparrow.dtb \
qcom-apq8026-lg-lenok.dtb \
+ qcom-apq8026-samsung-matissewifi.dtb \
qcom-apq8060-dragonboard.dtb \
qcom-apq8064-cm-qs600.dtb \
qcom-apq8064-ifc6410.dtb \
diff --git a/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
new file mode 100644
index 000000000000..f4c5eb9db11c
--- /dev/null
+++ b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
@@ -0,0 +1,475 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2022, Matti Lehtimäki <[email protected]>
+ */
+
+/dts-v1/;
+
+#include "qcom-msm8226.dtsi"
+#include "qcom-pm8226.dtsi"
+#include <dt-bindings/input/input.h>
+
+/delete-node/ &smem_region;
+
+/ {
+ model = "Samsung Galaxy Tab 4 10.1";
+ compatible = "samsung,matissewifi", "qcom,apq8026";
+ chassis-type = "tablet";
+
+ qcom,msm-id = <0xC708FF01 0 0x20000>,
+ <0xC708FF01 1 0x20000>,
+ <0xC708FF01 2 0x20000>,
+ <0xC708FF01 3 0x20000>;
+
+ aliases {
+ mmc0 = &sdhc_1; /* SDC1 eMMC slot */
+ mmc1 = &sdhc_2; /* SDC2 SD card slot */
+ display0 = &framebuffer0;
+ };
+
+ chosen {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ stdout-path = "display0";
+
+ framebuffer0: framebuffer@3200000 {
+ compatible = "simple-framebuffer";
+ reg = <0x3200000 0x800000>;
+ width = <1280>;
+ height = <800>;
+ stride = <(1280 * 3)>;
+ format = "r8g8b8";
+ status = "okay";
+ };
+ };
+
+ gpio-hall-sensor {
+ compatible = "gpio-keys";
+
+ event-hall-sensor {
+ label = "Hall Effect Sensor";
+ gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
+ interrupts = <&tlmm 110 IRQ_TYPE_EDGE_FALLING>;
+ linux,input-type = <EV_SW>;
+ linux,code = <SW_LID>;
+ debounce-interval = <15>;
+ wakeup-source;
+ };
+ };
+
+ gpio-keys {
+ compatible = "gpio-keys";
+ autorepeat;
+
+ key-home {
+ label = "Home";
+ gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_HOMEPAGE>;
+ debounce-interval = <15>;
+ };
+
+ key-volume-down {
+ label = "Volume Down";
+ gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEDOWN>;
+ debounce-interval = <15>;
+ };
+
+ key-volume-up {
+ label = "Volume Up";
+ gpios = <&tlmm 106 GPIO_ACTIVE_LOW>;
+ linux,code = <KEY_VOLUMEUP>;
+ debounce-interval = <15>;
+ };
+ };
+
+ i2c-muic {
+ compatible = "i2c-gpio";
+ sda-gpios = <&tlmm 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+ scl-gpios = <&tlmm 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&muic_i2c_default_state>;
+
+ #address-cells = <1>;
+ #size-cells = <0>;
+
+ muic: extcon@25 {
+ compatible = "siliconmitus,sm5502-muic";
+ reg = <0x25>;
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <67 IRQ_TYPE_EDGE_FALLING>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&muic_int_default_state>;
+ };
+ };
+
+ reg_tsp_1p8v: regulator-tsp-1p8v {
+ compatible = "regulator-fixed";
+ regulator-name = "tsp_1p8v";
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+
+ gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&tsp_en_default_state>;
+ };
+
+ reg_tsp_3p3v: regulator-tsp-3p3v {
+ compatible = "regulator-fixed";
+ regulator-name = "tsp_3p3v";
+ regulator-min-microvolt = <3300000>;
+ regulator-max-microvolt = <3300000>;
+
+ gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>;
+ enable-active-high;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&tsp_en1_default_state>;
+ };
+
+ reserved-memory {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ ranges;
+
+ framebuffer@3200000 {
+ reg = <0x3200000 0x800000>;
+ no-map;
+ };
+
+ mpss_region: mpss@8400000 {
+ reg = <0x08400000 0x1f00000>;
+ no-map;
+ };
+
+ mba_region: mba@a300000 {
+ reg = <0x0a300000 0x100000>;
+ no-map;
+ };
+
+ reserved@cb00000 {
+ reg = <0x0cb00000 0x700000>;
+ no-map;
+ };
+
+ wcnss_region: wcnss@d200000 {
+ reg = <0x0d200000 0x700000>;
+ no-map;
+ };
+
+ adsp_region: adsp@d900000 {
+ reg = <0x0d900000 0x1800000>;
+ no-map;
+ };
+
+ venus_region: venus@f100000 {
+ reg = <0x0f100000 0x500000>;
+ no-map;
+ };
+
+ smem_region: smem@fa00000 {
+ reg = <0xfa00000 0x100000>;
+ no-map;
+ };
+
+ reserved@fb00000 {
+ reg = <0x0fb00000 0x260000>;
+ no-map;
+ };
+
+ rfsa@fd60000 {
+ reg = <0x0fd60000 0x20000>;
+ no-map;
+ };
+
+ rmtfs@fd80000 {
+ compatible = "qcom,rmtfs-mem";
+ reg = <0x0fd80000 0x180000>;
+ no-map;
+
+ qcom,client-id = <1>;
+ };
+ };
+};
+
+&blsp1_i2c2 {
+ status = "okay";
+
+ accelerometer@1d {
+ compatible = "st,lis2hh12";
+ reg = <0x1d>;
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <54 IRQ_TYPE_LEVEL_HIGH>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&accel_int_default_state>;
+
+ st,drdy-int-pin = <1>;
+
+ vdd-supply = <&pm8226_l19>;
+ vddio-supply = <&pm8226_lvs1>;
+ };
+};
+
+&blsp1_i2c5 {
+ status = "okay";
+
+ touchscreen@4a {
+ compatible = "atmel,maxtouch";
+ reg = <0x4a>;
+
+ interrupt-parent = <&tlmm>;
+ interrupts = <17 IRQ_TYPE_LEVEL_LOW>;
+
+ pinctrl-names = "default";
+ pinctrl-0 = <&tsp_int_rst_default_state>;
+
+ reset-gpios = <&pm8226_gpios 6 GPIO_ACTIVE_LOW>;
+
+ vdd-supply = <&reg_tsp_1p8v>;
+ vdda-supply = <&reg_tsp_3p3v>;
+ };
+};
+
+&rpm_requests {
+ pm8226-regulators {
+ compatible = "qcom,rpm-pm8226-regulators";
+
+ pm8226_s3: s3 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1300000>;
+ };
+
+ pm8226_s4: s4 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8226_s5: s5 {
+ regulator-min-microvolt = <1150000>;
+ regulator-max-microvolt = <1150000>;
+ };
+
+ pm8226_l1: l1 {
+ regulator-min-microvolt = <1225000>;
+ regulator-max-microvolt = <1225000>;
+ };
+
+ pm8226_l2: l2 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ pm8226_l3: l3 {
+ regulator-min-microvolt = <750000>;
+ regulator-max-microvolt = <1337500>;
+ regulator-always-on;
+ };
+
+ pm8226_l4: l4 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ pm8226_l5: l5 {
+ regulator-min-microvolt = <1200000>;
+ regulator-max-microvolt = <1200000>;
+ };
+
+ pm8226_l6: l6 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ pm8226_l7: l7 {
+ regulator-min-microvolt = <1850000>;
+ regulator-max-microvolt = <1850000>;
+ };
+
+ pm8226_l8: l8 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ regulator-always-on;
+ };
+
+ pm8226_l9: l9 {
+ regulator-min-microvolt = <2050000>;
+ regulator-max-microvolt = <2050000>;
+ };
+
+ pm8226_l10: l10 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8226_l12: l12 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8226_l14: l14 {
+ regulator-min-microvolt = <2750000>;
+ regulator-max-microvolt = <2750000>;
+ };
+
+ pm8226_l15: l15 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ pm8226_l16: l16 {
+ regulator-min-microvolt = <3000000>;
+ regulator-max-microvolt = <3350000>;
+ };
+
+ pm8226_l17: l17 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+
+ regulator-system-load = <200000>;
+ regulator-allow-set-load;
+ regulator-always-on;
+ };
+
+ pm8226_l18: l18 {
+ regulator-min-microvolt = <2950000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8226_l19: l19 {
+ regulator-min-microvolt = <2850000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ pm8226_l20: l20 {
+ regulator-min-microvolt = <3075000>;
+ regulator-max-microvolt = <3075000>;
+ };
+
+ pm8226_l21: l21 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8226_l22: l22 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3000000>;
+ };
+
+ pm8226_l23: l23 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <3300000>;
+ };
+
+ pm8226_l24: l24 {
+ regulator-min-microvolt = <1300000>;
+ regulator-max-microvolt = <1350000>;
+ };
+
+ pm8226_l25: l25 {
+ regulator-min-microvolt = <1775000>;
+ regulator-max-microvolt = <2125000>;
+ };
+
+ pm8226_l26: l26 {
+ regulator-min-microvolt = <1225000>;
+ regulator-max-microvolt = <1300000>;
+ };
+
+ pm8226_l27: l27 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <1800000>;
+ };
+
+ pm8226_l28: l28 {
+ regulator-min-microvolt = <1800000>;
+ regulator-max-microvolt = <2950000>;
+ };
+
+ pm8226_lvs1: lvs1 {};
+ };
+};
+
+&sdhc_1 {
+ status = "okay";
+
+ vmmc-supply = <&pm8226_l17>;
+ vqmmc-supply = <&pm8226_l6>;
+
+ bus-width = <8>;
+ non-removable;
+};
+
+&sdhc_2 {
+ status = "okay";
+
+ vmmc-supply = <&pm8226_l18>;
+ vqmmc-supply = <&pm8226_l21>;
+
+ bus-width = <8>;
+ cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>;
+};
+
+&tlmm {
+ accel_int_default_state: accel-int-default-state {
+ pins = "gpio54";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ muic_i2c_default_state: muic-i2c-default-state {
+ pins = "gpio14", "gpio15";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ muic_int_default_state: muic-int-default-state {
+ pins = "gpio67";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ tsp_en_default_state: tsp-en-default-state {
+ pins = "gpio31";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ tsp_en1_default_state: tsp-en1-default-state {
+ pins = "gpio73";
+ function = "gpio";
+ drive-strength = <2>;
+ bias-disable;
+ };
+
+ tsp_int_rst_default_state: tsp-int-rst-default-state {
+ pins = "gpio17";
+ function = "gpio";
+ drive-strength = <10>;
+ bias-pull-up;
+ };
+};
+
+&usb {
+ status = "okay";
+ extcon = <&muic>, <&muic>;
+};
+
+&usb_hs_phy {
+ extcon = <&muic>;
+ v1p8-supply = <&pm8226_l10>;
+ v3p3-supply = <&pm8226_l20>;
+};
--
2.34.1

2022-07-17 21:54:14

by Matti Lehtimäki

[permalink] [raw]
Subject: [PATCH 2/3] dt-bindings: arm: qcom: Document samsung,matissewifi device

Add binding documentation for Samsung Galaxy Tab 4 10.1 (2014) tablet
which is based on Snapdragon 400 (apq8026) SoC.

Signed-off-by: Matti Lehtimäki <[email protected]>
---
Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
1 file changed, 1 insertion(+)

diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
index 5c06d1bfc046..5a24dfd66823 100644
--- a/Documentation/devicetree/bindings/arm/qcom.yaml
+++ b/Documentation/devicetree/bindings/arm/qcom.yaml
@@ -104,6 +104,7 @@ properties:
- enum:
- asus,sparrow
- lg,lenok
+ - samsung,matissewifi
- const: qcom,apq8026

- items:
--
2.34.1

2022-07-18 12:31:30

by Matti Lehtimäki

[permalink] [raw]
Subject: Re: [PATCH 1/3] ARM: dts: qcom: pm8226: Add node for the GPIOs

On 18.7.2022 0.34, Matti Lehtimäki wrote:
> The PM8226 provides 8 GPIOs. Add a node to support them.
>
> Signed-off-by: Matti Lehtimäki <[email protected]>

I will fix the UTF-8 issue in the Signed-off-by lines in all of the
patches in v2.

-Matti

2022-07-18 13:49:31

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 1/3] ARM: dts: qcom: pm8226: Add node for the GPIOs

On 17/07/2022 23:34, Matti Lehtimäki wrote:
> The PM8226 provides 8 GPIOs. Add a node to support them.
>
> Signed-off-by: Matti Lehtimäki <[email protected]>
> ---
> arch/arm/boot/dts/qcom-pm8226.dtsi | 10 ++++++++++
> 1 file changed, 10 insertions(+)
>
> diff --git a/arch/arm/boot/dts/qcom-pm8226.dtsi b/arch/arm/boot/dts/qcom-pm8226.dtsi
> index 9b7d9d04ded6..235df06a0369 100644
> --- a/arch/arm/boot/dts/qcom-pm8226.dtsi
> +++ b/arch/arm/boot/dts/qcom-pm8226.dtsi
> @@ -90,6 +90,16 @@ pm8226_mpps: mpps@a000 {
> interrupt-controller;
> #interrupt-cells = <2>;
> };
> +
> + pm8226_gpios: gpios@c000 {

It seems several Qualcomm PMICs make this mistake... why this cannot be
"gpio" like expected for gpio controller?


Best regards,
Krzysztof

2022-07-18 14:17:06

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 3/3] ARM: dts: qcom: Add support for Samsung Galaxy Tab 4 10.1 (SM-T530)

On 17/07/2022 23:34, Matti Lehtimäki wrote:
> Add a device tree for the Samsung Galaxy Tab 4 10.1 (SM-T530) wifi tablet
> based on the apq8026 platform.
>
> Currently supported are accelerometer sensor, hall sensor, internal storage, physical
> buttons (power & volume), screen (based on simple-framebuffer set up by
> the bootloader) sdcard, touchscreen and USB.
>
> Signed-off-by: Matti Lehtimäki <[email protected]>

Thank you for your patch. There is something to discuss/improve.

> ---
> arch/arm/boot/dts/Makefile | 1 +
> .../dts/qcom-apq8026-samsung-matissewifi.dts | 475 ++++++++++++++++++
> 2 files changed, 476 insertions(+)
> create mode 100644 arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
>
> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> index 5112f493f494..4d02a1740079 100644
> --- a/arch/arm/boot/dts/Makefile
> +++ b/arch/arm/boot/dts/Makefile
> @@ -1010,6 +1010,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
> qcom-apq8016-sbc.dtb \
> qcom-apq8026-asus-sparrow.dtb \
> qcom-apq8026-lg-lenok.dtb \
> + qcom-apq8026-samsung-matissewifi.dtb \
> qcom-apq8060-dragonboard.dtb \
> qcom-apq8064-cm-qs600.dtb \
> qcom-apq8064-ifc6410.dtb \
> diff --git a/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
> new file mode 100644
> index 000000000000..f4c5eb9db11c
> --- /dev/null
> +++ b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
> @@ -0,0 +1,475 @@
> +// SPDX-License-Identifier: BSD-3-Clause
> +/*
> + * Copyright (c) 2022, Matti Lehtimäki <[email protected]>
> + */
> +
> +/dts-v1/;
> +
> +#include "qcom-msm8226.dtsi"
> +#include "qcom-pm8226.dtsi"
> +#include <dt-bindings/input/input.h>
> +
> +/delete-node/ &smem_region;
> +
> +/ {
> + model = "Samsung Galaxy Tab 4 10.1";
> + compatible = "samsung,matissewifi", "qcom,apq8026";
> + chassis-type = "tablet";
> +
> + qcom,msm-id = <0xC708FF01 0 0x20000>,
> + <0xC708FF01 1 0x20000>,
> + <0xC708FF01 2 0x20000>,
> + <0xC708FF01 3 0x20000>;

Lower case hex and does not match bindings.
https://lore.kernel.org/all/[email protected]/

This would need detailed explanation because it really does not look
correct.

> +
> + aliases {
> + mmc0 = &sdhc_1; /* SDC1 eMMC slot */
> + mmc1 = &sdhc_2; /* SDC2 SD card slot */
> + display0 = &framebuffer0;
> + };
> +
> + chosen {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + stdout-path = "display0";
> +
> + framebuffer0: framebuffer@3200000 {
> + compatible = "simple-framebuffer";
> + reg = <0x3200000 0x800000>;
> + width = <1280>;
> + height = <800>;
> + stride = <(1280 * 3)>;
> + format = "r8g8b8";
> + status = "okay";
> + };
> + };
> +
> + gpio-hall-sensor {
> + compatible = "gpio-keys";
> +
> + event-hall-sensor {
> + label = "Hall Effect Sensor";
> + gpios = <&tlmm 110 GPIO_ACTIVE_HIGH>;
> + interrupts = <&tlmm 110 IRQ_TYPE_EDGE_FALLING>;
> + linux,input-type = <EV_SW>;
> + linux,code = <SW_LID>;
> + debounce-interval = <15>;
> + wakeup-source;
> + };
> + };
> +
> + gpio-keys {
> + compatible = "gpio-keys";
> + autorepeat;
> +
> + key-home {
> + label = "Home";
> + gpios = <&tlmm 108 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_HOMEPAGE>;
> + debounce-interval = <15>;
> + };
> +
> + key-volume-down {
> + label = "Volume Down";
> + gpios = <&tlmm 107 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_VOLUMEDOWN>;
> + debounce-interval = <15>;
> + };
> +
> + key-volume-up {
> + label = "Volume Up";
> + gpios = <&tlmm 106 GPIO_ACTIVE_LOW>;
> + linux,code = <KEY_VOLUMEUP>;
> + debounce-interval = <15>;
> + };
> + };
> +
> + i2c-muic {
> + compatible = "i2c-gpio";
> + sda-gpios = <&tlmm 14 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
> + scl-gpios = <&tlmm 15 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&muic_i2c_default_state>;
> +
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + muic: extcon@25 {

extcon is Linux specific, need some generic name instead.

> + compatible = "siliconmitus,sm5502-muic";
> + reg = <0x25>;
> +
> + interrupt-parent = <&tlmm>;
> + interrupts = <67 IRQ_TYPE_EDGE_FALLING>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&muic_int_default_state>;
> + };
> + };
> +
> + reg_tsp_1p8v: regulator-tsp-1p8v {
> + compatible = "regulator-fixed";
> + regulator-name = "tsp_1p8v";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&tsp_en_default_state>;
> + };
> +
> + reg_tsp_3p3v: regulator-tsp-3p3v {
> + compatible = "regulator-fixed";
> + regulator-name = "tsp_3p3v";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpio = <&tlmm 73 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&tsp_en1_default_state>;
> + };
> +
> + reserved-memory {
> + #address-cells = <1>;
> + #size-cells = <1>;
> + ranges;
> +
> + framebuffer@3200000 {

Generic node names, so memory@

> + reg = <0x3200000 0x800000>;
> + no-map;
> + };
> +
> + mpss_region: mpss@8400000 {

The same and so on...

> + reg = <0x08400000 0x1f00000>;
> + no-map;
> + };
> +
> + mba_region: mba@a300000 {

Best regards,
Krzysztof

2022-07-18 14:18:00

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 2/3] dt-bindings: arm: qcom: Document samsung,matissewifi device

On 17/07/2022 23:34, Matti Lehtimäki wrote:
> Add binding documentation for Samsung Galaxy Tab 4 10.1 (2014) tablet
> which is based on Snapdragon 400 (apq8026) SoC.
>
> Signed-off-by: Matti Lehtimäki <[email protected]>
> ---
> Documentation/devicetree/bindings/arm/qcom.yaml | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml
> index 5c06d1bfc046..5a24dfd66823 100644
> --- a/Documentation/devicetree/bindings/arm/qcom.yaml
> +++ b/Documentation/devicetree/bindings/arm/qcom.yaml
> @@ -104,6 +104,7 @@ properties:
> - enum:
> - asus,sparrow
> - lg,lenok
> + - samsung,matissewifi

samsung,matisse-wifi


Best regards,
Krzysztof

2022-07-18 18:22:07

by Stephan Gerhold

[permalink] [raw]
Subject: Re: [PATCH 3/3] ARM: dts: qcom: Add support for Samsung Galaxy Tab 4 10.1 (SM-T530)

On Mon, Jul 18, 2022 at 03:51:54PM +0200, Krzysztof Kozlowski wrote:
> On 17/07/2022 23:34, Matti Lehtimäki wrote:
> > Add a device tree for the Samsung Galaxy Tab 4 10.1 (SM-T530) wifi tablet
> > based on the apq8026 platform.
> >
> > Currently supported are accelerometer sensor, hall sensor, internal storage, physical
> > buttons (power & volume), screen (based on simple-framebuffer set up by
> > the bootloader) sdcard, touchscreen and USB.
> >
> > Signed-off-by: Matti Lehtimäki <[email protected]>
>
> Thank you for your patch. There is something to discuss/improve.
>
> > ---
> > arch/arm/boot/dts/Makefile | 1 +
> > .../dts/qcom-apq8026-samsung-matissewifi.dts | 475 ++++++++++++++++++
> > 2 files changed, 476 insertions(+)
> > create mode 100644 arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
> >
> > diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
> > index 5112f493f494..4d02a1740079 100644
> > --- a/arch/arm/boot/dts/Makefile
> > +++ b/arch/arm/boot/dts/Makefile
> > @@ -1010,6 +1010,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
> > qcom-apq8016-sbc.dtb \
> > qcom-apq8026-asus-sparrow.dtb \
> > qcom-apq8026-lg-lenok.dtb \
> > + qcom-apq8026-samsung-matissewifi.dtb \
> > qcom-apq8060-dragonboard.dtb \
> > qcom-apq8064-cm-qs600.dtb \
> > qcom-apq8064-ifc6410.dtb \
> > diff --git a/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
> > new file mode 100644
> > index 000000000000..f4c5eb9db11c
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
> > @@ -0,0 +1,475 @@
> > +// SPDX-License-Identifier: BSD-3-Clause
> > +/*
> > + * Copyright (c) 2022, Matti Lehtimäki <[email protected]>
> > + */
> > +
> > +/dts-v1/;
> > +
> > +#include "qcom-msm8226.dtsi"
> > +#include "qcom-pm8226.dtsi"
> > +#include <dt-bindings/input/input.h>
> > +
> > +/delete-node/ &smem_region;
> > +
> > +/ {
> > + model = "Samsung Galaxy Tab 4 10.1";
> > + compatible = "samsung,matissewifi", "qcom,apq8026";
> > + chassis-type = "tablet";
> > +
> > + qcom,msm-id = <0xC708FF01 0 0x20000>,
> > + <0xC708FF01 1 0x20000>,
> > + <0xC708FF01 2 0x20000>,
> > + <0xC708FF01 3 0x20000>;
>
> Lower case hex and does not match bindings.
> https://lore.kernel.org/all/[email protected]/
>
> This would need detailed explanation because it really does not look
> correct.
>

Just to give the explanation for reference: In general, qcom,msm-id with
three elements is something Qualcomm used for some old platforms before
introducing qcom,board-id.

qcom,msm-id = <X Y Z> should be equivalent to:
qcom,msm-id = <X Z>;
qcom,board-id = <Y 0>;

e.g. for apq8026-v2-mtp.dts Qualcomm used:
qcom,msm-id = <199 8 0x20000>;
= qcom,msm-id = <QCOM_ID_MSM8026 QCOM_BOARD_ID_MTP 0x20000>;
= qcom,msm-id = <QCOM_ID_MSM8026 0x20000>;
qcom,board-id = <QCOM_BOARD_ID_MTP 0>;

I guess old bootloaders may or may not accept the new form, depending on
the age of their code base.

Then Samsung took this and made it a lot worse, by replacing the SoC ID
with some random magic number (the 0xC708FF01). And what's even worse is
that all devices with the same SoC from Samsung use the same magic number
there. It is completely useless for dynamically matching the device.

In this case, I suggest just dropping the property because the device is
supported by lk2nd [1] which can be loaded as intermediary bootloader to
have a more standard boot process for mainline Linux. When booting
through lk2nd no qcom,msm-id/qcom,board-id is required, and it also adds
MAC addresses for WiFi/Bluetooth etc etc. :-)

[1]: https://github.com/msm8916-mainline/lk2nd

> [...]
> > + reserved-memory {
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > + ranges;
> > +
> > + framebuffer@3200000 {
>
> Generic node names, so memory@
>

Rob specifically mentioned at some point that memory@ should not be used
in reserved-memory [1]. The device tree specification actually recommends
doing it like it is done here (at least for "framebuffer"):

> 3.5.2 /reserved-memory/ child nodes
> Following the generic-names recommended practice, node names should
> reflect the purpose of the node (ie. “framebuffer” or “dma-pool”).

[1]: https://lore.kernel.org/linux-arm-msm/CAL_Jsq+66j8Y5y+PQ+mezkaxN1pfHFKz524YUF4Lz_OU5E-mZQ@mail.gmail.com/

Thanks,
Stephan

2022-07-21 09:52:06

by Krzysztof Kozlowski

[permalink] [raw]
Subject: Re: [PATCH 3/3] ARM: dts: qcom: Add support for Samsung Galaxy Tab 4 10.1 (SM-T530)

On 18/07/2022 20:10, Stephan Gerhold wrote:
> On Mon, Jul 18, 2022 at 03:51:54PM +0200, Krzysztof Kozlowski wrote:
>> On 17/07/2022 23:34, Matti Lehtimäki wrote:
>>> Add a device tree for the Samsung Galaxy Tab 4 10.1 (SM-T530) wifi tablet
>>> based on the apq8026 platform.
>>>
>>> Currently supported are accelerometer sensor, hall sensor, internal storage, physical
>>> buttons (power & volume), screen (based on simple-framebuffer set up by
>>> the bootloader) sdcard, touchscreen and USB.
>>>
>>> Signed-off-by: Matti Lehtimäki <[email protected]>
>>
>> Thank you for your patch. There is something to discuss/improve.
>>
>>> ---
>>> arch/arm/boot/dts/Makefile | 1 +
>>> .../dts/qcom-apq8026-samsung-matissewifi.dts | 475 ++++++++++++++++++
>>> 2 files changed, 476 insertions(+)
>>> create mode 100644 arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
>>>
>>> diff --git a/arch/arm/boot/dts/Makefile b/arch/arm/boot/dts/Makefile
>>> index 5112f493f494..4d02a1740079 100644
>>> --- a/arch/arm/boot/dts/Makefile
>>> +++ b/arch/arm/boot/dts/Makefile
>>> @@ -1010,6 +1010,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \
>>> qcom-apq8016-sbc.dtb \
>>> qcom-apq8026-asus-sparrow.dtb \
>>> qcom-apq8026-lg-lenok.dtb \
>>> + qcom-apq8026-samsung-matissewifi.dtb \
>>> qcom-apq8060-dragonboard.dtb \
>>> qcom-apq8064-cm-qs600.dtb \
>>> qcom-apq8064-ifc6410.dtb \
>>> diff --git a/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
>>> new file mode 100644
>>> index 000000000000..f4c5eb9db11c
>>> --- /dev/null
>>> +++ b/arch/arm/boot/dts/qcom-apq8026-samsung-matissewifi.dts
>>> @@ -0,0 +1,475 @@
>>> +// SPDX-License-Identifier: BSD-3-Clause
>>> +/*
>>> + * Copyright (c) 2022, Matti Lehtimäki <[email protected]>
>>> + */
>>> +
>>> +/dts-v1/;
>>> +
>>> +#include "qcom-msm8226.dtsi"
>>> +#include "qcom-pm8226.dtsi"
>>> +#include <dt-bindings/input/input.h>
>>> +
>>> +/delete-node/ &smem_region;
>>> +
>>> +/ {
>>> + model = "Samsung Galaxy Tab 4 10.1";
>>> + compatible = "samsung,matissewifi", "qcom,apq8026";
>>> + chassis-type = "tablet";
>>> +
>>> + qcom,msm-id = <0xC708FF01 0 0x20000>,
>>> + <0xC708FF01 1 0x20000>,
>>> + <0xC708FF01 2 0x20000>,
>>> + <0xC708FF01 3 0x20000>;
>>
>> Lower case hex and does not match bindings.
>> https://lore.kernel.org/all/[email protected]/
>>
>> This would need detailed explanation because it really does not look
>> correct.
>>
>
> Just to give the explanation for reference: In general, qcom,msm-id with
> three elements is something Qualcomm used for some old platforms before
> introducing qcom,board-id.
>
> qcom,msm-id = <X Y Z> should be equivalent to:
> qcom,msm-id = <X Z>;
> qcom,board-id = <Y 0>;
>
> e.g. for apq8026-v2-mtp.dts Qualcomm used:
> qcom,msm-id = <199 8 0x20000>;
> = qcom,msm-id = <QCOM_ID_MSM8026 QCOM_BOARD_ID_MTP 0x20000>;
> = qcom,msm-id = <QCOM_ID_MSM8026 0x20000>;
> qcom,board-id = <QCOM_BOARD_ID_MTP 0>;
>
> I guess old bootloaders may or may not accept the new form, depending on
> the age of their code base.
>
> Then Samsung took this and made it a lot worse, by replacing the SoC ID
> with some random magic number (the 0xC708FF01). And what's even worse is
> that all devices with the same SoC from Samsung use the same magic number
> there. It is completely useless for dynamically matching the device.
>
> In this case, I suggest just dropping the property because the device is
> supported by lk2nd [1] which can be loaded as intermediary bootloader to
> have a more standard boot process for mainline Linux. When booting
> through lk2nd no qcom,msm-id/qcom,board-id is required, and it also adds
> MAC addresses for WiFi/Bluetooth etc etc. :-)
>
> [1]: https://github.com/msm8916-mainline/lk2nd
>
>> [...]
>>> + reserved-memory {
>>> + #address-cells = <1>;
>>> + #size-cells = <1>;
>>> + ranges;
>>> +
>>> + framebuffer@3200000 {
>>
>> Generic node names, so memory@
>>
>
> Rob specifically mentioned at some point that memory@ should not be used
> in reserved-memory [1]. The device tree specification actually recommends
> doing it like it is done here (at least for "framebuffer"):
>
>> 3.5.2 /reserved-memory/ child nodes
>> Following the generic-names recommended practice, node names should
>> reflect the purpose of the node (ie. “framebuffer” or “dma-pool”).
>
> [1]: https://lore.kernel.org/linux-arm-msm/CAL_Jsq+66j8Y5y+PQ+mezkaxN1pfHFKz524YUF4Lz_OU5E-mZQ@mail.gmail.com/

Thanks, makes sense a lot!

Best regards,
Krzysztof