/dts-v1/; #include #include #include #include "dt-bindings/usb/pd.h" #include "sm8650.dtsi" #include "pm8010.dtsi" #include "pm8550.dtsi" #include "pm8550b.dtsi" #include "pm8550vs.dtsi" #define PMK8550VE_SID 8 #include "pm8550ve.dtsi" #include "pmk8550.dtsi" #include "sm8650-el2.dtsi" / { model = "SM8650 MP rev1 4slam 2et"; compatible = "qcom,sm8650-dv1", "qcom,sm8650"; aliases { serial0 = &uart15; serial1 = &uart14; serial2 = &uart3; }; chosen { stdout-path = "serial0:115200n8"; simple-framebuffer { compatible = "simple-framebuffer"; width = <4320>; height = <2160>; stride = <(4320 * 4)>; format = "a8r8g8b8"; memory-region = <&framebuffer_mem>; status = "disabled"; }; }; cpus { CPU0: cpu@0 { power-domains = <&CPU_PD0>; power-domain-names = "psci"; }; CPU1: cpu@100 { power-domains = <&CPU_PD1>; power-domain-names = "psci"; }; CPU2: cpu@200 { power-domains = <&CPU_PD2>; power-domain-names = "psci"; }; CPU3: cpu@300 { power-domains = <&CPU_PD3>; power-domain-names = "psci"; }; CPU4: cpu@400 { power-domains = <&CPU_PD4>; power-domain-names = "psci"; }; CPU5: cpu@500 { power-domains = <&CPU_PD5>; power-domain-names = "psci"; }; CPU6: cpu@600 { power-domains = <&CPU_PD6>; power-domain-names = "psci"; }; CPU7: cpu@700 { power-domains = <&CPU_PD7>; power-domain-names = "psci"; }; idle-states { entry-method = "psci"; SILVER_CPU_SLEEP_0: cpu-sleep-0-0 { compatible = "arm,idle-state"; idle-state-name = "silver-rail-power-collapse"; arm,psci-suspend-param = <0x40000004>; entry-latency-us = <550>; exit-latency-us = <750>; min-residency-us = <6700>; local-timer-stop; }; GOLD_CPU_SLEEP_0: cpu-sleep-1-0 { compatible = "arm,idle-state"; idle-state-name = "gold-rail-power-collapse"; arm,psci-suspend-param = <0x40000004>; entry-latency-us = <600>; exit-latency-us = <1300>; min-residency-us = <8136>; local-timer-stop; }; GOLD_PLUS_CPU_SLEEP_0: cpu-sleep-2-0 { compatible = "arm,idle-state"; idle-state-name = "gold-plus-rail-power-collapse"; arm,psci-suspend-param = <0x40000004>; entry-latency-us = <500>; exit-latency-us = <1350>; min-residency-us = <7480>; local-timer-stop; }; }; domain-idle-states { CLUSTER_SLEEP_0: cluster-sleep-0 { compatible = "domain-idle-state"; arm,psci-suspend-param = <0x41000044>; entry-latency-us = <750>; exit-latency-us = <2350>; min-residency-us = <9144>; }; CLUSTER_SLEEP_1: cluster-sleep-1 { compatible = "domain-idle-state"; arm,psci-suspend-param = <0x4100c344>; entry-latency-us = <2800>; exit-latency-us = <4400>; min-residency-us = <10150>; }; }; }; psci { compatible = "arm,psci-1.0"; method = "smc"; CPU_PD0: power-domain-cpu0 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&SILVER_CPU_SLEEP_0>; }; CPU_PD1: power-domain-cpu1 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&SILVER_CPU_SLEEP_0>; }; CPU_PD2: power-domain-cpu2 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&SILVER_CPU_SLEEP_0>; }; CPU_PD3: power-domain-cpu3 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&GOLD_CPU_SLEEP_0>; }; CPU_PD4: power-domain-cpu4 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&GOLD_CPU_SLEEP_0>; }; CPU_PD5: power-domain-cpu5 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&GOLD_CPU_SLEEP_0>; }; CPU_PD6: power-domain-cpu6 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&GOLD_CPU_SLEEP_0>; }; CPU_PD7: power-domain-cpu7 { #power-domain-cells = <0>; power-domains = <&CLUSTER_PD>; domain-idle-states = <&GOLD_PLUS_CPU_SLEEP_0>; }; CLUSTER_PD: power-domain-cluster { #power-domain-cells = <0>; domain-idle-states = <&CLUSTER_SLEEP_0>, <&CLUSTER_SLEEP_1>; }; }; sbu-mux { compatible = "gpio-sbu-mux"; enable-gpios = <&tlmm 86 GPIO_ACTIVE_LOW>; select-gpios = <&tlmm 82 GPIO_ACTIVE_HIGH>; mode-switch; orientation-switch; port { sbu_mux_in: endpoint { remote-endpoint = <&tcpm_sbu_out>; }; }; // XXX: needs VREG_L05B_3P1, VREG_BOB2 }; gpio-keys { compatible = "gpio-keys"; pinctrl-0 = <&volume_up_n>, <&select_n>; pinctrl-names = "default"; key-volume-up { label = "Volume Up"; linux,code = ; gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; debounce-interval = <15>; linux,can-disable; //wakeup-source; }; key-select { label = "Select"; linux,code = ; gpios = <&pm8550b_gpios 5 GPIO_ACTIVE_LOW>; debounce-interval = <15>; linux,can-disable; //wakeup-source; }; }; vph_pwr: vph-pwr-regulator { compatible = "regulator-fixed"; regulator-name = "vph_pwr"; regulator-min-microvolt = <3700000>; regulator-max-microvolt = <3700000>; regulator-always-on; regulator-boot-on; }; vreg_6dof_1p8_r: r0-1p8-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p8_r"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l5m_1p8>; enable-active-high; }; vreg_6dof_1p8_ur: r1-1p8-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p8_ur"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&tlmm 12 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l5m_1p8>; enable-active-high; }; vreg_6dof_1p8_l: l0-1p8-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p8_l"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&tlmm 36 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l5n_1p8>; enable-active-high; }; vreg_6dof_1p8_ul: l1-1p8-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p8_ul"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; gpio = <&tlmm 12 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l5n_1p8>; enable-active-high; }; vreg_6dof_1p2_r: r0-1p2-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p2_r"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l2m_1p2>; enable-active-high; }; vreg_6dof_1p2_ur: r1-1p2-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p2_ur"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; gpio = <&tlmm 15 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l2m_1p2>; enable-active-high; }; vreg_6dof_1p2_l: l0-1p2-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p2_l"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; gpio = <&tlmm 37 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l2n_1p2>; enable-active-high; }; vreg_6dof_1p2_ul: l1-1p2-regulator { compatible = "regulator-fixed"; regulator-name = "vreg_6dof_1p2_ul"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; gpio = <&tlmm 15 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l2n_1p2>; enable-active-high; }; // Enable to use DTS ETcam power #if 0 eyetck_dovdd_1v8: eyetck_dovdd_1v8 { compatible = "regulator-fixed"; regulator-name = "eyetck_dovdd_1v8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; enable-active-high; gpio = <&tlmm 74 GPIO_ACTIVE_HIGH>; vin-supply = <&vreg_l5m_1p8>; }; #endif exp_vout_5v: exp_vout_5v { compatible = "regulator-valve_5v_exp"; regulator-name = "exp_vout_5v"; regulator-min-microvolt = <5000000>; regulator-max-microvolt = <5000000>; enable-gpio = <&pm8550vs_g_gpios 6 GPIO_ACTIVE_HIGH>; enable-active-high; vin-supply = <&vph_pwr>; }; rgb_3v0_vout: rgb_3v0_vout { compatible = "regulator-fixed"; regulator-name = "exp_rgb_3v0_vout"; regulator-min-microvolt = <3000000>; regulator-max-microvolt = <3000000>; gpio = <&tlmm 38 GPIO_ACTIVE_HIGH>; detect-gpio = <&pm8550b_gpios 6 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&detect_n>; enable-active-high; vin-supply = <&vph_pwr>; }; dummy_reg: regulator-dummy { compatible = "regulator-fixed"; regulator-name = "dummy-supply"; }; reserved-memory { ranges; framebuffer_mem: memory@af400000 { reg = <0 0xaf400000 0 0x03000000>; no-map; }; }; WCN7850_PMU: wcn7850-pmu { compatible = "qcom,wcn7850-pmu"; pinctrl-names = "default"; pinctrl-0 = <&wlan_en>, <&bt_default>; wlan-enable-gpios = <&tlmm 16 GPIO_ACTIVE_HIGH>; bt-enable-gpios = <&tlmm 17 GPIO_ACTIVE_HIGH>; vdd-supply = <&vreg_s4i_0p85>; vddio-supply = <&vreg_l15b_1p8>; vddio1p2-supply = <&vreg_l3c_1p2>; vddaon-supply = <&vreg_s2c_0p8>; vdddig-supply = <&vreg_s3c_0p9>; vddrfa1p2-supply = <&vreg_s1c_1p2>; vddrfa1p8-supply = <&vreg_s6c_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"; }; }; }; BACKLIGHT_PREBOOST: backlight_preboost { compatible = "ti,tps61377"; en-gpio = <&tlmm 79 GPIO_ACTIVE_HIGH>; pgood-gpio = <&tlmm 69 GPIO_ACTIVE_HIGH>; }; FPGA_clk: FPGA_clk { compatible = "fpga-clock"; #clock-cells = <0>; clock-output-names = "fpga_clk"; status = "okay"; pinctrl-names = "default"; pinctrl-0 = <&FPGA_clk_default>; clocks = <&gcc GCC_GP3_CLK>; clock-frequency = <24000000>; clock-names = "pinclk"; }; fpga: fpga { compatible = "valve,fpga"; clocks = <&FPGA_clk>; clock-names = "fpga_clk"; v1v1-supply = <&vreg_l2g_1p1>; pwren-gpio = <&tlmm 75 GPIO_ACTIVE_HIGH>; }; }; &uart3 { status = "okay"; }; &fpga { // Setup FPGA Userspace Pin States pinctrl-0 = <&fpga_cready>, <&fpga_cs>, <&fpga_crst>, <&fpga_cdone>, <&fpga_rst>; pinctrl-names = "default"; status = "okay"; }; &apps_rsc { regulators-6 { vdd-l6-supply = <&vreg_bob2>; }; regulators-7 { vdd-l6-supply = <&vreg_bob2>; }; }; &pmk8550_vadc { // NOTE TODO REVISIT - There is some chance to lower interrupt usage slightly if these are converted to thermal zones and qcom,adc-tm-type is set appropriately.. // NOTE Setting qcom,adc-tm-type errors out driver and blocks all channels with obscure error. Need Thermal Zone setup to match. pmk8550_xo_therm { reg = ; label = "pmk8550_xo_therm"; qcom,ratiometric; qcom,hw-settle-time = <200>; qcom,pre-scaling = <1 1>; }; /* External PM8550 Thermistors */ // 200 us measured on POC-F Boards as required time to reach stability. pcba_at_fan_exhaust { // Quiet Therm RT0502 reg = ; label = "pcba_at_fan_exhaust"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; pcba_at_40pin_connector { // SDM SKIN Therm RT507 reg = ; label = "pcba_at_40pin_connector"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; pcba_at_wifi { // WLAN Therm RT0503 reg = ; label = "pcba_at_wifi"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; pcba_at_flash { // ADC_1 Therm RT506 reg = ; label = "pcba_at_flash"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; pcba_at_nrf { // ADC_2 Therm RT505 reg = ; label = "pcba_at_nrf"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; /* External PM8550B Thermistors */ pcba_at_heat_sink_fins { reg = ; label = "pcba_at_heat_sink_fins"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; display_right_therm { reg = ; label = "display_right_therm"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; display_left_therm { reg = ; label = "display_left_therm"; qcom,hw-settle-time = <200>; qcom,ratiometric; }; }; &apps_rsc { regulators-0 { compatible = "qcom,pm8550-rpmh-regulators"; vdd-bob1-supply = <&vph_pwr>; vdd-bob2-supply = <&vph_pwr>; vdd-l1-l4-l10-supply = <&vreg_s6c_1p8>; vdd-l2-l13-l14-supply = <&vreg_bob1>; vdd-l3-supply = <&vreg_s1c_1p2>; vdd-l5-l16-supply = <&vreg_bob1>; vdd-l8-l9-supply = <&vreg_bob1>; vdd-l12-supply = <&vreg_s6c_1p8>; vdd-l15-supply = <&vreg_s6c_1p8>; vdd-l17-supply = <&vreg_bob2>; qcom,pmic-id = "b"; vreg_bob1: bob1 { regulator-name = "vreg_bob1"; regulator-min-microvolt = <3296000>; // note: min is 3008000, init is 3296000 regulator-max-microvolt = <3960000>; regulator-initial-mode = ; }; vreg_bob2: bob2 { regulator-name = "vreg_bob2"; regulator-min-microvolt = <2720000>; // note: min is 2704000, init is 2720000 regulator-max-microvolt = <3008000>; regulator-initial-mode = ; regulator-always-on; // XXX USB HS, SBU MUX }; vreg_l1b_1p8: ldo1 { regulator-name = "vreg_l1b_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; regulator-always-on; // XXX sensors }; vreg_l2b_3p0: ldo2 { regulator-name = "vreg_l2b_3p0"; regulator-min-microvolt = <3008000>; regulator-max-microvolt = <3008000>; regulator-initial-mode = ; regulator-always-on; // XXX sensors }; vreg_l5b_3p1: ldo5 { regulator-name = "vreg_l5b_3p1"; regulator-min-microvolt = <3104000>; regulator-max-microvolt = <3104000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; regulator-always-on; // XXX SBU MUX }; vreg_l8b_1p8: ldo8 { regulator-name = "vreg_l8b_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l9b_2p9: ldo9 { regulator-name = "vreg_l9b_2p9"; regulator-min-microvolt = <2960000>; regulator-max-microvolt = <2960000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l10b_1p8: ldo10 { regulator-name = "vreg_l10b_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; }; vreg_l12b_1p8: ldo12 { regulator-name = "vreg_l12b_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l15b_1p8: ldo15 { regulator-name = "vreg_l15b_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; regulator-always-on; // XXX: 1.8V pull ups }; vreg_l17b_2p5: ldo17 { regulator-name = "vreg_l17b_2p5"; regulator-min-microvolt = <2504000>; regulator-max-microvolt = <2504000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; }; regulators-1 { compatible = "qcom,pm8550vs-rpmh-regulators"; vdd-l1-supply = <&vreg_s1c_1p2>; vdd-l3-supply = <&vreg_s1c_1p2>; vdd-s1-supply = <&vph_pwr>; vdd-s2-supply = <&vph_pwr>; vdd-s3-supply = <&vph_pwr>; vdd-s4-supply = <&vph_pwr>; vdd-s5-supply = <&vph_pwr>; vdd-s6-supply = <&vph_pwr>; qcom,pmic-id = "c"; vreg_s1c_1p2: smps1 { regulator-name = "vreg_s1c_1p2"; regulator-min-microvolt = <1224000>; regulator-max-microvolt = <1348000>; // init 1256000 regulator-initial-mode = ; regulator-always-on; // USB, UFS? }; vreg_s2c_0p8: smps2 { regulator-name = "vreg_s2c_0p8"; regulator-min-microvolt = <500000>; regulator-max-microvolt = <1036000>; // init 852000 regulator-initial-mode = ; }; vreg_s3c_0p9: smps3 { regulator-name = "vreg_s3c_0p9"; regulator-min-microvolt = <904000>; regulator-max-microvolt = <1064000>; // init 976000 regulator-initial-mode = ; }; vreg_s4c_1p2: smps4 { regulator-name = "vreg_s4c_1p2"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1280000>; // init 1224000 regulator-initial-mode = ; }; vreg_s5c_0p7: smps5 { regulator-name = "vreg_s5c_0p7"; regulator-min-microvolt = <300000>; regulator-max-microvolt = <900000>; // init 752000 regulator-initial-mode = ; }; vreg_s6c_1p8: smps6 { regulator-name = "vreg_s6c_1p8"; regulator-min-microvolt = <1856000>; regulator-max-microvolt = <2000000>; // init 1856000 regulator-initial-mode = ; }; vreg_l1c_1p2: ldo1 { regulator-name = "vreg_l1c_1p2"; regulator-min-microvolt = <1200000>; // note: min 1100000 regulator-max-microvolt = <1200000>; regulator-initial-mode = ; }; vreg_l3c_1p2: ldo3 { regulator-name = "vreg_l3c_1p2"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; regulator-always-on; // XXX: 1.2V pull ups }; }; regulators-2 { compatible = "qcom,pm8550vs-rpmh-regulators"; qcom,pmic-id = "d"; vdd-l1-supply = <&vreg_s3c_0p9>; vreg_l1d_0p9: ldo1 { regulator-name = "vreg_l1d_0p9"; regulator-min-microvolt = <912000>; // note: min 880000 regulator-max-microvolt = <920000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; }; regulators-3 { compatible = "qcom,pm8550vs-rpmh-regulators"; vdd-l3-supply = <&vreg_s3c_0p9>; qcom,pmic-id = "e"; vreg_l3e_0p9: ldo3 { regulator-name = "vreg_l3e_0p9"; regulator-min-microvolt = <880000>; regulator-max-microvolt = <920000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; }; regulators-4 { compatible = "qcom,pm8550vs-rpmh-regulators"; vdd-l1-supply = <&vreg_s3c_0p9>; vdd-l2-supply = <&vreg_s1c_1p2>; vdd-l3-supply = <&vreg_s3c_0p9>; qcom,pmic-id = "g"; vreg_l1g_0p9: ldo1 { regulator-name = "vreg_l1g_0p9"; regulator-min-microvolt = <912000>; regulator-max-microvolt = <920000>; regulator-initial-mode = ; // QLINK ? }; vreg_l2g_1p1: ldo2 { regulator-name = "vreg_l2g_1p1"; regulator-min-microvolt = <1104000>; regulator-max-microvolt = <1104000>; regulator-initial-mode = ; }; vreg_l3g_0p91: ldo3 { regulator-name = "vreg_l3g_0p91"; regulator-min-microvolt = <880000>; regulator-max-microvolt = <912000>; regulator-initial-mode = ; }; }; regulators-5 { compatible = "qcom,pm8550ve-rpmh-regulators"; vdd-l1-supply = <&vreg_s3c_0p9>; vdd-l2-supply = <&vreg_s3c_0p9>; vdd-l3-supply = <&vreg_s1c_1p2>; vdd-s4-supply = <&vph_pwr>; qcom,pmic-id = "i"; vreg_s4i_0p85: smps4 { regulator-name = "vreg_s4i_0p85"; regulator-min-microvolt = <852000>; regulator-max-microvolt = <1004000>; // init 852000 regulator-initial-mode = ; }; vreg_l1i_0p88: ldo1 { regulator-name = "vreg_l1i_0p88"; regulator-min-microvolt = <880000>; regulator-max-microvolt = <912000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l2i_0p88: ldo2 { regulator-name = "vreg_l2i_0p88"; regulator-min-microvolt = <880000>; regulator-max-microvolt = <912000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; //regulator-always-on; // CSI PHY }; vreg_l3i_1p2: ldo3 { regulator-name = "vreg_l3i_1p2"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; //regulator-always-on; // CSI PHY }; }; regulators-6 { compatible = "qcom,pm8010-rpmh-regulators"; qcom,pmic-id = "m"; vdd-l1-l2-supply = <&vreg_s1c_1p2>; vdd-l3-l4-supply = <&vreg_bob2>; vdd-l5-supply = <&vreg_s6c_1p8>; vdd-l6-supply = <&vreg_bob1>; vdd-l7-supply = <&vreg_bob1>; vreg_l1m_1p1: ldo1 { regulator-name = "vreg_l1m_1p1"; regulator-min-microvolt = <1104000>; regulator-max-microvolt = <1104000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l2m_1p2: ldo2 { regulator-name = "vreg_l2m_1p2"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l3m_2p8: ldo3 { regulator-name = "vreg_l3m_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-initial-mode = ; }; vreg_l4m_2p8: ldo4 { regulator-name = "vreg_l4m_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-initial-mode = ; }; vreg_l5m_1p8: ldo5 { regulator-name = "vreg_l5m_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; }; vreg_l6m_2p8: ldo6 { regulator-name = "vreg_l6m_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-initial-mode = ; }; vreg_l7m_3p3: ldo7 { regulator-name = "vreg_l7m_3p3"; regulator-min-microvolt = <3304000>; regulator-max-microvolt = <3304000>; regulator-initial-mode = ; regulator-always-on; }; }; regulators-7 { compatible = "qcom,pm8010-rpmh-regulators"; qcom,pmic-id = "n"; vdd-l1-l2-supply = <&vreg_s1c_1p2>; vdd-l3-l4-supply = <&vreg_bob2>; vdd-l5-supply = <&vreg_s6c_1p8>; vdd-l6-supply = <&vreg_bob1>; vreg_l1n_1p1: ldo1 { regulator-name = "vreg_l1n_1p1"; regulator-min-microvolt = <1104000>; regulator-max-microvolt = <1104000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l2n_1p2: ldo2 { regulator-name = "vreg_l2n_1p2"; regulator-min-microvolt = <1200000>; regulator-max-microvolt = <1200000>; regulator-initial-mode = ; regulator-allow-set-load; regulator-allowed-modes = ; }; vreg_l3n_2p8: ldo3 { regulator-name = "vreg_l3n_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-initial-mode = ; }; vreg_l4n_2p8: ldo4 { regulator-name = "vreg_l4n_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-initial-mode = ; }; vreg_l5n_1p8: ldo5 { regulator-name = "vreg_l5n_1p8"; regulator-min-microvolt = <1800000>; regulator-max-microvolt = <1800000>; regulator-initial-mode = ; }; vreg_l6n_2p8: ldo6 { regulator-name = "vreg_l6n_2p8"; regulator-min-microvolt = <2800000>; regulator-max-microvolt = <2800000>; regulator-initial-mode = ; }; }; }; &dispcc { status = "okay"; }; &gpi_dma1 { status = "okay"; }; &gpi_dma2 { status = "okay"; }; &camss { status = "okay"; vdda-csi01-0p9-supply = <&vreg_l2i_0p88>; vdda-csi24-0p9-supply = <&vreg_l2i_0p88>; vdda-csi35-0p9-supply = <&vreg_l2i_0p88>; vdda-csi01-1p2-supply = <&vreg_l3i_1p2>; vdda-csi24-1p2-supply = <&vreg_l3i_1p2>; vdda-csi35-1p2-supply = <&vreg_l3i_1p2>; ports { port@0 { #address-cells = <1>; #size-cells = <0>; csiphy0_ep: endpoint@0 { reg = <0>; clock-lanes = <4>; data-lanes = <0 1>; remote-endpoint = <&cam_6dof_l>; }; csiphy0_combo_ep: endpoint@1 { reg = <1>; clock-lanes = <3>; data-lanes = <2>; remote-endpoint = <&cam_6dof_ul>; }; }; port@1 { #address-cells = <1>; #size-cells = <0>; csiphy1_ep: endpoint@0 { reg = <0>; clock-lanes = <4>; data-lanes = <0 1>; remote-endpoint = <&cam_6dof_r>; }; csiphy1_combo_ep: endpoint@1 { reg = <1>; clock-lanes = <3>; data-lanes = <2>; remote-endpoint = <&cam_6dof_ur>; }; }; #if 0 port@2 { csiphy2_ep: endpoint { clock-lanes = <4>; data-lanes = <0>; remote-endpoint = <&cam_et_l>; }; }; port@4 { csiphy4_ep: endpoint { clock-lanes = <4>; data-lanes = <0>; remote-endpoint = <&cam_et_r>; }; }; #endif port@3 { reg = <3>; csiphy3_ep: endpoint { clock-lanes = <2>; data-lanes = <0 1 2 3>; remote-endpoint = <&cam_pt_left>; }; }; port@5 { reg = <5>; csiphy5_ep: endpoint { clock-lanes = <2>; data-lanes = <0 1 2 3>; remote-endpoint = <&cam_pt_right>; }; }; }; }; &cci0 { status = "okay"; }; // ADSP controls eye tracking cameras &adsp { // AON CAM ADSP TEST: gpio102/104 to mclk function pinctrl-names = "default"; pinctrl-0 = <&cam2_default &cam4_default>; }; &cci0_i2c1 { #if 0 sensor@60 { compatible = "ovti,ov6211"; reg = <0x60>; clocks = <&camcc CAM_CC_MCLK4_CLK>; reset-gpios = <&tlmm 7 GPIO_ACTIVE_LOW>; pinctrl-0 = <&cam4_default>; pinctrl-names = "default"; AVDD-supply = <&vreg_l6n_2p8>; DOVDD-supply = <&eyetck_dovdd_1v8>; DVDD-supply = <&vreg_l1n_1p1>; port { cam_et_l: endpoint { clock-lanes = <4>; data-lanes = <0>; remote-endpoint = <&csiphy2_ep>; }; }; }; #endif }; &cci1 { pinctrl-0 = <&cci1_0_default>; pinctrl-1 = <&cci1_0_sleep>; status = "okay"; }; &cci1_i2c0 { #if 0 sensor@60 { compatible = "ovti,ov6211"; reg = <0x60>; clocks = <&camcc CAM_CC_MCLK2_CLK>; reset-gpios = <&tlmm 3 GPIO_ACTIVE_LOW>; pinctrl-0 = <&cam2_default>; pinctrl-names = "default"; AVDD-supply = <&vreg_l6m_2p8>; DOVDD-supply = <&eyetck_dovdd_1v8>; DVDD-supply = <&vreg_l1m_1p1>; port { cam_et_r: endpoint { clock-lanes = <4>; data-lanes = <0>; remote-endpoint = <&csiphy4_ep>; }; }; }; #endif }; &cci2 { status = "okay"; }; &cci2_i2c0 { sensor@60 { compatible = "ovti,og01a1bx"; reg = <0x60>; clocks = <&camcc CAM_CC_MCLK1_CLK>; clock-names = "xclk"; reset-gpios = <&pm8550vs_e_gpios 6 GPIO_ACTIVE_LOW>; strobe-gpios = <&tlmm 123 GPIO_ACTIVE_HIGH>; sensor-queue-index = <0>; ircontrol-gpios = <&tlmm 200 GPIO_ACTIVE_HIGH>; pinctrl-0 = <&cam1_default>; pinctrl-names = "default"; AVDD-supply = <&vreg_l3n_2p8>; DOVDD-supply = <&vreg_6dof_1p8_l>; DVDD-supply = <&vreg_6dof_1p2_l>; id = "slam_left"; dual-i2c-available = <1>; dual-i2c-main = <1>; port { cam_6dof_l: endpoint { clock-lanes = <4>; data-lanes = <0 1>; link-frequencies = /bits/ 64 <500000000>; remote-endpoint = <&csiphy0_ep>; }; }; }; sensor@36 { compatible = "ovti,og01a1bx"; reg = <0x36>; clocks = <&camcc CAM_CC_MCLK0_CLK>; clock-names = "xclk"; reset-gpios = <&pm8550vs_e_gpios 4 GPIO_ACTIVE_LOW>; strobe-gpios = <&tlmm 121 GPIO_ACTIVE_HIGH>; pinctrl-0 = <&cam0_default>; pinctrl-names = "default"; AVDD-supply = <&vreg_l3m_2p8>; DOVDD-supply = <&vreg_6dof_1p8_r>; DVDD-supply = <&vreg_6dof_1p2_r>; id = "slam_right"; sensor-queue-index = <0>; dual-i2c-available = <1>; dual-i2c-main = <0>; port { cam_6dof_r: endpoint { data-lanes = <0 1>; clock-lanes = <4>; link-frequencies = /bits/ 64 <500000000>; remote-endpoint = <&csiphy1_ep>; }; }; }; }; &cci2_i2c1 { clock-frequency = <400000>; sensor@60 { compatible = "ovti,og0ve10x"; reg = <0x60>; clocks = <&camcc CAM_CC_MCLK3_CLK>; clock-names = "xclk"; reset-gpios = <&pm8550vs_c_gpios 5 GPIO_ACTIVE_LOW>; strobe-gpios = <&tlmm 28 GPIO_ACTIVE_HIGH>; pinctrl-0 = <&cam3_default>; pinctrl-names = "default"; AVDD-supply = <&vreg_l4n_2p8>; DOVDD-supply = <&vreg_6dof_1p8_ul>; DVDD-supply = <&vreg_6dof_1p2_ul>; sensor-queue-index = <1>; id = "upper_left"; dual-i2c-available = <1>; dual-i2c-main = <1>; port { cam_6dof_ul: endpoint { clock-lanes = <3>; data-lanes = <2>; link-frequencies = /bits/ 64 <500000000>; remote-endpoint = <&csiphy0_combo_ep>; }; }; }; sensor@3e { compatible = "ovti,og0ve10x"; reg = <0x3E>; clocks = <&camcc CAM_CC_MCLK5_CLK>; clock-names = "xclk"; reset-gpios = <&pm8550vs_c_gpios 6 GPIO_ACTIVE_LOW>; strobe-gpios = <&tlmm 68 GPIO_ACTIVE_HIGH>; pinctrl-0 = <&cam5_default>; pinctrl-names = "default"; AVDD-supply = <&vreg_l4m_2p8>; DOVDD-supply = <&vreg_6dof_1p8_ur>; DVDD-supply = <&vreg_6dof_1p2_ur>; sensor-queue-index = <1>; id = "upper_right"; dual-i2c-available = <1>; dual-i2c-main = <0>; port { cam_6dof_ur: endpoint { clock-lanes = <3>; data-lanes = <2>; link-frequencies = /bits/ 64 <500000000>; remote-endpoint = <&csiphy1_combo_ep>; }; }; }; }; &gpu { status = "okay"; }; // Master Hub required for Hub 7 and 8 &i2c_master_hub_0 { status = "okay"; }; &mdss { iommu-defer-attach; status = "okay"; }; &mdss_mdp { status = "okay"; }; &mdss_dsi0 { vdda-supply = <&vreg_l3i_1p2>; status = "okay"; qcom,dual-dsi-mode; qcom,master-dsi; panel: panel@0 { reg = <0>; compatible = "deckard-panel"; dual-panel; low-fps-support; pinctrl-0 = <&display_resx1>, <&display_resx2>; pinctrl-names = "default"; reset-gpios = <&pm8550_gpios 3 GPIO_ACTIVE_HIGH>, <&pm8550_gpios 11 GPIO_ACTIVE_HIGH>; //Bias supplies enabled via GPIO left-pos-supply = <&vpos_left>; left-neg-supply = <&vneg_left>; right-pos-supply = <&vpos_right>; right-neg-supply = <&vneg_right>; preboost-supply = <&BACKLIGHT_PREBOOST>; backlight-left-supply = <&backlight_left>; backlight-right-supply = <&backlight_right>; vdda-supply = <&vreg_l12b_1p8>; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; panel0_in: endpoint { remote-endpoint = <&mdss_dsi0_out>; }; }; port@1 { reg = <1>; panel1_in: endpoint { remote-endpoint = <&mdss_dsi1_out>; }; }; }; }; }; &mdss_dsi0_out { remote-endpoint = <&panel0_in>; data-lanes = <0 1 2>; }; &mdss_dsi0_phy { vdds-supply = <&vreg_l1i_0p88>; phy-type = ; status = "okay"; }; &mdss_dsi1 { vdda-supply = <&vreg_l3i_1p2>; status = "okay"; qcom,dual-dsi-mode; assigned-clocks = <&dispcc DISP_CC_MDSS_BYTE1_CLK_SRC>, <&dispcc DISP_CC_MDSS_PCLK1_CLK_SRC>; assigned-clock-parents = <&mdss_dsi0_phy 0>, <&mdss_dsi0_phy 1>; }; &mdss_dsi1_out { remote-endpoint = <&panel1_in>; data-lanes = <0 1 2>; }; &mdss_dsi1_phy { vdds-supply = <&vreg_l1i_0p88>; status = "okay"; phy-type = ; }; &pcie0 { wake-gpios = <&tlmm 96 GPIO_ACTIVE_HIGH>; perst-gpios = <&tlmm 94 GPIO_ACTIVE_LOW>; pinctrl-0 = <&pcie0_default_state>; pinctrl-names = "default"; status = "okay"; }; &pcieport0 { wifi@0 { compatible = "pci17cb,1107"; reg = <0x10000 0x0 0x0 0x0 0x0>; vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; vddaon-supply = <&vreg_pmu_aon_0p59>; vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>; vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>; qcom,default-bdf = "board_77.bin"; ieee80211-freq-limit = <2400000 2500000>, <5170000 5815000>, <5945000 7125000>; }; }; &pcie0_phy { vdda-phy-supply = <&vreg_l1i_0p88>; vdda-pll-supply = <&vreg_l3i_1p2>; status = "okay"; }; // For 1.8V operation on PM8550 // VIN0 ( 0 ) for GPIO_01 to GPIO_04 // VIN1 ( 1 ) for GPIO_05 to GPIO_12 ( except 7 ) &pm8550_gpios { sdc2_card_det_n: sdc2-card-det-state { pins = "gpio12"; function = "normal"; bias-pull-up; input-enable; output-disable; power-source = <1>; /* 1.8 V */ }; volume_up_n: volume-up-n-state { pins = "gpio6"; function = "normal"; bias-pull-up; input-enable; power-source = <1>; }; display_resx1: display_resx1-state { pins = "gpio3"; function = "normal"; power-source = <0>; /* 1.8 V */ }; display_resx2: display_resx2-state { pins = "gpio11"; function = "normal"; power-source = <1>; /* 1.8 V */ }; display_avdd_en_l: display_avdd_en_l-state { pins = "gpio4"; function = "normal"; power-source = <0>; /* 1.8 V */ }; display_avdd_en_r: display_avdd_en_r-state { pins = "gpio8"; function = "normal"; power-source = <1>; /* 1.8 V */ }; display_avee_en_l: display_avee_en_l-state { pins = "gpio9"; function = "normal"; power-source = <1>; /* 1.8 V */ }; display_avee_en_r: display_avee_en_r-state { pins = "gpio10"; function = "normal"; power-source = <1>; /* 1.8 V */ }; }; &pm8550_pwm { nvmem = <&pmk8550_sdam_21>, <&pmk8550_sdam_22>; nvmem-names = "lpg_chan_sdam", "lut_sdam"; status = "okay"; multi-led { //device will show up named "rgb:status" in sysfs due to these settings here color = ; function = LED_FUNCTION_STATUS; #address-cells = <1>; #size-cells = <0>; default-state = "keep"; led@1 { reg = <1>; color = ; }; led@2 { reg = <2>; color = ; }; led@3 { reg = <3>; color = ; }; }; }; &pm8550b_gpios { select_n: select-n-state { pins = "gpio5"; function = "normal"; power-source = <1>; bias-pull-up; input-enable; }; detect_n: detect-n-state { pins = "gpio6"; function = "normal"; power-source = <1>; bias-pull-up; input-enable; }; uart_detect: uart_detect-state { pins = "gpio7"; function = "normal"; power-source = <1>; }; strap_irq: paddle-id-state { pins = "gpio10"; function = "normal"; bias-pull-up; input-enable; }; }; &pm8550vs_c { status = "okay"; }; &pm8550vs_d { status = "okay"; }; &pm8550vs_e { status = "okay"; }; &pm8550vs_g { status = "okay"; }; &pm8550b_eusb2_repeater { vdd18-supply = <&vreg_l15b_1p8>; vdd3-supply = <&vreg_l5b_3p1>; }; &pm8550b_vbus { status = "okay"; }; &pm8550b_typec { status = "okay"; vdd-pdphy-supply = <&vreg_l5b_3p1>; connector { power-role = "dual"; data-role = "dual"; try-power-role = "sink"; source-pdos = ; //sink-pdos needs to have 5000mV entry first otherwise will not probe sink-pdos = , , , ; op-sink-microwatt = <15000000>; self-powered; ports { #address-cells = <1>; #size-cells = <0>; port@0 { reg = <0>; pm8550b_role_switch_out: endpoint { remote-endpoint = <&usb_1_dwc3_hs>; }; }; port@1 { reg = <1>; tcpm_sbu_out: endpoint { remote-endpoint = <&sbu_mux_in>; }; }; #if 0 port@2 { reg = <2>; dp_mode_out: endpoint { remote-endpoint = <&dp_mode>; }; }; port@1 { reg = <1>; pm8550b_typec_mux_out: endpoint { remote-endpoint = <&usb_1_qmpphy_typec_mux_in>; }; }; #endif }; }; }; &pm8550b_charger { status = "okay"; qph1-charge-current-max = <1200000>; qph2-charge-current-max = <2700000>; }; &pmk8550_rtc { status = "okay"; allow-set-time; }; &pon_pwrkey { status = "okay"; }; &pon_resin { linux,code = ; disable-wake-source; status = "okay"; }; &qup_spi10_cs { pins = "gpio13"; }; &qupv3_id_0 { status = "okay"; }; &qupv3_id_1 { status = "okay"; }; &sdhc_2 { cd-gpios = <&pm8550_gpios 12 GPIO_ACTIVE_LOW>; vmmc-supply = <&vreg_l9b_2p9>; vqmmc-supply = <&vreg_l8b_1p8>; // actually level shifter bus-width = <4>; no-sdio; no-mmc; pinctrl-0 = <&sdc2_default>, <&sdc2_card_det_n>; pinctrl-1 = <&sdc2_sleep>, <&sdc2_card_det_n>; pinctrl-names = "default", "sleep"; status = "okay"; }; &sleep_clk { clock-frequency = <32764>; }; #ifndef NRF_UART // nRF SPI HID &spi10 { status = "okay"; // L, on QUP2 SE2 L3 CS // expansion, CS_2=gpio_15 hid@2 { compatible = "hid-over-spi"; reg = <2>; interrupts-extended = <&tlmm 69 IRQ_TYPE_EDGE_FALLING>; reset-gpios = <&tlmm 70 GPIO_ACTIVE_LOW>; input-report-header-address = <0x1000>; input-report-body-address = <0x1004>; output-report-address = <0x2000>; read-opcode = <0x0b>; write-opcode = <0x02>; hid-over-spi-flags = <0x00>; post-power-on-delay-ms = <1>; minimal-reset-delay-ms = <100>; pinctrl-names = "default"; pinctrl-0 = <&l_spihid_default_state>; }; // R, on QUP2 SE2 L6 CS // mainboard, CS_1=gpio_13 hid@1 { compatible = "hid-over-spi"; reg = <1>; interrupts-extended = <&tlmm 66 IRQ_TYPE_EDGE_FALLING>; reset-gpios = <&tlmm 137 GPIO_ACTIVE_LOW>; input-report-header-address = <0x1000>; input-report-body-address = <0x1004>; output-report-address = <0x2000>; read-opcode = <0x0b>; write-opcode = <0x02>; hid-over-spi-flags = <0x00>; post-power-on-delay-ms = <1>; minimal-reset-delay-ms = <100>; pinctrl-names = "default"; pinctrl-0 = <&r_spihid_default_state>; }; }; #endif &uart14 { status = "okay"; bluetooth { compatible = "qcom,wcn7850-bt"; vddrfacmn-supply = <&vreg_pmu_rfa_cmn>; vddaon-supply = <&vreg_pmu_aon_0p59>; vddwlcx-supply = <&vreg_pmu_wlcx_0p8>; vddwlmx-supply = <&vreg_pmu_wlmx_0p85>; vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>; vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>; vddrfa1p8-supply = <&vreg_pmu_rfa_1p8>; max-speed = <3200000>; }; }; &i2c4 { status = "okay"; /* FAN_I2C */ slg4ax46073v@8 { compatible = "silego,slg4ax46073v"; reg = <0x08>; #address-cells = <1>; #size-cells = <0>; //vdd-fan-1-supply = <&VBATT_2S>; not modeled in dts fan-alert-gpios = <&tlmm 174 GPIO_ACTIVE_HIGH>; en-gpio = <&tlmm 138 GPIO_ACTIVE_HIGH>; // bp pin removed in ev1 status = "okay"; }; /* 3D Hall Sensor I2C */ als31300@6c { compatible = "allegro,als31300"; reg = <0x6c>; #address-cells = <1>; #size-cells = <0>; vdd-hall-supply = <&vreg_l2b_3p0>; //hall-alert-gpios = <&tlmm 65 GPIO_ACTIVE_LOW>; // Not Used status = "okay"; }; // right backlight mp3317_right@29{ status = "okay"; #address-cells = <1>; #size-cells = <0>; compatible = "mps,mp3317"; reg = <0x29>; en-gpios = <&pm8550_gpios 1 GPIO_ACTIVE_HIGH>; mp3317,vout = <18000>; // 18V mp3317,ovp-max = <0x9f>; mp3317,tpwm = <0x00>; // direct pwm mp3317,iledl = <0x9ff>; // 100 mA mp3317,iledr = <0x9ff>; // 100 mA mp3317,hr = <0xf6>; mp3317,step-hr = <0x41>; mp3317,mode-ctl = <0xF7>; mp3317,en-ctl = <0xBF>; mp3317,label = "mp3317-backlight-right"; mp3317,use-pm-ops = <0>; // disable pm ops, handled by display driver regulator { backlight_right: backlight{ regulator-name = "backlight_right"; }; }; }; mp3317@28{ #address-cells = <1>; #size-cells = <0>; compatible = "mps,mp3317"; reg = <0x28>; en-gpios = <&tlmm 58 GPIO_ACTIVE_HIGH>; mp3317,vout = <9500>; // 9.5V mp3317,ovp-max = <0x0f>; mp3317,tpwm = <0x0A>; // 5 msec mp3317,iledl = <0x4ff>; mp3317,iledr = <0x4ff>; mp3317,hr = <0x4b>; mp3317,step-hr = <0x41>; mp3317,mode-ctl = <0x9E>; mp3317,en-ctl = <0x9B>; mp3317,label = "mp3317-scene-illum-ir"; status = "okay"; }; nex10000ub@3e{ #address-cells = <1>; #size-cells = <0>; compatible = "nexperia,nex10000ub"; reg = <0x3e>; pinctrl-0 = <&display_avdd_en_r>, <&display_avee_en_r>; pinctrl-names = "default"; enp-gpios = <&pm8550_gpios 8 GPIO_ACTIVE_HIGH>; enn-gpios = <&pm8550_gpios 10 GPIO_ACTIVE_HIGH>; status = "okay"; regulators { vpos_right: vpos{ regulator-name = "lcd_right_vpos"; regulator-min-microvolt = <5700000>; regulator-max-microvolt = <5700000>; }; vneg_right: vneg{ regulator-name = "lcd_right_vneg"; regulator-min-microvolt = <5700000>; regulator-max-microvolt = <5700000>; }; }; }; }; &i2c5 { status = "okay"; // left backlight mp3317_left@29{ status = "okay"; #address-cells = <1>; #size-cells = <0>; compatible = "mps,mp3317"; reg = <0x29>; en-gpios = <&pm8550_gpios 2 GPIO_ACTIVE_HIGH>; mp3317,vout = <18000>; // 18V mp3317,ovp-max = <0x9f>; mp3317,tpwm = <0x00>; // direct pwm mp3317,iledl = <0x9ff>; // 100 mA mp3317,iledr = <0x9ff>; // 100 mA mp3317,hr = <0xf6>; mp3317,step-hr = <0x41>; mp3317,mode-ctl = <0xF7>; mp3317,en-ctl = <0xBF>; mp3317,label = "mp3317-backlight-left"; mp3317,use-pm-ops = <0>; // disable pm ops, handled by display driver regulator { backlight_left: backlight{ regulator-name = "backlight_left"; }; }; }; nex10000ub@3e{ #address-cells = <1>; #size-cells = <0>; compatible = "nexperia,nex10000ub"; reg = <0x3e>; pinctrl-0 = <&display_avdd_en_l>, <&display_avee_en_l>; pinctrl-names = "default"; enp-gpios = <&pm8550_gpios 4 GPIO_ACTIVE_HIGH>; enn-gpios = <&pm8550_gpios 9 GPIO_ACTIVE_HIGH>; status = "okay"; regulators { vpos_left: vpos{ regulator-name = "lcd_left_vpos"; regulator-min-microvolt = <5700000>; regulator-max-microvolt = <5700000>; }; vneg_left: vneg{ regulator-name = "lcd_left_vneg"; regulator-min-microvolt = <5700000>; regulator-max-microvolt = <5700000>; }; }; }; }; &uart15 { status = "okay"; }; // Prox Sensor I2C &i2c_hub_8 { status = "okay"; light-sensor@60 { compatible = "vishay,vcnl4040"; reg = <0x60>; proximity-near-level = <220>; // interrupts-extended = <&tlmm 31 IRQ_TYPE_EDGE_FALLING>; // driver lacks support for regulators, l8c and l11c set to always on vin0-supply = <&vreg_l2b_3p0>; vin1-supply = <&vreg_l15b_1p8>; proximity-integration-time = <800>; // microseconds proximity-multi-pulse = <1>; status = "okay"; }; }; &lpass_tlmm { status = "okay"; }; &lpass_vamacro { pinctrl-0 = <&dmic01_default>; pinctrl-names = "default"; vdd-micb-supply = <&vreg_l10b_1p8>; qcom,dmic-sample-rate = <2400000>; /* or 3200000 */ }; #include "sm8650-deckard-sndcard.dtsi" &i2c_hub_8 { /* MAX98390 */ right_spkr_i2s: speaker@38 { compatible = "maxim,max98390"; reg = <0x38>; maxim,temperature_calib = <1024>; // TODO maxim,r0_calib = <100232>; // TODO reset-gpios = <&tlmm 73 GPIO_ACTIVE_LOW>; interrupts-extended = <&tlmm 186 IRQ_TYPE_LEVEL_LOW>; pinctrl-0 = <&r_spkr_irq_default_state>; pinctrl-names = "default"; #sound-dai-cells = <0>; sound-name-prefix = "Speaker Right"; }; /* MAX98390 */ left_spkr_i2s: speaker@3d { compatible = "maxim,max98390"; reg = <0x3d>; maxim,temperature_calib = <1024>; // TODO maxim,r0_calib = <100232>; // TODO reset-gpios = <&tlmm 161 GPIO_ACTIVE_LOW>; interrupts-extended = <&tlmm 77 IRQ_TYPE_LEVEL_LOW>; pinctrl-0 = <&l_spkr_irq_default_state>; pinctrl-names = "default"; #sound-dai-cells = <0>; sound-name-prefix = "Speaker Left"; }; }; &tlmm { // MAX98390 interrupt lines. The amplifier drives IRQ open drain, so the // high level comes from these pull-ups. l_spkr_irq_default_state: l-spkr-irq-default { pins = "gpio77"; function = "gpio"; bias-pull-up; }; r_spkr_irq_default_state: r-spkr-irq-default { pins = "gpio186"; function = "gpio"; bias-pull-up; }; }; // Disable Soundwire &wsa_swr_active { status = "disabled"; }; &tlmm { // TODO verify reserved pins for 8650 // qcom,gpios-reserved = <36 37 38 39>; gpio-line-names = // GPIO000 - GPIO015 "", "", "", "", "", "", "", "fpga_rst", "", "", "", "nrf_time_sync", "", "", "", "", // GPIO016 - GPIO031 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", // GPIO032 - GPIO047 "", "", "", "fpga_spi_cs", "", "", "", "fpga_crst", "", "", "", "", "", "", "", "", // GPIO048 - GPIO063 "", "", "nrf_swdio", "nrf_swclk", "", "", "", "", "fpga_cam0_strobe", "fpga_cam1_strobe", "", "", "", "", "", "", // GPIO064 - GPIO079 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", // GPIO080 - GPIO095 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", // GPIO096 - GPIO111 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "fpga_cam1_frame_sync", "", // GPIO112 - GPIO127 "", "", "", "", "", "", "", "", "", "", "", "", "fpga_cam0_frame_sync", "", "", "", // GPIO128 - GPIO143 "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", // GPIO144 - GPIO159 "", "", "", "", "", "", "", "", "", "", "", "fpga_cdone", "", "", "fpga_cready", "", // GPIO160 - GPIO175 "", "", "te2_left", "", "nrf_reset", "", "", "", "", "", "", "", "", "", "", "", // GPIO176 - GPIO189 "", "", "te2_right", "", "", "", "", "", "", "", "", "", "", ""; }; &tlmm { FPGA_clk_pins { FPGA_clk_default: fpga_clk_default { mux { pins = "gpio88"; function = "gcc_gp3"; }; config { pins = "gpio88"; drive-strength = <6>; bias-pull-none; /* pull none */ }; }; FPGA_clk_active: fpga_clk_active { mux { pins = "gpio88"; function = "gcc_gp3"; }; config { pins = "gpio88"; drive-strength = <2>; /* 2 mA */ bias-pull-none; /* pull none */ }; }; FPGA_clk_sleep: fpga_clk_sleep { mux { pins = "gpio88"; function = "gpio"; }; config { pins = "gpio88"; drive-strength = <2>; /* 2 mA */ bias-pull-down; /* pull down */ }; }; }; // Unused FGPA Sync pins that need to be driven low fpga_cam0_frame_sync { gpio-hog; gpios = <124 GPIO_ACTIVE_HIGH>; output-low; line-name = "fpga_cam0_frame_sync"; }; // Unused FGPA Sync pins that need to be driven low fpga_cam1_frame_sync { gpio-hog; gpios = <110 GPIO_ACTIVE_HIGH>; output-low; line-name = "fpga_cam1_frame_sync"; }; }; &pcie1 { vdda-supply = <&vph_pwr>; vddpe-3v3-supply = <&vph_pwr>; // XXX wake-gpios = <&tlmm 99 GPIO_ACTIVE_HIGH>; perst-gpios = <&tlmm 97 GPIO_ACTIVE_LOW>; link-reset-sysfs; pinctrl-0 = <&pcie1_default_state>; pinctrl-names = "default"; status = "okay"; }; &pcie1_phy { vdda-phy-supply = <&vreg_l3e_0p9>; vdda-pll-supply = <&vreg_l3i_1p2>; vdda-qref-supply = <&vreg_l1i_0p88>; status = "okay"; }; &i2c5 { clock-frequency = <400000>; // BOOT EEPROM eeprom@50 { compatible = "atmel,24c64"; status = "okay"; label = "core_v2_eeprom"; reg = <0x50>; pagesize = <16>; size = <8192>; address-width = <16>; wp-gpios = <&tlmm 78 GPIO_ACTIVE_HIGH>; vcc-supply = <&vreg_l15b_1p8>; }; max34417_1: max34417@12 { compatible = "maxim,max34417"; reg = <0x12>; maxim,sense-resistor = <1>; vdd-supply = <&vreg_l2b_3p0>; vio-supply = <&vreg_l15b_1p8>; status = "okay"; #address-cells = <1>; #size-cells = <0>; // CH 1 : Kryo APC0 Cores // CH 2 : Kryo APC2 Cores // CH 3 : Kryo APC1 Cores // CH 4 : Tensor Processor – NSP1 // Note: both 1.8 and 3.0V rails are always on for other sensors input@0 { reg = <0>; label = "apc0"; }; input@1 { reg = <1>; label = "apc2"; }; input@2 { reg = <2>; label = "apc1"; }; input@3 { reg = <3>; label = "nsp1"; }; }; max34417_2: max34417@1a { compatible = "maxim,max34417"; reg = <0x1a>; maxim,sense-resistor = <1>; vdd-supply = <&vreg_l2b_3p0>; vio-supply = <&vreg_l15b_1p8>; status = "okay"; #address-cells = <1>; #size-cells = <0>; // CH 1 : GFX Power // CH 2 : Tensor Processor – NSP2 // CH 3 : Bob Power // CH 4 : Unused // Note: both 1.8 and 3.0V rails are always on for other sensors input@0 { reg = <0>; label = "gfx"; }; input@1 { reg = <1>; label = "nsp2"; }; input@2 { reg = <2>; label = "bob"; }; input@3 { reg = <3>; label = "unused"; }; }; // TODO enable verr ( varies based on common mode range ) max34417_3: max34417@10 { compatible = "maxim,max34417"; reg = <0x10>; maxim,sense-resistor = <1>; vdd-supply = <&vreg_l2b_3p0>; vio-supply = <&vreg_l15b_1p8>; status = "okay"; #address-cells = <1>; #size-cells = <0>; // CH 1 : VPH // CH 2 : S1C ~1.25V Subregulation // CH 3 : S3C ~0.97V Subregulation // CH 4 : S6C ~1.86V Subregulation // Note: both 1.8 and 3.0V rails are always on for other sensors input@0 { reg = <0>; label = "vph"; }; input@1 { reg = <1>; label = "s1c"; }; input@2 { reg = <2>; label = "s3c"; }; input@3 { reg = <3>; label = "s6c"; }; }; }; // Custom Connector I2C ( Paddle Card ) &i2c2 { status = "okay"; // Southgate/Northgate Primary Built In Battery max17320_primary@36 { compatible = "maxim,max17320"; status = "okay"; reg = <0x36>; nvm_reg = /bits/ 8 <0x0b>; rsense = <25>; /* 100's of microOhms */ }; // Southgate/Northgate Secondary Hotswap Battery // NOTE This is handled dynamically by northgate_hotswap driver // max17320_hotswap@76 { // compatible = "maxim,max17320"; // status = "okay"; // reg = <0x76>; // nvm_reg = /bits/ 8 <0x4b>; // rsense = <25>; /* 100's of microOhms */ // }; // PADDLE EEPROM eeprom@50 { compatible = "atmel,24c32"; status = "okay"; label = "strap_eeprom"; reg = <0x50>; //wp-gpios = <&tlmm 78 GPIO_ACTIVE_HIGH>; vcc-supply = <&vreg_l15b_1p8>; }; // PADDLE EEPROM - 256 Bytes on 0x51 added in EV3.3 eeprom@51 { compatible = "atmel,24c04"; status = "okay"; label = "strap_v2_eeprom"; reg = <0x51>; vcc-supply = <&vreg_l15b_1p8>; }; // Northgate/Enthusiast Hotswap Card Silego northgate_hotswap: slg4ad48669m@18 { compatible = "silego,northgate_hotswap"; reg = <0x18>; interrupt-parent = <&pm8550b_gpios>; interrupts = <10 IRQ_TYPE_LEVEL_HIGH>; pinctrl-0 = <&strap_irq>; pinctrl-names = "default"; status = "ok"; }; }; &cci0_i2c0 { // "CCI_0" // pinctrl-names = "default"; // pinctrl-0 = <&cam_sensor_mclk7_active>; clock-frequency = <400000>; eeprom@50 { compatible = "atmel,24c64"; reg = <0x50>; pagesize = <32>; size = <8192>; address-width = <16>; status = "okay"; vcc-supply = <&rgb_3v0_vout>; label = "passthrough_cams_eeprom_left"; }; eeprom@53 { compatible = "atmel,24c64"; reg = <0x53>; pagesize = <32>; size = <8192>; address-width = <16>; status = "okay"; vcc-supply = <&rgb_3v0_vout>; label = "passthrough_cams_eeprom_right"; }; cam3@1a { compatible = "arcimx616"; id = "passthrough_left"; reg = <0x1a>; reset-gpios = <&tlmm 126 GPIO_ACTIVE_HIGH>; strobe-gpios = <&tlmm 90 GPIO_ACTIVE_HIGH>; detect-gpios = <&pm8550b_gpios 6 GPIO_ACTIVE_HIGH>; mux-enable-gpios = <&tlmm 14 GPIO_ACTIVE_HIGH>; mux-select-gpios = <&tlmm 111 GPIO_ACTIVE_HIGH>; pinctrl-names = "default"; pinctrl-0 = <&cam6_default>,<&cam7_default>; clocks = <&camcc CAM_CC_MCLK7_CLK>,<&camcc CAM_CC_MCLK6_CLK>; clock-names = "xclk","xclk2"; DOVDD-supply = <&rgb_3v0_vout>; // AVDD-supply = <&camera_2p8>; // DVDD-supply = <&camera_1p2>; port { cam_pt_left: endpoint { clock-lanes = <2>; data-lanes = <0 1 2 3>; remote-endpoint = <&csiphy3_ep>; }; }; }; cam4@10 { compatible = "arcimx616"; id = "passthrough_right"; reg = <0x10>; DOVDD-supply = <&dummy_reg>; port { cam_pt_right: endpoint { clock-lanes = <2>; data-lanes = <0 1 2 3>; remote-endpoint = <&csiphy5_ep>; }; }; }; }; &pm8550ve_gpios { gpio-line-names = // GPIO01 - GPIO08 "", "", "", "", "", "", "", ""; }; &spi0 { status = "okay"; // Remove Hardware Chip Select pinctrl-0 = <&qup_spi0_data_clk>; fpga_cspi@0 { status = "okay"; compatible = "linux,spidev"; spi-max-frequency = <11000000>; reg = <0>; }; }; &tlmm { status = "okay"; // FPGA Pins fpga_rst: fpga_rst { mux { pins = "gpio7"; function = "gpio"; }; config { pins = "gpio7"; bias-disable = <0>; drive-strength = <2>; output-enable; ouput-high; }; }; fpga_cs: fpga_cs { mux { pins = "gpio35"; function = "gpio"; }; config { pins = "gpio35"; bias-disable = <0>; drive-strength = <2>; output-enable; // active-low; output-high; }; }; fpga_crst: fpga_crst { mux { pins = "gpio39"; function = "gpio"; }; config { pins = "gpio39"; bias-disable = <0>; input-enable; }; }; fpga_cdone: fpga_cdone { mux { pins = "gpio155"; function = "gpio"; }; config { pins = "gpio155"; bias-disable = <0>; input-enable; }; }; fpga_cready: fpga_cready { mux { pins = "gpio158"; function = "gpio"; }; config { pins = "gpio158"; bias-disable = <0>; input-enable; }; }; }; // nRF Pins &tlmm { // nRF CS qup_spi10_cs_nrf: qup-spi10-cs-state-nrf { pins = "gpio13"; function = "qup2_se2"; drive-strength = <6>; bias-disable; }; // nRF SPI interrupt and reset pins // expansion l_spihid_default_state: l-spihid-default { irq0-pins { pins = "gpio69"; function = "gpio"; bias-pull-up; }; reset0-pins { pins = "gpio70"; function = "gpio"; drive-strength = <2>; output-low; bias-pull-down; }; }; // host/mainboard r_spihid_default_state: r-spihid-default { irq0-pins { pins = "gpio66"; function = "gpio"; bias-pull-up; }; reset0-pins { pins = "gpio137"; function = "gpio"; drive-strength = <2>; output-low; bias-pull-down; }; }; nrf_host_rst_n: nrf_host_rst_n { mux { pins = "gpio164"; function = "gpio"; }; config { pins = "gpio164"; power-source = <1>; /* 1.8 V */ bias-disable = <0>; output-enable; output-low; }; }; bt_default: bt-default-state { bt-en-pins { pins = "gpio17"; function = "gpio"; drive-strength = <16>; bias-disable; }; sw-ctrl-pins { pins = "gpio18"; function = "gpio"; bias-pull-down; }; }; i2c4_default: i2c4-default-state { pins = "gpio48", "gpio49"; function = "gpio"; drive-strength = <2>; bias-pull-up; }; i2c5_default: i2c5-default-state { pins = "gpio52", "gpio53"; function = "gpio"; drive-strength = <2>; bias-pull-up; }; wlan_en: wlan-en-state { pins = "gpio16"; function = "gpio"; drive-strength = <8>; bias-pull-down; }; }; &ufs_mem_hc { reset-gpios = <&tlmm 210 GPIO_ACTIVE_LOW>; vcc-supply = <&vreg_l17b_2p5>; vcc-max-microamp = <1300000>; vccq-supply = <&vreg_l1c_1p2>; vccq-max-microamp = <1200000>; status = "okay"; }; &ufs_mem_phy { vdda-phy-supply = <&vreg_l1d_0p9>; vdda-pll-supply = <&vreg_l3i_1p2>; status = "okay"; }; &usb_1 { dr_mode = "otg"; usb-role-switch; status = "okay"; }; &usb_1_dwc3_hs { remote-endpoint = <&pm8550b_role_switch_out>; }; &usb_1_hsphy { vdd-supply = <&vreg_l1i_0p88>; vdda12-supply = <&vreg_l3i_1p2>; phys = <&pm8550b_eusb2_repeater>; status = "okay"; }; &usb_dp_qmpphy { vdda-phy-supply = <&vreg_l3i_1p2>; vdda-pll-supply = <&vreg_l3g_0p91>; orientation-switch; status = "okay"; }; &xo_board { clock-frequency = <76800000>; }; &pmk8550_gpios { pinctrl-0 = <&alt_sleep_clk_default>; pinctrl-names = "default"; alt_sleep_clk { alt_sleep_clk_default: alt_sleep_clk_default { pins = "gpio3"; function = "func1"; input-disable; output-enable; bias-disable; power-source = <0>; }; }; };