From nobody Mon Feb 9 12:24:39 2026 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 6A541EB64D7 for ; Fri, 23 Jun 2023 10:03:46 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230379AbjFWKDo (ORCPT ); Fri, 23 Jun 2023 06:03:44 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44094 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S231881AbjFWKDR (ORCPT ); Fri, 23 Jun 2023 06:03:17 -0400 Received: from mail-4318.protonmail.ch (mail-4318.protonmail.ch [185.70.43.18]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1667C2116; Fri, 23 Jun 2023 03:03:11 -0700 (PDT) Date: Fri, 23 Jun 2023 10:02:51 +0000 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=protonmail.com; s=protonmail3; t=1687514589; x=1687773789; bh=AO6KSGh+T912qx4kgeEQ0q/48ydbUHhh7XZ9EUahyeU=; h=Date:To:From:Cc:Subject:Message-ID:In-Reply-To:References: Feedback-ID:From:To:Cc:Date:Subject:Reply-To:Feedback-ID: Message-ID:BIMI-Selector; b=dGXRdDMuBa5kVHOExCeUBm33cOYzHLvVVjMl9BiF5R3skQGrNf5Q4jYzypphMjX8t lYB0xfCkzZde1ItrRVCpE5V7qwYYZLD9RU9nreHzTyFpwFCGh7K2kzNa6xu50D0NqS ldi/WxlrhYYzqAErr0CgE3XsI4x+9SjOXjaLAZk5K3rkU/VLkzjuuZZPiAKrHP36cL 0kLulfDytFHoFfzzkIqHs8q7Cr6ViQu8zulOd2/EJOL0HnA1jt8vGO5p387+u/dUED TYwt2rd//7Hz9a95Y39fLPZoZoLdFKtXdpYJL7lh2ddZEJA6iXbEVhemLnjS4aW0PR glbHh0W6JqwHQ== To: linux-kernel@vger.kernel.org From: "Lin, Meng-Bo" Cc: Andy Gross , Bjorn Andersson , Konrad Dybcio , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Stephan Gerhold , Nikita Travkin , linux-arm-msm@vger.kernel.org, devicetree@vger.kernel.org, ~postmarketos/upstreaming@lists.sr.ht Subject: [PATCH v2 2/2] arm64: dts: qcom: msm8939-samsung-a7: Add initial dts Message-ID: <20230623100237.5299-1-linmengbo0689@protonmail.com> In-Reply-To: <20230623100135.5269-1-linmengbo0689@protonmail.com> References: <20230623100135.5269-1-linmengbo0689@protonmail.com> Feedback-ID: 40467236:user:proton MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Type: text/plain; charset="utf-8" This dts adds support for Samsung Galaxy A7 smartphone released in 2015. Add a device tree for A7 with initial support for: - GPIO keys - Hall Sensor - SDHCI (internal and external storage) - USB Device Mode - UART (on USB connector via the SM5502 MUIC) - WCNSS (WiFi/BT) - Regulators - Touch key - Accelerometer/Magnetometer - Fuelgauge - NFC - Vibrator - Touchscreen Signed-off-by: Lin, Meng-Bo --- arch/arm64/boot/dts/qcom/Makefile | 1 + .../boot/dts/qcom/msm8939-samsung-a7.dts | 495 ++++++++++++++++++ 2 files changed, 496 insertions(+) create mode 100644 arch/arm64/boot/dts/qcom/msm8939-samsung-a7.dts diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/M= akefile index 337abc4ceb17..23fd31d4bf5a 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -39,6 +39,7 @@ dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-thwc-uf896.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-thwc-ufi001c.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-wingtech-wt88047.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8916-yiming-uz801v3.dtb +dtb-$(CONFIG_ARCH_QCOM) +=3D msm8939-samsung-a7.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8939-sony-xperia-kanuti-tulip.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8953-motorola-potter.dtb dtb-$(CONFIG_ARCH_QCOM) +=3D msm8953-xiaomi-daisy.dtb diff --git a/arch/arm64/boot/dts/qcom/msm8939-samsung-a7.dts b/arch/arm64/b= oot/dts/qcom/msm8939-samsung-a7.dts new file mode 100644 index 000000000000..66e56ac59998 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/msm8939-samsung-a7.dts @@ -0,0 +1,495 @@ +// SPDX-License-Identifier: GPL-2.0-only + +/dts-v1/; + +#include "msm8939-pm8916.dtsi" + +#include +#include +#include + +/ { + model =3D "Samsung Galaxy A7 (2015)"; + compatible =3D "samsung,a7", "qcom,msm8939"; + chassis-type =3D "handset"; + + aliases { + mmc0 =3D &sdhc_1; /* SDC1 eMMC slot */ + mmc1 =3D &sdhc_2; /* SDC2 SD card slot */ + serial0 =3D &blsp_uart2; + }; + + chosen { + stdout-path =3D "serial0"; + }; + + reserved-memory { + /* Additional memory used by Samsung firmware modifications */ + tz-apps@85500000 { + reg =3D <0x0 0x85500000 0x0 0xb00000>; + no-map; + }; + }; + + gpio-hall-sensor { + compatible =3D "gpio-keys"; + + pinctrl-0 =3D <&gpio_hall_sensor_default>; + pinctrl-names =3D "default"; + + label =3D "GPIO Hall Effect Sensor"; + + event-hall-sensor { + label =3D "Hall Effect Sensor"; + gpios =3D <&tlmm 52 GPIO_ACTIVE_LOW>; + linux,input-type =3D ; + linux,code =3D ; + linux,can-disable; + }; + }; + + gpio-keys { + compatible =3D "gpio-keys"; + + pinctrl-0 =3D <&gpio_keys_default>; + pinctrl-names =3D "default"; + + label =3D "GPIO Buttons"; + + button-volume-up { + label =3D "Volume Up"; + gpios =3D <&tlmm 107 GPIO_ACTIVE_LOW>; + linux,code =3D ; + }; + + button-home { + label =3D "Home"; + gpios =3D <&tlmm 109 GPIO_ACTIVE_LOW>; + linux,code =3D ; + }; + }; + + i2c-fg { + compatible =3D "i2c-gpio"; + sda-gpios =3D <&tlmm 106 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + scl-gpios =3D <&tlmm 105 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + + pinctrl-0 =3D <&fg_i2c_default>; + pinctrl-names =3D "default"; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + battery@35 { + compatible =3D "richtek,rt5033-battery"; + reg =3D <0x35>; + + interrupt-parent =3D <&tlmm>; + interrupts =3D <121 IRQ_TYPE_EDGE_BOTH>; + + pinctrl-0 =3D <&fg_alert_default>; + pinctrl-names =3D "default"; + }; + }; + + i2c-nfc { + compatible =3D "i2c-gpio"; + sda-gpios =3D <&tlmm 0 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + scl-gpios =3D <&tlmm 1 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + + pinctrl-0 =3D <&nfc_i2c_default>; + pinctrl-names =3D "default"; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + nfc@2b { + compatible =3D "nxp,pn547", "nxp,nxp-nci-i2c"; + reg =3D <0x2b>; + + interrupt-parent =3D <&tlmm>; + interrupts =3D <21 IRQ_TYPE_EDGE_RISING>; + + enable-gpios =3D <&tlmm 116 GPIO_ACTIVE_HIGH>; + firmware-gpios =3D <&tlmm 49 GPIO_ACTIVE_HIGH>; + + pinctrl-0 =3D <&nfc_default>; + pinctrl-names =3D "default"; + }; + }; + + i2c-sensor { + compatible =3D "i2c-gpio"; + sda-gpios =3D <&tlmm 84 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + scl-gpios =3D <&tlmm 85 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + + pinctrl-0 =3D <&sensor_i2c_default>; + pinctrl-names =3D "default"; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + accelerometer: accelerometer@10 { + compatible =3D "bosch,bmc150_accel"; + reg =3D <0x10>; + interrupt-parent =3D <&tlmm>; + interrupts =3D <115 IRQ_TYPE_EDGE_RISING>; + + vdd-supply =3D <&pm8916_l17>; + vddio-supply =3D <&pm8916_l5>; + + pinctrl-0 =3D <&accel_int_default>; + pinctrl-names =3D "default"; + + mount-matrix =3D "-1", "0", "0", + "0", "-1", "0", + "0", "0", "1"; + }; + + magnetometer@12 { + compatible =3D "bosch,bmc150_magn"; + reg =3D <0x12>; + + vdd-supply =3D <&pm8916_l17>; + vddio-supply =3D <&pm8916_l5>; + }; + }; + + i2c-tkey { + compatible =3D "i2c-gpio"; + sda-gpios =3D <&tlmm 16 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + scl-gpios =3D <&tlmm 17 (GPIO_ACTIVE_HIGH|GPIO_OPEN_DRAIN)>; + + pinctrl-0 =3D <&tkey_i2c_default>; + pinctrl-names =3D "default"; + + #address-cells =3D <1>; + #size-cells =3D <0>; + + touchkey@20 { + /* Note: Actually an ABOV MCU that implements same interface */ + compatible =3D "coreriver,tc360-touchkey"; + reg =3D <0x20>; + + interrupt-parent =3D <&tlmm>; + interrupts =3D <20 IRQ_TYPE_EDGE_FALLING>; + + vcc-supply =3D <®_touch_key>; + vdd-supply =3D <®_keyled>; + vddio-supply =3D <&pm8916_l6>; + + linux,keycodes =3D ; + + pinctrl-0 =3D <&tkey_default>; + pinctrl-names =3D "default"; + }; + }; + + pwm_vibrator: pwm-vibrator { + compatible =3D "clk-pwm"; + #pwm-cells =3D <2>; + + clocks =3D <&gcc GCC_GP2_CLK>; + + pinctrl-0 =3D <&motor_pwm_default>; + pinctrl-names =3D "default"; + }; + + reg_keyled: regulator-keyled { + compatible =3D "regulator-fixed"; + regulator-name =3D "keyled"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + + /* NOTE: On some variants e.g. SM-A700FD it's GPIO 91 */ + gpio =3D <&tlmm 100 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&tkey_led_en_default>; + pinctrl-names =3D "default"; + }; + + reg_touch_key: regulator-touch-key { + compatible =3D "regulator-fixed"; + regulator-name =3D "touch_key"; + regulator-min-microvolt =3D <2800000>; + regulator-max-microvolt =3D <2800000>; + + gpio =3D <&tlmm 56 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&tkey_en_default>; + pinctrl-names =3D "default"; + }; + + reg_tsp_vdd: regulator-tsp-vdd { + compatible =3D "regulator-fixed"; + regulator-name =3D "tsp_vdd"; + regulator-min-microvolt =3D <1800000>; + regulator-max-microvolt =3D <1800000>; + vin-supply =3D <&pm8916_s4>; + + gpio =3D <&tlmm 8 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <®_tsp_io_en_default>; + pinctrl-names =3D "default"; + }; + + reg_vdd_tsp: regulator-vdd-tsp { + compatible =3D "regulator-fixed"; + regulator-name =3D "vdd_tsp"; + regulator-min-microvolt =3D <3300000>; + regulator-max-microvolt =3D <3300000>; + + gpio =3D <&tlmm 73 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <®_tsp_en_default>; + pinctrl-names =3D "default"; + }; + + reg_vibrator: regulator-vibrator { + compatible =3D "regulator-fixed"; + regulator-name =3D "motor_en"; + regulator-min-microvolt =3D <3000000>; + regulator-max-microvolt =3D <3000000>; + + gpio =3D <&tlmm 86 GPIO_ACTIVE_HIGH>; + enable-active-high; + + pinctrl-0 =3D <&motor_en_default>; + pinctrl-names =3D "default"; + }; + + vibrator { + compatible =3D "pwm-vibrator"; + + pwms =3D <&pwm_vibrator 0 100000>; + pwm-names =3D "enable"; + + vcc-supply =3D <®_vibrator>; + }; +}; + +&blsp_i2c1 { + status =3D "okay"; + + muic: extcon@25 { + compatible =3D "siliconmitus,sm5502-muic"; + reg =3D <0x25>; + + interrupt-parent =3D <&tlmm>; + interrupts =3D <12 IRQ_TYPE_EDGE_FALLING>; + + pinctrl-0 =3D <&muic_int_default>; + pinctrl-names =3D "default"; + }; +}; + +&blsp_i2c5 { + status =3D "okay"; + + touchscreen@24 { + compatible =3D "cypress,tt21000"; + + reg =3D <0x24>; + interrupt-parent =3D <&tlmm>; + interrupts =3D <13 IRQ_TYPE_EDGE_FALLING>; + + vdd-supply =3D <®_vdd_tsp>; + vddio-supply =3D <®_tsp_vdd>; + + pinctrl-0 =3D <&tsp_int_default>; + pinctrl-names =3D "default"; + }; +}; + +&blsp_uart2 { + status =3D "okay"; +}; + +&pm8916_resin { + linux,code =3D ; + status =3D "okay"; +}; + +&pm8916_rpm_regulators { + pm8916_l17: l17 { + regulator-min-microvolt =3D <2850000>; + regulator-max-microvolt =3D <2850000>; + }; +}; + +&sdhc_1 { + status =3D "okay"; +}; + +&sdhc_2 { + pinctrl-0 =3D <&sdc2_default &sdc2_cd_default>; + pinctrl-1 =3D <&sdc2_sleep &sdc2_cd_default>; + pinctrl-names =3D "default", "sleep"; + + cd-gpios =3D <&tlmm 38 GPIO_ACTIVE_LOW>; + + status =3D "okay"; +}; + +&usb { + extcon =3D <&muic>, <&muic>; + status =3D "okay"; +}; + +&usb_hs_phy { + extcon =3D <&muic>; +}; + +&wcnss { + status =3D "okay"; +}; + +&wcnss_iris { + compatible =3D "qcom,wcn3660b"; +}; + +&tlmm { + accel_int_default: accel-int-default-state { + pins =3D "gpio115"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + fg_alert_default: fg-alert-default-state { + pins =3D "gpio121"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + fg_i2c_default: fg-i2c-default-state { + pins =3D "gpio105", "gpio106"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + gpio_hall_sensor_default: gpio-hall-sensor-default-state { + pins =3D "gpio52"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + gpio_keys_default: gpio-keys-default-state { + pins =3D "gpio107", "gpio109"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-up; + }; + + motor_en_default: motor-en-default-state { + pins =3D "gpio86"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + motor_pwm_default: motor-pwm-default-state { + pins =3D "gpio50"; + function =3D "gcc_gp2_clk_a"; + }; + + muic_int_default: muic-int-default-state { + pins =3D "gpio12"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + nfc_default: nfc-default-state { + irq-pins { + pins =3D "gpio21"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-down; + }; + + nfc-pins { + pins =3D "gpio49", "gpio116"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + }; + + nfc_i2c_default: nfc-i2c-default-state { + pins =3D "gpio0", "gpio1"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + reg_tsp_en_default: reg-tsp-en-default-state { + pins =3D "gpio73"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + reg_tsp_io_en_default: reg-tsp-io-en-default-state { + pins =3D "gpio8"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + sdc2_cd_default: sdc2-cd-default-state { + pins =3D "gpio38"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-pull-up; + }; + + sensor_i2c_default: sensor-i2c-default-state { + pins =3D "gpio84", "gpio85"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + tkey_default: tkey-default-state { + pins =3D "gpio20"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + tkey_en_default: tkey-en-default-state { + pins =3D "gpio56"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + tkey_i2c_default: tkey-i2c-default-state { + pins =3D "gpio16", "gpio17"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + tkey_led_en_default: tkey-led-en-default-state { + pins =3D "gpio100"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; + + tsp_int_default: tsp-int-default-state { + pins =3D "gpio13"; + function =3D "gpio"; + drive-strength =3D <2>; + bias-disable; + }; +}; --=20 2.39.2