Re: [PATCH 2/2] arm64: dts: qcom: Add Acer Aspire 1

From: Konrad Dybcio
Date: Tue Mar 14 2023 - 06:26:20 EST




On 14.03.2023 07:43, Nikita Travkin wrote:
> Acer Aspire 1 is a WoA laptop based on Snapdragon 7c gen1 platform.
>
> The laptop design is similar to trogdor in the choice of primary
> components but the specifics on usage of those differ slightly.
>
> Add the devicetree for the laptop with support for most of the
> hardware present.
>
> Signed-off-by: Nikita Travkin <nikita@xxxxxxx>
> ---
[...]
> + /* HACK: Display fails with
> + *
> + * *ERROR* Unexpected max rate (0x0); assuming 5.4 GHz
> + * *ERROR* Link training failed, link is off (-5)
> + *
> + * if the power to the panel was ever cut
Your ACPI tables mention a single FSTATE where this regulator is
off, may be worth looking into at some point, perhaps you need
a more in-depth en-/disable sequence.

Konrad
> + */
> + regulator-always-on;
> +
> + gpio = <&tlmm 26 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&reg_lcm_en_default>;
> + pinctrl-names = "default";
> + };
> +
> + reg_tp_3p3: touchpad-regulator {
> + compatible = "regulator-fixed";
> + regulator-name = "tp_3p3";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> +
> + gpio = <&tlmm 25 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + pinctrl-0 = <&reg_tp_en_default>;
> + pinctrl-names = "default";
> + };
> +};
> +
> +&camcc { status = "disabled"; };
> +
> +&dsi0 {
> + vdda-supply = <&vreg_l3c_1p2>;
> + status = "okay";
> +};
> +
> +&dsi0_out {
> + remote-endpoint = <&sn65dsi86_in>;
> + data-lanes = <0 1 2 3>;
> +};
> +
> +&dsi_phy {
> + vdds-supply = <&vreg_l4a_0p8>;
> + status = "okay";
> +};
> +
> +&i2c2 {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + /* embedded-controller@76 */
> +};
> +
> +&i2c4 {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + /*
> + * NOTE: DSDT defines two possible touchpads, other one is
> + *
> + * reg = <0x15>;
> + * hid-descr-addr = <0x1>;
> + */
> +
> + touchpad@2c {
> + compatible = "hid-over-i2c";
> + reg = <0x2c>;
> + hid-descr-addr = <0x20>;
> +
> + vdd-supply = <&reg_tp_3p3>;
> +
> + interrupts-extended = <&tlmm 94 IRQ_TYPE_LEVEL_LOW>;
> +
> + pinctrl-0 = <&hid_touchpad_default>;
> + pinctrl-names = "default";
> + };
> +
> + keyboard@3a {
> + compatible = "hid-over-i2c";
> + reg = <0x3a>;
> + hid-descr-addr = <0x1>;
> +
> + interrupts-extended = <&tlmm 33 IRQ_TYPE_LEVEL_LOW>;
> +
> + pinctrl-0 = <&hid_keyboard_default>;
> + pinctrl-names = "default";
> +
> + wakeup-source;
> + };
> +};
> +
> +&i2c9 {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + alc5682: codec@1a {
> + compatible = "realtek,rt5682i";
> + reg = <0x1a>;
> +
> + #sound-dai-cells = <1>;
> +
> + interrupt-parent = <&tlmm>;
> + /*
> + * This will get ignored because the interrupt type
> + * is set in rt5682.c.
> + */
> + interrupts = <28 IRQ_TYPE_EDGE_BOTH>;
> +
> + pinctrl-0 = <&codec_irq_default>;
> + pinctrl-names = "default";
> +
> + AVDD-supply = <&vreg_l15a_1p8>;
> + MICVDD-supply = <&reg_codec_3p3>;
> + VBAT-supply = <&reg_codec_3p3>;
> +
> + realtek,dmic1-data-pin = <1>;
> + realtek,dmic1-clk-pin = <1>;
> + realtek,jd-src = <1>;
> + };
> +};
> +
> +&i2c10 {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + sn65dsi86_bridge: bridge@2c {
> + compatible = "ti,sn65dsi86";
> + reg = <0x2c>;
> + gpio-controller;
> + #gpio-cells = <2>;
> + #pwm-cells = <1>;
> +
> + interrupt-parent = <&tlmm>;
> + interrupts = <11 IRQ_TYPE_LEVEL_HIGH>;
> +
> + enable-gpios = <&tlmm 51 GPIO_ACTIVE_HIGH>;
> + suspend-gpios = <&tlmm 22 GPIO_ACTIVE_LOW>;
> +
> + pinctrl-0 = <&bridge_en_default>,
> + <&edp_bridge_irq_default>,
> + <&bridge_suspend_default>;
> + pinctrl-names = "default";
> +
> + vpll-supply = <&reg_brij_1p8>;
> + vccio-supply = <&reg_brij_1p8>;
> + vcca-supply = <&reg_brij_1p2>;
> + vcc-supply = <&reg_brij_1p2>;
> +
> + clocks = <&rpmhcc RPMH_LN_BB_CLK3>;
> + clock-names = "refclk";
> +
> + ports {
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + port@0 {
> + reg = <0>;
> +
> + sn65dsi86_in: endpoint {
> + remote-endpoint = <&dsi0_out>;
> + };
> + };
> +
> + port@1 {
> + reg = <1>;
> +
> + sn65dsi86_out: endpoint {
> + data-lanes = <0 1>;
> + remote-endpoint = <&panel_in_edp>;
> + };
> + };
> + };
> +
> + aux-bus {
> + panel: panel {
> + compatible = "edp-panel";
> + power-supply = <&reg_lcm_3p3>;
> + backlight = <&backlight>;
> +
> + port {
> + panel_in_edp: endpoint {
> + remote-endpoint = <&sn65dsi86_out>;
> + };
> + };
> + };
> + };
> + };
> +};
> +
> +&gpu {
> + status = "okay";
> +
> + zap-shader {
> + memory-region = <&zap_mem>;
> + firmware-name = "qcom/sc7180-acer-aspire1/qcdxkmsuc7180.mbn";
> + };
> +};
> +
> +/* Seems like ADSP really insists on managing those itself */
> +&lpasscc { status = "disabled"; };
> +&lpass_hm { status = "disabled"; };
> +
> +&mdp {
> + status = "okay";
> +};
> +
> +&mdss {
> + status = "okay";
> +};
> +
> +&pm6150_adc {
> + thermistor@4e {
> + reg = <ADC5_AMUX_THM2_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + };
> +
> + charger-thermistor@4f {
> + reg = <ADC5_AMUX_THM3_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time = <200>;
> + };
> +};
> +
> +&pm6150_adc_tm {
> + status = "okay";
> +
> + charger-thermistor@0 {
> + reg = <0>;
> + io-channels = <&pm6150_adc ADC5_AMUX_THM3_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time-us = <200>;
> + };
> +
> + thermistor@1 {
> + reg = <1>;
> + io-channels = <&pm6150_adc ADC5_AMUX_THM2_100K_PU>;
> + qcom,ratiometric;
> + qcom,hw-settle-time-us = <200>;
> + };
> +};
> +
> +&pm6150_pon { status = "disabled"; };
> +
> +&qupv3_id_0 {
> + status = "okay";
> +};
> +
> +&qupv3_id_1 {
> + status = "okay";
> +};
> +
> +&remoteproc_mpss {
> + firmware-name = "qcom/sc7180-acer-aspire1/qcmpss7180_nm.mbn";
> + status = "okay";
> +};
> +
> +&sdhc_1 {
> + pinctrl-0 = <&sdc1_default>;
> + pinctrl-1 = <&sdc1_sleep>;
> + pinctrl-names = "default", "sleep";
> + vmmc-supply = <&vreg_l19a_2p9>;
> + vqmmc-supply = <&vreg_l12a_1p8>;
> +
> + status = "okay";
> +};
> +
> +&uart3 {
> + /delete-property/interrupts;
> + interrupts-extended = <&intc GIC_SPI 604 IRQ_TYPE_LEVEL_HIGH>,
> + <&tlmm 41 IRQ_TYPE_EDGE_FALLING>;
> +
> + pinctrl-1 = <&qup_uart3_sleep>;
> + pinctrl-names = "default", "sleep";
> +
> + status = "okay";
> +
> + bluetooth: bluetooth {
> + compatible = "qcom,wcn3991-bt";
> + vddio-supply = <&vreg_l10a_1p8>;
> + vddxo-supply = <&vreg_l1c_1p8>;
> + vddrf-supply = <&vreg_l2c_1p3>;
> + vddch0-supply = <&vreg_l10c_3p3>;
> + max-speed = <3200000>;
> + };
> +};
> +
> +&uart8 {
> + status = "okay";
> +};
> +
> +&usb_1 {
> + status = "okay";
> +};
> +
> +&usb_1_dwc3 {
> + dr_mode = "host";
> + #address-cells = <1>;
> + #size-cells = <0>;
> +
> + usb_hub_2_x: hub@1 {
> + compatible = "usbbda,5411";
> + reg = <1>;
> + peer-hub = <&usb_hub_3_x>;
> + };
> +
> + usb_hub_3_x: hub@2 {
> + compatible = "usbbda,411";
> + reg = <2>;
> + peer-hub = <&usb_hub_2_x>;
> + };
> +};
> +
> +&usb_1_hsphy {
> + vdd-supply = <&vreg_l4a_0p8>;
> + vdda-pll-supply = <&vreg_l11a_1p8>;
> + vdda-phy-dpdm-supply = <&vreg_l17a_3p0>;
> + qcom,imp-res-offset-value = <8>;
> + qcom,preemphasis-level = <QUSB2_V2_PREEMPHASIS_15_PERCENT>;
> + qcom,preemphasis-width = <QUSB2_V2_PREEMPHASIS_WIDTH_HALF_BIT>;
> + qcom,bias-ctrl-value = <0x22>;
> + qcom,charge-ctrl-value = <3>;
> + qcom,hsdisc-trim-value = <0>;
> +
> + status = "okay";
> +};
> +
> +&usb_1_qmpphy {
> + vdda-phy-supply = <&vreg_l3c_1p2>;
> + vdda-pll-supply = <&vreg_l4a_0p8>;
> + status = "okay";
> +};
> +
> +&venus {
> + firmware-name = "qcom/sc7180-acer-aspire1/qcvss7180.mbn";
> +};
> +
> +&wifi {
> + vdd-0.8-cx-mx-supply = <&vreg_l9a_0p6>;
> + vdd-1.8-xo-supply = <&vreg_l1c_1p8>;
> + vdd-1.3-rfa-supply = <&vreg_l2c_1p3>;
> + vdd-3.3-ch0-supply = <&vreg_l10c_3p3>;
> + vdd-3.3-ch1-supply = <&vreg_l11c_3p3>;
> + status = "okay";
> +};
> +
> +&apps_rsc {
> + pm6150-rpmh-regulators {
> + compatible = "qcom,pm6150-rpmh-regulators";
> + qcom,pmic-id = "a";
> +
> + vreg_s1a_1p1: smps1 {
> + regulator-min-microvolt = <1128000>;
> + regulator-max-microvolt = <1128000>;
> + };
> +
> + vreg_l4a_0p8: ldo4 {
> + regulator-min-microvolt = <824000>;
> + regulator-max-microvolt = <928000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l9a_0p6: ldo9 {
> + regulator-min-microvolt = <488000>;
> + regulator-max-microvolt = <800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l10a_1p8: ldo10 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> +
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + vreg_l11a_1p8: ldo11 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l12a_1p8: ldo12 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l13a_1p8: ldo13 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l14a_1p8: ldo14 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l15a_1p8: ldo15 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l16a_2p7: ldo16 {
> + regulator-min-microvolt = <2496000>;
> + regulator-max-microvolt = <3304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l17a_3p0: ldo17 {
> + regulator-min-microvolt = <2920000>;
> + regulator-max-microvolt = <3232000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l18a_2p8: ldo18 {
> + regulator-min-microvolt = <2496000>;
> + regulator-max-microvolt = <3304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l19a_2p9: ldo19 {
> + regulator-min-microvolt = <2960000>;
> + regulator-max-microvolt = <2960000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> + };
> +
> + pm6150l-rpmh-regulators {
> + compatible = "qcom,pm6150l-rpmh-regulators";
> + qcom,pmic-id = "c";
> +
> + vreg_s8c_1p3: smps8 {
> + regulator-min-microvolt = <1120000>;
> + regulator-max-microvolt = <1408000>;
> + };
> +
> + vreg_l1c_1p8: ldo1 {
> + regulator-min-microvolt = <1616000>;
> + regulator-max-microvolt = <1984000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l2c_1p3: ldo2 {
> + regulator-min-microvolt = <1168000>;
> + regulator-max-microvolt = <1304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l3c_1p2: ldo3 {
> + regulator-min-microvolt = <1144000>;
> + regulator-max-microvolt = <1304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l4c_1p8: ldo4 {
> + regulator-min-microvolt = <1648000>;
> + regulator-max-microvolt = <3304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
> + };
> +
> + vreg_l5c_1p8: ldo5 {
> + regulator-min-microvolt = <1648000>;
> + regulator-max-microvolt = <3304000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
> + };
> +
> + vreg_l6c_2p9: ldo6 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <2950000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l7c_3p0: ldo7 {
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3312000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_LPM>;
> + };
> +
> + vreg_l8c_1p8: ldo8 {
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l9c_2p9: ldo9 {
> + regulator-min-microvolt = <2952000>;
> + regulator-max-microvolt = <2952000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l10c_3p3: ldo10 {
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3400000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_l11c_3p3: ldo11 {
> + regulator-min-microvolt = <3000000>;
> + regulator-max-microvolt = <3400000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
> + };
> +
> + vreg_bob: bob {
> + regulator-min-microvolt = <3008000>;
> + regulator-max-microvolt = <3960000>;
> + regulator-initial-mode = <RPMH_REGULATOR_MODE_AUTO>;
> + };
> + };
> +};
> +
> +&qup_i2c2_default {
> + drive-strength = <2>;
> +
> + /* Has external pullup */
> + bias-disable;
> +};
> +
> +&qup_i2c4_default {
> + drive-strength = <2>;
> +
> + /* Has external pullup */
> + bias-disable;
> +};
> +
> +&qup_i2c9_default {
> + drive-strength = <2>;
> +
> + /* Has external pullup */
> + bias-disable;
> +};
> +
> +&qup_i2c10_default {
> + drive-strength = <2>;
> +
> + /* Has external pullup */
> + bias-disable;
> +};
> +
> +&tlmm {
> + /*
> + * The TZ seem to protect those because some boards can have
> + * fingerprint sensor connected to this range. Not connected
> + * on this board
> + */
> + gpio-reserved-ranges = <58 5>;
> +
> + amp_sd_mode_default: amp-sd-mode-deault-state {
> + pins = "gpio23";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + bridge_en_default: bridge-en-default-state {
> + pins = "gpio51";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + bridge_suspend_default: bridge-suspend-default-state {
> + pins = "gpio22";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-pull-up;
> + };
> +
> + codec_irq_default: codec-irq-deault-state {
> + pins = "gpio28";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + edp_bridge_irq_default: edp-bridge-irq-default-state {
> + pins = "gpio11";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-pull-down;
> + };
> +
> + hid_keyboard_default: hid-keyboard-default-state {
> + pins = "gpio33";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + hid_touchpad_default: hid-touchpad-default-state {
> + pins = "gpio94";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + qup_uart3_sleep: qup-uart3-sleep-state {
> + cts-pins {
> + /*
> + * Configure a pull-down on CTS to match the pull of
> + * the Bluetooth module.
> + */
> + pins = "gpio38";
> + function = "gpio";
> + bias-pull-down;
> + };
> +
> + rts-pins {
> + /*
> + * Configure pull-down on RTS. As RTS is active low
> + * signal, pull it low to indicate the BT SoC that it
> + * can wakeup the system anytime from suspend state by
> + * pulling RX low (by sending wakeup bytes).
> + */
> + pins = "gpio39";
> + function = "gpio";
> + bias-pull-down;
> + };
> +
> + tx-pins {
> + /*
> + * Configure pull-up on TX when it isn't actively driven
> + * to prevent BT SoC from receiving garbage during sleep.
> + */
> + pins = "gpio40";
> + function = "gpio";
> + bias-pull-up;
> + };
> +
> + rx-pins {
> + /*
> + * Configure a pull-up on RX. This is needed to avoid
> + * garbage data when the TX pin of the Bluetooth module
> + * is floating which may cause spurious wakeups.
> + */
> + pins = "gpio41";
> + function = "gpio";
> + bias-pull-up;
> + };
> + };
> +
> + reg_edp_1p2_en_default: reg-edp-1p2-en-deault-state {
> + pins = "gpio19";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + reg_edp_1p8_en_default: reg-edp-1p8-en-deault-state {
> + pins = "gpio20";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + reg_lcm_en_default: reg-lcm-en-deault-state {
> + pins = "gpio26";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + reg_audio_en_default: reg-audio-en-deault-state {
> + pins = "gpio83";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + reg_tp_en_default: reg-tp-en-deault-state {
> + pins = "gpio25";
> + function = "gpio";
> + drive-strength = <2>;
> + bias-disable;
> + };
> +
> + soc_bkoff_default: soc-bkoff-deault-state {
> + pins = "gpio10";
> + function = "gpio";
> + drive-strength = <16>;
> + bias-disable;
> + };
> +
> + sdc1_default: sdc1-default-state {
> + clk-pins {
> + pins = "sdc1_clk";
> + bias-disable;
> + drive-strength = <16>;
> + };
> +
> + cmd-pins {
> + pins = "sdc1_cmd";
> + bias-pull-up;
> + drive-strength = <16>;
> + };
> +
> + data-pins {
> + pins = "sdc1_data";
> + bias-pull-up;
> + drive-strength = <16>;
> + };
> +
> + rclk-pins {
> + pins = "sdc1_rclk";
> + bias-pull-down;
> + };
> + };
> +
> + sdc1_sleep: sdc1-sleep-state {
> + clk-pins {
> + pins = "sdc1_clk";
> + bias-disable;
> + drive-strength = <2>;
> + };
> +
> + cmd-pins {
> + pins = "sdc1_cmd";
> + bias-pull-up;
> + drive-strength = <2>;
> + };
> +
> + data-pins {
> + pins = "sdc1_data";
> + bias-pull-up;
> + drive-strength = <2>;
> + };
> +
> + rclk-pins {
> + pins = "sdc1_rclk";
> + bias-pull-down;
> + };
> + };
> +
> + ter_mi2s_active: ter-mi2s-active-state {
> + pins = "gpio63", "gpio64", "gpio65";
> + function = "mi2s_2";
> + };
> +};