From 76fd1e0b7150f873afc8c7ff72ffc2949df58e0a Mon Sep 17 00:00:00 2001 From: Arian Date: Wed, 13 Mar 2024 00:20:50 +0100 Subject: [PATCH] Add support for POCO F5 Pro/Redmi K60 (mondrian|M11A) Change-Id: I479e07ae78118238b79ddc52cf6614975635ce78 --- qcom/Makefile | 4 +- qcom/mondrian-pinctrl.dtsi | 111 +++++ qcom/mondrian-sm8475-pm8008-overlay.dts | 14 + qcom/mondrian-sm8475.dtsi | 518 ++++++++++++++++++++++++ qcom/mondrian-wl2866d.dtsi | 21 + 5 files changed, 667 insertions(+), 1 deletion(-) create mode 100755 qcom/mondrian-pinctrl.dtsi create mode 100644 qcom/mondrian-sm8475-pm8008-overlay.dts create mode 100644 qcom/mondrian-sm8475.dtsi create mode 100644 qcom/mondrian-wl2866d.dtsi diff --git a/qcom/Makefile b/qcom/Makefile index e23109b8..997600c1 100644 --- a/qcom/Makefile +++ b/qcom/Makefile @@ -328,7 +328,8 @@ dtbo-$(CONFIG_ARCH_CAPE) += cape-mtp-pm8008-overlay.dtbo \ ukee-qrd-pm8010-overlay.dtbo \ unicorn-sm8475-pm8008-overlay.dtbo \ thor-sm8475-pm8008-overlay.dtbo \ - mayfly-sm8475-pm8008-overlay.dtbo + mayfly-sm8475-pm8008-overlay.dtbo \ + mondrian-sm8475-pm8008-overlay.dtbo cape-mtp-pm8008-overlay.dtbo-base := cape.dtb cape-v2.dtb capep.dtb cape-mtp-120fps-pm8008-overlay.dtbo-base := cape.dtb cape-v2.dtb capep.dtb @@ -365,6 +366,7 @@ ukee-qrd-pm8010-overlay.dtbo-base := ukee.dtb unicorn-sm8475-pm8008-overlay.dtbo-base := cape.dtb cape-v2.dtb capep.dtb thor-sm8475-pm8008-overlay.dtbo-base := cape.dtb cape-v2.dtb capep.dtb mayfly-sm8475-pm8008-overlay.dtbo-base := cape.dtb cape-v2.dtb capep.dtb +mondrian-sm8475-pm8008-overlay.dtbo-base := cape.dtb cape-v2.dtb capep.dtb else dtb-$(CONFIG_ARCH_CAPE) += cape-mtp-pm8008.dtb \ diff --git a/qcom/mondrian-pinctrl.dtsi b/qcom/mondrian-pinctrl.dtsi new file mode 100755 index 00000000..850dbfe9 --- /dev/null +++ b/qcom/mondrian-pinctrl.dtsi @@ -0,0 +1,111 @@ +/*for unicorn pinctrl */ + +&tlmm { + cirrus_reset_default_0: cirrus_reset_default_0 { + mux { + pins = "gpio3"; + function = "gpio"; + }; + + config { + pins = "gpio3"; + drive-strength = <16>; /* 16 mA */ + bias-disable; + output-high; + }; + }; + + cirrus_reset_default_3: cirrus_reset_default_3 { + mux { + pins = "gpio1"; + function = "gpio"; + }; + + config { + pins = "gpio1"; + drive-strength = <16>; /* 16 mA */ + bias-disable; + output-high; + }; + }; + + cirrus_irq_default { + cirrus_irq_default_0: cirrus_irq_default_0 { + mux { + pins = "gpio63"; + function = "gpio"; + }; + config { + pins = "gpio63"; + drive-strength = <2>; + input-enable; + bias-pull-up; + }; + }; + cirrus_irq_default_3: cirrus_irq_default_3 { + mux { + pins = "gpio88"; + function = "gpio"; + }; + config { + pins = "gpio88"; + drive-strength = <2>; + input-enable; + bias-pull-up; + }; + }; + }; + + mi_ts_spi_active: mi_ts_spi_active { + mux { + pins = "gpio16", "gpio17", "gpio18"; + function = "qup4"; + }; + + config { + pins = "gpio16", "gpio17", "gpio18"; + drive-strength = <6>; + bias-disable; + }; + }; + + mi_ts_spi_sleep: mi_ts_spi_sleep { + mux { + pins = "gpio16", "gpio17", "gpio18"; + function = "gpio"; + }; + + config { + pins = "gpio16", "gpio17", "gpio18"; + drive-strength = <6>; + bias-disable; + }; + }; + + mi_ts_cs_active: mi_ts_cs_active { + mux { + pins = "gpio19"; + function = "qup4"; + }; + + config { + pins = "gpio19"; + drive-strength = <6>; + bias-pull-up; + }; + }; + + mi_ts_cs_suspend: mi_ts_cs_suspend { + mux { + pins = "gpio19"; + function = "gpio"; + }; + + config { + pins = "gpio19"; + drive-strength = <6>; + bias-pull-up; + }; + }; + +}; diff --git a/qcom/mondrian-sm8475-pm8008-overlay.dts b/qcom/mondrian-sm8475-pm8008-overlay.dts new file mode 100644 index 00000000..46e60415 --- /dev/null +++ b/qcom/mondrian-sm8475-pm8008-overlay.dts @@ -0,0 +1,14 @@ +/dts-v1/; +/plugin/; + +#include "mondrian-sm8475.dtsi" +#include "mondrian-wl2866d.dtsi" + +/ { + model = "Mondrian based on Qualcomm Technologies, Inc SM8475"; + compatible = "qcom,cape-mtp", "qcom,cape", "qcom,mtp"; + qcom,msm-id = <530 0x10000>, <531 0x10000>, <540 0x10000>; + qcom,board-id = <0x10008 0>; + xiaomi,miboard-id = <0xE 0>; +}; + diff --git a/qcom/mondrian-sm8475.dtsi b/qcom/mondrian-sm8475.dtsi new file mode 100644 index 00000000..bd4bb92b --- /dev/null +++ b/qcom/mondrian-sm8475.dtsi @@ -0,0 +1,518 @@ +/* + this file is for attribution only of unicorn + And public attribution of xiaomi platforms(like K2 and so and) +*/ + +#include "mondrian-pinctrl.dtsi" +#include "xiaomi-sm8475-common.dtsi" +&soc { + xiaomi_touch { + compatible = "xiaomi-touch"; + status = "ok"; + touch,name = "xiaomi-touch"; + }; + + thermal_message: thermal-message { + board-sensor = "VIRTUAL-SENSOR"; + }; + +}; + +&qupv3_se4_spi { + status = "ok"; + qcom,rt; + pinctrl-0 = <&mi_ts_spi_active &mi_ts_cs_active>; + pinctrl-1 = <&mi_ts_spi_sleep &mi_ts_cs_suspend>; + xiaomi_touch@0 { + status = "ok"; + compatible = "xiaomi,m11a-spi"; + reg = <0>; + spi-max-frequency = <15000000>; + interrupt-parent = <&tlmm>; + interrupts = <21 0x2008>; + //goodix,avdd-name = "avdd"; + //avdd-supply = <&L7C>; + pinctrl-names = "pmx_ts_active", "pmx_ts_suspend"; + pinctrl-0 = <&mi_ts_active>; + pinctrl-1 = <&ts_int_suspend &ts_reset_suspend>; + + goodix,avdd-gpio = <&tlmm 71 0x0>; + goodix,iovdd-name = "vdd"; + vdd-supply = <&L2C>; + goodix,irq-gpio = <&tlmm 21 0x2008>; + goodix,reset-gpio = <&tlmm 20 0x00>; + goodix,irq-flags = <2>; + goodix,panel-max-x = <14400>; + goodix,panel-max-y = <32000>; + goodix,panel-max-w = <255>; + goodix,panel-max-p = <4096>; + goodix,firmware-name = "goodix_firmware_m11a"; + goodix,config-name = "goodix_cfg_group_m11a"; + goodix,touch-expert-array = <2 3 2 2 + 4 3 3 2 + 3 3 4 2>; + }; +}; + +&tlmm { + mi_ts_active: mi_ts_active { + mux { + pins = "gpio21", "gpio20"; + function = "gpio"; + }; + config { + pins = "gpio21", "gpio20"; + drive-strength = <8>; + bias-pull-up; + }; + }; + /* RCV HANDSET CTL */ + rcv_gpio_high: rcv_gpio_high { + mux { + pins = "gpio52"; + function = "gpio"; + }; + + config { + pins = "gpio52"; + drive-strength = <2>; + bias-pull-up; + output-high; + }; + }; + rcv_gpio_low: rcv_gpio_low { + mux { + pins = "gpio52"; + function = "gpio"; + }; + + config { + pins = "gpio52"; + drive-strength = <2>; + bias-disable; + output-low; + }; + }; + + tert_tdm_din_active: tert_tdm_din_active { + mux { + pins = "gpio122"; + function = "mi2s2_data0"; + }; + + config { + pins = "gpio122"; + drive-strength = <0x02>; + bias-disable; + }; + }; + + tert_tdm_dout_active: tert_tdm_dout_active { + mux { + pins = "gpio124"; + function = "mi2s2_data1"; + }; + + config { + pins = "gpio124"; + drive-strength = <0x02>; + bias-disable; + }; + }; + + tert_tdm_clk_active: tert_tdm_clk_active { + mux { + pins = "gpio121"; + function = "mi2s2_sck"; + }; + + config { + pins = "gpio121"; + drive-strength = <0x02>; + bias-disable; + output-low; + }; + }; + + tert_tdm_ws_active: tert_tdm_ws_active { + mux { + pins = "gpio123"; + function = "mi2s2_ws"; + }; + + config { + pins = "gpio123"; + drive-strength = <0x02>; + bias-disable; + output-low; + }; + }; +}; + +&qupv3_se15_i2c { + status = "ok"; + + /* TOP Smart PA */ + aw882xx_smartpa@34 { + compatible = "awinic,aw882xx_smartpa"; + reg = <0x34>; + irq-gpio = <&tlmm 88 0x2008>; + reset-gpio = <&tlmm 1 0>; + dc-flag = <0>; + sync-flag = <1>; + sound-channel = <0>; + aw-cali-mode = "aw_none "; + spksw-gpio = <&tlmm 52 0>; + status = "ok"; + }; + + /* BOT Smart PA */ + aw882xx_smartpa@35 { + compatible = "awinic,aw882xx_smartpa"; + reg = <0x35>; + irq-gpio = <&tlmm 63 0x2008>; + reset-gpio = <&tlmm 3 0>; + dc-flag = <0>; + sync-flag = <1>; + sound-channel = <1>; + aw-cali-mode = "aw_none "; + status = "ok"; + }; +}; + +&battery_charger { + qcom,shutdown-voltage = <3350>; +}; + +&nxp_eusb2_repeater { + qcom,param-override-seq = /* override value offset */ + <0x50 0x06 + 0x00 0x07 + 0x63 0x08 + 0x03 0x0A>; + qcom,param-override-seq-host = + <0x40 0x06 + 0x21 0x07 + 0x64 0x08 + 0x03 0x0A>; +}; + +&soc { + fingerprint_goodix { + compatible = "goodix,fingerprint"; + l1c_vdd-supply = <&L9C>; + goodix,gpio-reset = <&tlmm 41 0x0>; + goodix,gpio-irq = <&tlmm 40 0x0>; + status = "ok"; + }; +}; +&L9C { + regulator-boot-on; + regulator-always-on; + regulator-min-microvolt = <3200000>; + regulator-max-microvolt = <3200000>; + qcom,init-voltage = <3200000>; +}; + +&qseecom_ta_mem { + size = <0x0 0x2000000>; +}; + +&qseecom_mem { + size = <0x0 0x2400000>; +}; + +&pmk8350_vadc { + pm8350_msm_therm { + reg = ; + label = "pm8350_msm_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + pm8350_flash_therm { + reg = ; + label = "pm8350_flash_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + pm8350_hot_pocket_therm { + reg = ; + label = "pm8350_hot_pocket_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + wireless_therm { + reg = ; + label = "wireless_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + + pm8350_charger0_therm { + reg = ; + label = "pm8350_charger0_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + pa_therm0 { + reg = ; + label = "pa_therm0"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + pa_therm1 { + reg = ; + label = "pa_therm1"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + wifi_therm { + reg = ; + label = "wifi_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; + + pm8350b_usb_conn_therm { + reg = ; + label = "pm8350b_usb_conn_therm"; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + qcom,pre-scaling = <1 1>; + }; +}; + +&pmk8350_adc_tm { + io-channels = <&pmk8350_vadc PM8350_ADC7_AMUX_THM1_100K_PU>, + <&pmk8350_vadc PM8350_ADC7_AMUX_THM2_100K_PU>, + <&pmk8350_vadc PM8350_ADC7_AMUX_THM3_100K_PU>, + <&pmk8350_vadc PM8350_ADC7_AMUX_THM4_100K_PU>, + <&pmk8350_vadc PM8350B_ADC7_GPIO2_100K_PU>, + <&pmk8350_vadc PMR735A_ADC7_GPIO1_100K_PU>, + <&pmk8350_vadc PMR735A_ADC7_GPIO2_100K_PU>, + <&pmk8350_vadc PMR735A_ADC7_GPIO3_100K_PU>; + + pm8350_msm_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + pm8350_flash_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + pm8350_hot_pocket_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + wireless_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + pm8350_charger0_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + pa_therm0 { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + pa_therm1 { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + + wifi_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; +}; + +&pmk8350 { + pm8350_adc_tm_iio: adc_tm_e { + compatible = "qcom,adc-tm7-iio"; + reg = <0x3400>; + #thermal-sensor-cells = <1>; + #address-cells = <1>; + #size-cells = <0>; + + io-channels = <&pmk8350_vadc PM8350B_ADC7_AMUX_THM4_100K_PU>; + + pm8350b_usb_conn_therm { + reg = ; + qcom,ratiometric; + qcom,hw-settle-time = <200>; + }; + }; +}; + +&thermal_zones { + cpu_therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PM8350_ADC7_AMUX_THM1_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + flash_therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PM8350_ADC7_AMUX_THM2_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + quiet_therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PM8350_ADC7_AMUX_THM3_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + charger_therm0 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PM8350_ADC7_AMUX_THM4_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + wireless_therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PM8350B_ADC7_GPIO2_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + pa_therm0 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PMR735A_ADC7_GPIO1_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + pa_therm1 { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PMR735A_ADC7_GPIO2_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + wifi_therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pmk8350_adc_tm PMR735A_ADC7_GPIO3_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; + + usb_conn_therm { + polling-delay-passive = <0>; + polling-delay = <0>; + thermal-governor = "user_space"; + thermal-sensors = <&pm8350_adc_tm_iio PM8350B_ADC7_AMUX_THM4_100K_PU>; + wake-capable-sensor; + trips { + active-config0 { + temperature = <125000>; + hysteresis = <1000>; + type = "passive"; + }; + }; + }; +}; + +&bcl_soc { + status = "disabled"; +}; + + diff --git a/qcom/mondrian-wl2866d.dtsi b/qcom/mondrian-wl2866d.dtsi new file mode 100644 index 00000000..539502c4 --- /dev/null +++ b/qcom/mondrian-wl2866d.dtsi @@ -0,0 +1,21 @@ +&clock_gcc { + qcom,critical-devices = <&qupv3_se5_i2c>; +}; + +&qupv3_se5_i2c { + #address-cells = <1>; + #size-cells = <0>; + status = "ok"; + wl2866d@28 { + compatible = "xiaomi,wl2866d"; + reg = <0x28>; + vin1-supply = <&S12B>; + vin1-voltage-level = <1250000 1250000>; + vin2-supply = <&BOB>; + vin2-voltage-level = <3300000 3300000>; + en-gpio = <&tlmm 44 0>; + avdd2 = /bits/ 8 <0x80>; + dvdd1 = /bits/ 8 <0x64>; + status = "ok"; + }; +};