diff --git a/qcom/pmx75.dtsi b/qcom/pmx75.dtsi new file mode 100644 index 00000000..3838a32f --- /dev/null +++ b/qcom/pmx75.dtsi @@ -0,0 +1,87 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. + */ + +#include +#include + +&spmi_bus { + #address-cells = <2>; + #size-cells = <0>; + interrupt-controller; + #interrupt-cells = <4>; + + qcom,pmx75@1 { + compatible = "qcom,spmi-pmic"; + reg = <1 SPMI_USID>; + #address-cells = <1>; + #size-cells = <0>; + + pmx75_tz: qcom,temp-alarm@a00 { + compatible = "qcom,spmi-temp-alarm"; + reg = <0xa00>; + interrupts = <0x1 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; + #thermal-sensor-cells = <0>; + }; + + pmx75_vbus_detect: qcom,pmd-vbus-det@1500 { + compatible = "qcom,pm8941-misc"; + reg = <0x1500>; + interrupts = <0x1 0x15 0x0 IRQ_TYPE_EDGE_BOTH>; + interrupt-names = "usb_vbus"; + status = "disabled"; + }; + + pmx75_gpios: pinctrl@8800 { + compatible = "qcom,pmx75-gpio"; + reg = <0x8800>; + gpio-controller; + #gpio-cells = <2>; + interrupt-controller; + #interrupt-cells = <2>; + }; + + pmx75_pwm: pwms@e800 { + compatible = "qcom,pwm-lpg"; + reg = <0xe800>; + reg-names = "lpg-base"; + #pwm-cells = <2>; + qcom,num-lpg-channels = <4>; + }; + + pmx75_eusb2_repeater: qcom,eusb2-repeater@fd00 { + compatible = "qcom,pmic-eusb2-repeater"; + reg = <0xfd00>; + status = "disabled"; + }; + }; +}; + +&thermal_zones { + pmx75_temp_alarm: pmx75_tz { + polling-delay-passive = <100>; + polling-delay = <0>; + thermal-sensors = <&pmx75_tz>; + + trips { + pmx75_trip0: trip0 { + temperature = <95000>; + hysteresis = <0>; + type = "passive"; + }; + + pmx75_trip1: trip1 { + temperature = <115000>; + hysteresis = <0>; + type = "critical"; + }; + + pmx75_trip2: trip2 { + temperature = <145000>; + hysteresis = <0>; + type = "critical"; + }; + }; + }; +}; diff --git a/qcom/sdxkova-idp-cpe.dtsi b/qcom/sdxkova-idp-cpe.dtsi index bbfd742c..3d30e577 100644 --- a/qcom/sdxkova-idp-cpe.dtsi +++ b/qcom/sdxkova-idp-cpe.dtsi @@ -46,3 +46,8 @@ operating-points-v2 = <&sdhc1_opp_table>; }; + +&pmx75_vbus_detect { + status = "ok"; +}; + diff --git a/qcom/sdxkova-idp-mbb.dtsi b/qcom/sdxkova-idp-mbb.dtsi index 23f70201..15e414cb 100644 --- a/qcom/sdxkova-idp-mbb.dtsi +++ b/qcom/sdxkova-idp-mbb.dtsi @@ -3,8 +3,9 @@ * Copyright (c) 2024 Qualcomm Innovation Center, Inc. All rights reserved. */ -#include "sdxkova-pmic-overlay.dtsi" #include +#include "sdxkova-pmic-overlay.dtsi" +#include "pm7550ba.dtsi" &sdhc_1 { status = "disabled"; @@ -28,3 +29,39 @@ operating-points-v2 = <&sdhc2_opp_table>; }; + +&pmk8550_vadc { + /* PM8550BA Channel nodes */ + pm7550ba_offset_ref { + status = "ok"; + }; + + pm7550ba_vref_1p25 { + status = "ok"; + }; + + pm7550ba_die_temp { + status = "ok"; + }; + + pm7550ba_vph_pwr { + status = "ok"; + }; + + pm7550ba_chg_temp { + status = "ok"; + }; + + pm7550ba_iin_fb { + status = "ok"; + }; + + pm7550ba_ichg_fb { + status = "ok"; + }; +}; + +&pm7550ba_tz { + io-channels = <&pmk8550_vadc PM7550BA_ADC5_GEN3_DIE_TEMP>; + io-channel-names = "thermal"; +}; diff --git a/qcom/sdxkova-pmic-overlay.dtsi b/qcom/sdxkova-pmic-overlay.dtsi index 43b0d889..b4c705eb 100644 --- a/qcom/sdxkova-pmic-overlay.dtsi +++ b/qcom/sdxkova-pmic-overlay.dtsi @@ -4,6 +4,11 @@ */ #include +#include +#include + +#include "pmk8550.dtsi" +#include "pmx75.dtsi" / { vreg_sdc1_sd_ls_vccb: sdc1-sd-ls-gpio-regulator { @@ -27,3 +32,365 @@ parent-supply = <&vreg_sdc1_sd_ls_vccb>; }; }; + +&spmi_bus { + #address-cells = <2>; + #size-cells = <0>; + interrupt-controller; + #interrupt-cells = <4>; + + qcom,pmg1110@a { + compatible = "qcom,spmi-pmic"; + reg = <10 SPMI_USID>; + #address-cells = <1>; + #size-cells = <0>; + + pmg1110_tz: qcom,temp-alarm@a00 { + compatible = "qcom,spmi-temp-alarm"; + reg = <0xa00>; + interrupts = <0xa 0xa 0x0 IRQ_TYPE_EDGE_BOTH>; + #thermal-sensor-cells = <0>; + }; + }; +}; + +&thermal_zones { + pmg1110_temp_alarm: pmg1110_tz { + polling-delay-passive = <100>; + polling-delay = <0>; + thermal-sensors = <&pmg1110_tz>; + + trips { + trip0 { + temperature = <95000>; + hysteresis = <0>; + type = "passive"; + }; + + trip1 { + temperature = <115000>; + hysteresis = <0>; + type = "critical"; + }; + + trip2 { + temperature = <145000>; + hysteresis = <0>; + type = "critical"; + }; + }; + }; +}; + +&pmk8550_vadc { + /delete-node/ pm8550_offset_ref; + /delete-node/ pm8550_vref_1p25; + /delete-node/ pm8550_die_temp; + /delete-node/ pm8550_vph_pwr; + + /* PM8550BA Channel nodes */ + pm7550ba_offset_ref { + reg = ; + label = "pm7550ba_offset_ref"; + qcom,pre-scaling = <1 1>; + status = "disabled"; + }; + + pm7550ba_vref_1p25 { + reg = ; + label = "pm7550ba_vref_1p25"; + qcom,pre-scaling = <1 1>; + status = "disabled"; + }; + + pm7550ba_die_temp { + reg = ; + label = "pm7550ba_die_temp"; + qcom,pre-scaling = <1 1>; + status = "disabled"; + }; + + pm7550ba_vph_pwr { + reg = ; + label = "pm7550ba_vph_pwr"; + qcom,pre-scaling = <1 3>; + status = "disabled"; + }; + + pm7550ba_chg_temp { + reg = ; + label = "pm7550ba_chg_temp"; + status = "disabled"; + }; + + pm7550ba_iin_fb { + reg = ; + label = "pm7550ba_iin_fb"; + status = "disabled"; + }; + + pm7550ba_ichg_fb { + reg = ; + label = "pm7550ba_ichg_fb"; + status = "disabled"; + }; + + /* PMX75 Channel nodes */ + pmx75_offset_ref { + reg = ; + label = "pmx75_offset_ref"; + qcom,pre-scaling = <1 1>; + }; + + pmx75_vref_1p25 { + reg = ; + label = "pmx75_vref_1p25"; + qcom,pre-scaling = <1 1>; + }; + + pmx75_die_temp { + reg = ; + label = "pmx75_die_temp"; + qcom,pre-scaling = <1 1>; + }; + + pmx75_vph_pwr { + reg = ; + label = "pmx75_vph_pwr"; + qcom,pre-scaling = <1 3>; + }; + + pmx75_pa_therm1 { + reg = ; + label = "pmx75_pa_therm1"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + qcom,adc-tm-type = <1>; + }; + + pmx75_pa_therm2 { + reg = ; + label = "pmx75_pa_therm2"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + qcom,adc-tm-type = <1>; + }; + + pmx75_sdx_case_therm { + reg = ; + label = "pmx75_sdx_case_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + qcom,adc-tm-type = <1>; + }; + + pmx75_ambient_therm { + reg = ; + label = "pmx75_ambient_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + qcom,adc-tm-type = <1>; + }; + + pmx75_qtm_therm { + reg = ; + label = "pmx75_qtm_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + qcom,adc-tm-type = <1>; + }; + + pmx75_sdr_skin_therm { + reg = ; + label = "pmx75_sdr_skin_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + qcom,adc-tm-type = <1>; + }; +}; + +&pmx75_tz { + io-channels = <&pmk8550_vadc PMX75_ADC5_GEN3_DIE_TEMP>; + io-channel-names = "thermal"; +}; + +&thermal_zones { + sys-therm-1 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMX75_ADC5_GEN3_AMUX_THM1_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + sys-therm-2 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMX75_ADC5_GEN3_AMUX_THM2_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + sys-therm-3 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMX75_ADC5_GEN3_AMUX_THM3_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + sys-therm-4 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMX75_ADC5_GEN3_AMUX_THM4_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + sys-therm-5 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMX75_ADC5_GEN3_AMUX_THM5_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + sys-therm-6 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMX75_ADC5_GEN3_AMUX_THM6_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + xo-therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-sensors = <&pmk8550_vadc PMK8550_ADC5_GEN3_AMUX_THM1_XO_THERM_100K_PU>; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + + active-config1 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + pmg1110_temp_alarm: pmg1110_tz { + polling-delay-passive = <100>; + polling-delay = <0>; + thermal-sensors = <&pmg1110_tz>; + + trips { + trip0 { + temperature = <95000>; + hysteresis = <0>; + type = "passive"; + }; + + trip1 { + temperature = <115000>; + hysteresis = <0>; + type = "critical"; + }; + + trip2 { + temperature = <145000>; + hysteresis = <0>; + type = "critical"; + }; + }; + }; +}; + +&soc { + pmic-pon-log { + compatible = "qcom,pmic-pon-log"; + nvmem = <&pmk8550_sdam_5>, <&pmk8550_sdam_6>; + nvmem-names = "pon_log0", "pon_log1"; + }; + + reboot_reason { + compatible = "qcom,reboot-reason"; + nvmem-cells = <&restart_reason>; + nvmem-cell-names = "restart_reason"; + }; +}; diff --git a/qcom/sdxkova.dtsi b/qcom/sdxkova.dtsi index 6b1d5410..4138bd3b 100644 --- a/qcom/sdxkova.dtsi +++ b/qcom/sdxkova.dtsi @@ -4,6 +4,7 @@ */ #include +#include #include "sdx75.dtsi" /delete-node/ &apps_smmu; /delete-node/ &tcsr_mutex; @@ -1539,6 +1540,115 @@ iommu-addresses = <&qupv3_id_0 0x0 0x40000000>, <&qupv3_id_0 0x50000000 0xb0000000>; }; + + /delete-node/ spmi@c400000; + spmi_bus: qcom,spmi@c42d000 { + compatible = "qcom,spmi-pmic-arb"; + reg = <0x0 0xc42d000 0x0 0x4000>, + <0x0 0xc400000 0x0 0x2800>, + <0x0 0xc500000 0x0 0x200000>, + <0x0 0xc440000 0x0 0x3c000>, + <0x0 0xc4c0000 0x0 0x10000>; + reg-names = "cnfg", "core", "chnls", "obsrvr", "intr"; + interrupts = ; + interrupt-names = "periph_irq"; + interrupt-controller; + #interrupt-cells = <4>; + #address-cells = <2>; + #size-cells = <0>; + cell-index = <0>; + qcom,channel = <0>; + qcom,ee = <0>; + qcom,bus-id = <0>; + }; + + spmi_debug_bus: qcom,spmi-debug@24b14000 { + compatible = "qcom,spmi-pmic-arb-debug"; + reg = <0x0 0x24b14000 0x0 0x60>, <0x0 0x221c8784 0x0 0x4>; + reg-names = "core", "fuse"; + clock-names = "core_clk"; + qcom,fuse-enable-bit = <18>; + #address-cells = <2>; + #size-cells = <0>; + depends-on-supply = <&spmi_bus>; + + qcom,pmk8550-debug@0 { + compatible = "qcom,spmi-pmic"; + reg = <0 SPMI_USID>; + #address-cells = <2>; + #size-cells = <0>; + qcom,can-sleep; + }; + + qcom,pmx75-debug@1 { + compatible = "qcom,spmi-pmic"; + reg = <1 SPMI_USID>; + #address-cells = <2>; + #size-cells = <0>; + qcom,can-sleep; + }; + + qcom,pm7550ba-debug@7 { + compatible = "qcom,spmi-pmic"; + reg = <7 SPMI_USID>; + #address-cells = <2>; + #size-cells = <0>; + qcom,can-sleep; + }; + }; + + thermal_zones: thermal-zones { + }; + + pmic_glink: qcom,pmic_glink { + compatible = "qcom,pmic-glink"; + qcom,pmic-glink-channel = "PMIC_RTR_ADSP_APPS"; + qcom,subsys-name = "mpss"; + status = "disabled"; + + ucsi: qcom,ucsi { + compatible = "qcom,ucsi-glink"; + }; + + qcom,battery_charger { + compatible = "qcom,battery-charger"; + qcom,wireless-charging-not-supported; + qcom,thermal-mitigation-step = <500000>; + }; + }; + + pmic_glink_log: qcom,pmic_glink_log { + compatible = "qcom,pmic-glink"; + qcom,pmic-glink-channel = "PMIC_LOGS_ADSP_APPS"; + status = "disabled"; + + qcom,battery_debug { + compatible = "qcom,battery-debug"; + }; + + qcom,charger_ulog_glink { + compatible = "qcom,charger-ulog-glink"; + }; + + pmic_glink_debug: qcom,pmic_glink_debug { + compatible = "qcom,pmic-glink-debug"; + #address-cells = <1>; + #size-cells = <0>; + depends-on-supply = <&spmi_bus>; + + spmi@0 { + reg = <0>; + #address-cells = <2>; + #size-cells = <0>; + + qcom,pm7550ba-debug@7 { + compatible = "qcom,spmi-pmic"; + reg = <7 SPMI_USID>; + qcom,can-sleep; + }; + }; + }; + }; }; &gcc {