On Donnerstag, 27. Juni 2024 21:30:52 MESZ Raymond Hackley wrote: > Samsung Galaxy Grand 2 is a phone based on MSM8226. It's similar to the > other Samsung devices based on MSM8226 with only a few minor differences. > > The device trees contain initial support with: > - GPIO keys > - Regulator haptic > - SDHCI (internal and external storage) > - UART (on USB connector via the TI TSU6721 MUIC) > - Regulators > - Touchscreen > - Accelerometer > > Signed-off-by: Raymond Hackley <raymondhackley@xxxxxxxxxxxxxx> > --- > arch/arm/boot/dts/qcom/Makefile | 1 + > .../dts/qcom/qcom-msm8226-samsung-ms013g.dts | 386 ++++++++++++++++++ > 2 files changed, 387 insertions(+) > create mode 100644 arch/arm/boot/dts/qcom/qcom-msm8226-samsung-ms013g.dts > > diff --git a/arch/arm/boot/dts/qcom/Makefile b/arch/arm/boot/dts/qcom/Makefile > index ccd4ce6353df..f06c6d425e91 100644 > --- a/arch/arm/boot/dts/qcom/Makefile > +++ b/arch/arm/boot/dts/qcom/Makefile > @@ -28,6 +28,7 @@ dtb-$(CONFIG_ARCH_QCOM) += \ > qcom-msm8226-microsoft-dempsey.dtb \ > qcom-msm8226-microsoft-makepeace.dtb \ > qcom-msm8226-microsoft-moneypenny.dtb \ > + qcom-msm8226-samsung-ms013g.dtb \ > qcom-msm8226-samsung-s3ve3g.dtb \ > qcom-msm8660-surf.dtb \ > qcom-msm8916-samsung-e5.dtb \ > diff --git a/arch/arm/boot/dts/qcom/qcom-msm8226-samsung-ms013g.dts b/arch/arm/boot/dts/qcom/qcom-msm8226-samsung-ms013g.dts > new file mode 100644 > index 000000000000..190b52fda634 > --- /dev/null > +++ b/arch/arm/boot/dts/qcom/qcom-msm8226-samsung-ms013g.dts > @@ -0,0 +1,386 @@ > +// SPDX-License-Identifier: BSD-3-Clause > + > +/dts-v1/; > + > +#include "qcom-msm8226.dtsi" > +#include "pm8226.dtsi" > + > +/delete-node/ &smem_region; > + > +/ { > + model = "Samsung Galaxy Grand 2"; > + compatible = "samsung,ms013g", "qcom,msm8226"; > + chassis-type = "handset"; > + > + aliases { > + mmc0 = &sdhc_1; /* SDC1 eMMC slot */ > + mmc1 = &sdhc_2; /* SDC2 SD card slot */ > + serial0 = &blsp1_uart3; > + }; > + > + chosen { > + stdout-path = "serial0:115200n8"; > + }; > + > + gpio-hall-sensor { > + compatible = "gpio-keys"; > + > + pinctrl-0 = <&gpio_hall_sensor_default>; > + pinctrl-names = "default"; > + > + label = "GPIO Hall Effect Sensor"; > + > + event-hall-sensor { > + label = "Hall Effect Sensor"; > + gpios = <&tlmm 50 GPIO_ACTIVE_LOW>; > + linux,input-type = <EV_SW>; > + linux,code = <SW_LID>; > + linux,can-disable; > + }; > + }; > + > + gpio-keys { > + compatible = "gpio-keys"; > + > + pinctrl-0 = <&gpio_keys_default>; > + pinctrl-names = "default"; > + > + label = "GPIO Buttons"; > + > + button-volume-up { > + label = "Volume Up"; > + gpios = <&tlmm 106 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_VOLUMEUP>; > + }; > + > + button-volume-down { > + label = "Volume Down"; > + gpios = <&tlmm 107 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_VOLUMEDOWN>; > + }; > + > + button-home { > + label = "Home Key"; > + gpios = <&tlmm 108 GPIO_ACTIVE_LOW>; > + linux,code = <KEY_HOMEPAGE>; > + }; > + }; > + > + haptic { > + compatible = "regulator-haptic"; > + haptic-supply = <®_motor_vdd>; > + min-microvolt = <3300000>; > + max-microvolt = <3300000>; > + }; This is the vibration motor? Use "vibrator" as node name then as per https://github.com/devicetree-org/devicetree-specification/blob/main/source/chapter2-devicetree-basics.rst?plain=1#L299 Apart from this I don't see anything wrong. Reviewed-by: Luca Weiss <luca@xxxxxxxxxxxx> > + > + reg_motor_vdd: regulator-motor-vdd { > + compatible = "regulator-fixed"; > + regulator-name = "motor_vdd"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 111 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&motor_en_default>; > + pinctrl-names = "default"; > + }; > + > + reg_vdd_tsp_a: regulator-vdd-tsp-a { > + compatible = "regulator-fixed"; > + regulator-name = "tsp_3p3v"; > + regulator-min-microvolt = <3300000>; > + regulator-max-microvolt = <3300000>; > + > + gpio = <&tlmm 31 GPIO_ACTIVE_HIGH>; > + enable-active-high; > + > + pinctrl-0 = <&tsp_en_default>; > + pinctrl-names = "default"; > + }; > + > + reserved-memory { > + smem_region: smem@fa00000 { > + reg = <0x0fa00000 0x100000>; > + no-map; > + }; > + }; > +}; > + > +&blsp1_i2c2 { > + status = "okay"; > + > + accelerometer@18 { > + compatible = "bosch,bma255"; > + reg = <0x18>; > + interrupts-extended = <&tlmm 64 IRQ_TYPE_EDGE_RISING>; > + > + vdd-supply = <&pm8226_l19>; > + vddio-supply = <&pm8226_lvs1>; > + > + pinctrl-0 = <&accel_int_default>; > + pinctrl-names = "default"; > + > + mount-matrix = "0", "1", "0", > + "-1", "0", "0", > + "0", "0", "-1"; > + }; > +}; > + > +&blsp1_i2c5 { > + status = "okay"; > + > + touchscreen@20 { > + compatible = "zinitix,bt541"; > + > + reg = <0x20>; > + interrupts-extended = <&tlmm 17 IRQ_TYPE_EDGE_FALLING>; > + > + touchscreen-size-x = <720>; > + touchscreen-size-y = <1280>; > + > + vcca-supply = <®_vdd_tsp_a>; > + vdd-supply = <&pm8226_lvs1>; > + > + pinctrl-0 = <&tsp_int_default>; > + pinctrl-names = "default"; > + }; > +}; > + > +&blsp1_uart3 { > + status = "okay"; > +}; > + > +&rpm_requests { > + 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 = <2200000>; > + }; > + > + 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>; > + }; > + > + 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-allow-set-load; > + 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>; > + }; > + > + 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 = <2800000>; > + regulator-max-microvolt = <2800000>; > + }; > + > + 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>; > + regulator-allow-set-load; > + }; > + > + pm8226_l22: l22 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <2950000>; > + }; > + > + 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 = <2050000>; > + regulator-max-microvolt = <2050000>; > + }; > + > + pm8226_l28: l28 { > + regulator-min-microvolt = <1800000>; > + regulator-max-microvolt = <2950000>; > + }; > + > + pm8226_lvs1: lvs1 {}; > + }; > +}; > + > +&sdhc_1 { > + vmmc-supply = <&pm8226_l17>; > + vqmmc-supply = <&pm8226_l6>; > + > + bus-width = <8>; > + non-removable; > + > + status = "okay"; > +}; > + > +&sdhc_2 { > + vmmc-supply = <&pm8226_l18>; > + vqmmc-supply = <&pm8226_l21>; > + > + bus-width = <4>; > + cd-gpios = <&tlmm 38 GPIO_ACTIVE_LOW>; > + > + pinctrl-0 = <&sdhc2_default_state &sdhc2_cd_default>; > + pinctrl-names = "default"; > + > + status = "okay"; > +}; > + > +&tlmm { > + accel_int_default: accel-int-default-state { > + pins = "gpio64"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + gpio_hall_sensor_default: gpio-hall-sensor-default-state { > + pins = "gpio50"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + > + gpio_keys_default: gpio-keys-default-state { > + pins = "gpio106", "gpio107", "gpio108"; > + function = "gpio"; > + drive-strength = <2>; > + bias-pull-up; > + }; > + > + motor_en_default: motor-en-default-state { > + pins = "gpio111"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + sdhc2_cd_default: sdhc2-cd-default-state { > + pins = "gpio38"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + tsp_en_default: tsp-en-default-state { > + pins = "gpio31"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > + > + tsp_int_default: tsp-int-default-state { > + pins = "gpio17"; > + function = "gpio"; > + drive-strength = <2>; > + bias-disable; > + }; > +}; >