Re: [PATCH 14/20] arm64: dts: qcom: kaanapali-mtp: Enable more features

Jingyi Wang
2025-09-29T03:24:40Z

On 9/25/2025 10:09 AM, Dmitry Baryshkov wrote:
> On Wed, Sep 24, 2025 at 05:17:31PM -0700, Jingyi Wang wrote:
>> Enable more features on Kaanapali MTP boards including PMIC peripherals,
>> bus, SDHCI, remoteprocs, USB, PCIE, WLAN and Bluetooth.
>>
>> Written with help from Jyothi Kumar Seerapu(added bus), Ronak Raheja
>> (added USB), Manish Pandey(added SDHCI), Jishnu Prakash(added PMIC),
>> Qiang Yu(added PCIE), Yijie Yang(Added WLAN) and Zijun Hu(Added Bluetooth).
>>
>> Signed-off-by: Jingyi Wang <jingyi.wang@oss.qualcomm.com>
>> ---
>> arch/arm64/boot/dts/qcom/kaanapali-mtp.dts | 663 +++++++++++++++++++++++++++++
>> 1 file changed, 663 insertions(+)
>>
>> diff --git a/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts b/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
>> index 9cf3158e2712..2949579481a9 100644
>> --- a/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
>> +++ b/arch/arm64/boot/dts/qcom/kaanapali-mtp.dts
>> @@ -5,9 +5,23 @@
>>
>> /dts-v1/;
>>
>> +#include <dt-bindings/gpio/gpio.h>
>> +#include <dt-bindings/input/linux-event-codes.h>
>> +#include <dt-bindings/leds/common.h>
>> #include <dt-bindings/regulator/qcom,rpmh-regulator.h>
>> #include "kaanapali.dtsi"
>>
>> +#define PMH0110_D_E0_SID 3
>> +#define PMH0110_F_E0_SID 5
>> +#define PMH0110_G_E0_SID 6
>> +#define PMH0110_I_E0_SID 8
>> +#define PMH0104_J_E1_SID 9
>> +
>> +#include "pmk8850.dtsi"
>> +#include "pmh0101.dtsi"
>> +#include "pmh0110.dtsi"
>> +#include "pmh0104.dtsi"
>> +
>> / {
>> model = "Qualcomm Technologies, Inc. Kaanapali MTP";
>> compatible = "qcom,kaanapali-mtp", "qcom,kaanapali";
>> @@ -15,6 +29,7 @@ / {
>>
>> aliases {
>> serial0 = &uart7;
>> + serial1 = &uart18;
>> };
>>
>> chosen {
>> @@ -52,6 +67,304 @@ bi_tcxo_ao_div2: bi-tcxo-ao-div2-clk {
>> clock-div = <2>;
>> };
>> };
>> +
>> + gpio-keys {
>> + compatible = "gpio-keys";
>> +
>> + pinctrl-0 = <&key_vol_up_default>;
>> + pinctrl-names = "default";
>> +
>> + key-volume-up {
>> + label = "Volume Up";
>> + linux,code = <KEY_VOLUMEUP>;
>> + gpios = <&tlmm 101 GPIO_ACTIVE_LOW>;
>> + debounce-interval = <15>;
>> + linux,can-disable;
>> + wakeup-source;
>> + };
>> + };
>> +
>> + thermal-zones {
>> + pmh0101-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmh0101_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmh0104-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmh0104_j_e1_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmh0110-d-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmh0110_d_e0_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmh0110-f-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmh0110_f_e0_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmh0110-g-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmh0110_g_e0_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmh0110-i-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmh0110_i_e0_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmd8028-thermal {
>> + polling-delay-passive = <100>;
>> + thermal-sensors = <&pmd8028_temp_alarm>;
>> +
>> + trips {
>> + pmd8028_trip0: trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + pmd8028_trip1: trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmih0108-thermal {
>> + polling-delay-passive = <100>;
>> + thermal-sensors = <&pmih0108_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pmr735d-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pmr735d_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pm8010-m-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pm8010_m_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> +
>> + pm8010-n-thermal {
>> + polling-delay-passive = <100>;
>> +
>> + thermal-sensors = <&pm8010_n_temp_alarm>;
>> +
>> + trips {
>> + trip0 {
>> + temperature = <95000>;
>> + hysteresis = <0>;
>> + type = "passive";
>> + };
>> +
>> + trip1 {
>> + temperature = <115000>;
>> + hysteresis = <0>;
>> + type = "hot";
>> + };
>> + };
>> + };
>> + };
>> +
>> + wcn7850-pmu {
>> + compatible = "qcom,wcn7850-pmu";
>> +
>> + pinctrl-0 = <&bt_default>, <&sw_ctrl_default>, <&wlan_en>;
>> + pinctrl-names = "default";
>> +
>> + bt-enable-gpios = <&pmh0104_j_e1_gpios 5 GPIO_ACTIVE_HIGH>;
>> + wlan-enable-gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>;
>> +
>> + vdd-supply = <&vreg_s2j_0p8>;
>> + vddio-supply = <&vreg_l2g_1p8>;
>> + vddio1p2-supply = <&vreg_l3g_1p2>;
>> + vddaon-supply = <&vreg_s7g_0p9>;
>> + vdddig-supply = <&vreg_s1j_0p8>;
>> + vddrfa1p2-supply = <&vreg_s7f_1p2>;
>> + vddrfa1p8-supply = <&vreg_s8f_1p8>;
>> +
>> + clocks = <&rpmhcc RPMH_RF_CLK1>;
>> +
>> + regulators {
>> + vreg_pmu_rfa_cmn: ldo0 {
>> + regulator-name = "vreg_pmu_rfa_cmn";
>> + };
>> +
>> + vreg_pmu_aon_0p59: ldo1 {
>> + regulator-name = "vreg_pmu_aon_0p59";
>> + };
>> +
>> + vreg_pmu_wlcx_0p8: ldo2 {
>> + regulator-name = "vreg_pmu_wlcx_0p8";
>> + };
>> +
>> + vreg_pmu_wlmx_0p85: ldo3 {
>> + regulator-name = "vreg_pmu_wlmx_0p85";
>> + };
>> +
>> + vreg_pmu_btcmx_0p85: ldo4 {
>> + regulator-name = "vreg_pmu_btcmx_0p85";
>> + };
>> +
>> + vreg_pmu_rfa_0p8: ldo5 {
>> + regulator-name = "vreg_pmu_rfa_0p8";
>> + };
>> +
>> + vreg_pmu_rfa_1p2: ldo6 {
>> + regulator-name = "vreg_pmu_rfa_1p2";
>> + };
>> +
>> + vreg_pmu_rfa_1p8: ldo7 {
>> + regulator-name = "vreg_pmu_rfa_1p8";
>> + };
>> +
>> + vreg_pmu_pcie_0p9: ldo8 {
>> + regulator-name = "vreg_pmu_pcie_0p9";
>> + };
>> +
>> + vreg_pmu_pcie_1p8: ldo9 {
>> + regulator-name = "vreg_pmu_pcie_1p8";
>> + };
>> + };
>> + };
>> };
>>
>> &apps_rsc {
>> @@ -674,6 +987,304 @@ vreg_l7n_3p3: ldo7 {
>> };
>> };
>>
>> +&pmh0110_d_e0 {
>> + status = "okay";
>> +};
>> +
>> +&pmh0110_f_e0 {
>> + status = "okay";
>> +};
>> +
>> +&pmh0110_g_e0 {
>> + status = "okay";
>> +};
>> +
>> +&pmh0110_i_e0 {
>> + status = "okay";
>> +};
>> +
>> +&spmi_bus1 {
>> + pmd8028: pmic@4 {
>> + compatible = "qcom,pmd8028", "qcom,spmi-pmic";
>> + reg = <0x4 SPMI_USID>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + pmd8028_temp_alarm: temp-alarm@a00 {
>> + compatible = "qcom,spmi-temp-alarm";
>> + reg = <0xa00>;
>> + interrupts = <0x4 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
>> + #thermal-sensor-cells = <0>;
>> + };
>> +
>> + pmd8028_gpios: gpio@8800 {
>> + compatible = "qcom,pmd8028-gpio", "qcom,spmi-gpio";
>> + reg = <0x8800>;
>> + gpio-controller;
>> + gpio-ranges = <&pmd8028_gpios 0 0 4>;
>> + #gpio-cells = <2>;
>> + interrupt-controller;
>> + #interrupt-cells = <2>;
>> + };
>> + };
>> +
>> + pmih0108: pmic@7 {
>> + compatible = "qcom,pmih0108", "qcom,spmi-pmic";
>> + reg = <0x7 SPMI_USID>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + pmih0108_temp_alarm: temp-alarm@a00 {
>> + compatible = "qcom,spmi-temp-alarm";
>> + reg = <0xa00>;
>> + interrupts = <0x7 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
>> + #thermal-sensor-cells = <0>;
>> + };
>> +
>> + pmih0108_gpios: gpio@8800 {
>> + compatible = "qcom,pmih0108-gpio", "qcom,spmi-gpio";
>> + reg = <0x8800>;
>> + gpio-controller;
>> + gpio-ranges = <&pmih0108_gpios 0 0 18>;
>> + #gpio-cells = <2>;
>> + interrupt-controller;
>> + #interrupt-cells = <2>;
>> + };
>> +
>> + pmih0108_eusb2_repeater: phy@fd00 {
>> + compatible = "qcom,pm8550b-eusb2-repeater";
>> + reg = <0xfd00>;
>> + #phy-cells = <0>;
>> + vdd18-supply = <&vreg_l15b_1p8>;
>> + vdd3-supply = <&vreg_l5b_3p1>;
>> + };
>> + };
>> +
>> + pmr735d: pmic@a {
>> + compatible = "qcom,pmr735d", "qcom,spmi-pmic";
>> + reg = <0xa SPMI_USID>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + pmr735d_temp_alarm: temp-alarm@a00 {
>> + compatible = "qcom,spmi-temp-alarm";
>> + reg = <0xa00>;
>> + interrupts = <0xa 0xa 0x0 IRQ_TYPE_EDGE_BOTH>;
>> + #thermal-sensor-cells = <0>;
>> + };
>> +
>> + pmr735d_gpios: gpio@8800 {
>> + compatible = "qcom,pmr735d-gpio", "qcom,spmi-gpio";
>> + reg = <0x8800>;
>> + gpio-controller;
>> + gpio-ranges = <&pmr735d_gpios 0 0 2>;
>> + #gpio-cells = <2>;
>> + interrupt-controller;
>> + #interrupt-cells = <2>;
>> + };
>> + };
>> +
>> + pm8010_m: pmic@c {
>> + compatible = "qcom,pm8010", "qcom,spmi-pmic";
>> + reg = <0xc SPMI_USID>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + pm8010_m_temp_alarm: temp-alarm@2400 {
>> + compatible = "qcom,spmi-temp-alarm";
>> + reg = <0x2400>;
>> + interrupts = <0xc 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
>> + #thermal-sensor-cells = <0>;
>> + };
>> + };
>> +
>> + pm8010_n: pmic@d {
>> + compatible = "qcom,pm8010", "qcom,spmi-pmic";
>> + reg = <0xd SPMI_USID>;
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + pm8010_n_temp_alarm: temp-alarm@2400 {
>> + compatible = "qcom,spmi-temp-alarm";
>> + reg = <0x2400>;
>> + interrupts = <0xd 0x24 0x0 IRQ_TYPE_EDGE_BOTH>;
>> + #thermal-sensor-cells = <0>;
>> + };
>> + };
>> +};
>> +
>> +&pmh0101_flash {
>
> spmi > pmh0101_flash
>

will fix

>> + status = "okay";
>> +
>> + led-0 {
>> + function = LED_FUNCTION_FLASH;
>> + function-enumerator = <0>;
>> + color = <LED_COLOR_ID_YELLOW>;
>> + led-sources = <1>, <4>;
>> + led-max-microamp = <500000>;
>> + flash-max-microamp = <2000000>;
>> + flash-max-timeout-us = <1280000>;
>> + };
>> +
>> + led-1 {
>> + function = LED_FUNCTION_FLASH;
>> + function-enumerator = <1>;
>> + color = <LED_COLOR_ID_WHITE>;
>> + led-sources = <2>, <3>;
>> + led-max-microamp = <500000>;
>> + flash-max-microamp = <2000000>;
>> + flash-max-timeout-us = <1280000>;
>> + };
>> +};
>> +
>> +&pmh0101_pwm {
>> + status = "okay";
>> +
>> + multi-led {
>> + color = <LED_COLOR_ID_RGB>;
>> + function = LED_FUNCTION_STATUS;
>> +
>> + #address-cells = <1>;
>> + #size-cells = <0>;
>> +
>> + led@1 {
>> + reg = <1>;
>> + color = <LED_COLOR_ID_RED>;
>> + };
>> +
>> + led@2 {
>> + reg = <2>;
>> + color = <LED_COLOR_ID_GREEN>;
>> + };
>> +
>> + led@3 {
>> + reg = <3>;
>> + color = <LED_COLOR_ID_BLUE>;
>> + };
>> + };
>> +};
>> +
>> +&tlmm {
>> + wlan_en: wlan-en-state {
>> + pins = "gpio16";
>> + function = "gpio";
>> + drive-strength = <8>;
>> + bias-pull-down;
>> + };
>
> Why are the TLMM pin entries sorted?
>
>> +
>> + sw_ctrl_default: sw-ctrl-default-state {
>> + pins = "gpio18";
>> + function = "gpio";
>> + bias-pull-down;
>> + };
>> +
>> + key_vol_up_default: key-vol-up-default-state {
>> + pins = "gpio101";
>> + function = "gpio";
>> + output-disable;
>> + bias-pull-up;
>> + };
>> +
>> + pcie0_default_state: pcie0-default-state {
>> + clkreq-n-pins {
>> + pins = "gpio103";
>> + function = "pcie0_clk_req_n";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> + };
>> +
>> + perst-n-pins {
>> + pins = "gpio102";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-disable;
>> + };
>> +
>> + wake-n-pins {
>> + pins = "gpio104";
>> + function = "gpio";
>> + drive-strength = <2>;
>> + bias-pull-up;
>> + };
>> + };
>> +};
>> +
>> +&pcie0 {
>
> This is also in the wrong place. Please keep the nodes sorted.
>

will fix

>> + pinctrl-0 = <&pcie0_default_state>;
>> + pinctrl-names = "default";
>> +
>> + status = "okay";
>> +};
>> +
>> +&pcie0_phy {
>> + vdda-phy-supply = <&vreg_l3i_0p8>;
>> + vdda-pll-supply = <&vreg_l1d_1p2>;
>> +
>> + status = "okay";
>> +};
>> +
>> @@ -702,3 +1343,25 @@ &ufs_mem_phy {
>>
>> status = "okay";
>> };
>> +
>> +&usb_1 {
>> + dr_mode = "peripheral";
>
> Is it really peripheral-only?
>
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_1_hsphy {
>> + vdd-supply = <&vreg_l4f_0p8>;
>> + vdda12-supply = <&vreg_l1d_1p2>;
>> +
>> + phys = <&pmih0108_eusb2_repeater>;
>> +
>> + status = "okay";
>> +};
>> +
>> +&usb_dp_qmpphy {
>> + vdda-phy-supply = <&vreg_l1d_1p2>;
>> + vdda-pll-supply = <&vreg_l4f_0p8>;
>> +
>> + status = "okay";
>> +};
>>
>> --
>> 2.25.1
>>
>
Thanks,
Jingyi