]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
arm64: dts: qcom: Rework X1-based Asus Zenbook A14's displays
authorAleksandrs Vinarskis <alex@vinarskis.com>
Sat, 27 Sep 2025 13:21:36 +0000 (15:21 +0200)
committerBjorn Andersson <andersson@kernel.org>
Mon, 27 Oct 2025 16:20:49 +0000 (11:20 -0500)
The laptop comes in two variants:

* UX3407RA, higher end, FHD+ OLED or WOXGA+ OLED panels
* UX3407QA, lower end, FHD+ OLED or FHD+ LCD panels

Even though all three panels work with "edp-panel", unfortunately the
brightness adjustmenet of LCD panel is PWM based, requiring a dedicated
device-tree. Convert "x1p42100-asus-zenbook-a14.dts" into ".dtsi" to
allow for this split, introduce new LCD variant. Leave current variant
without postfix and with the unchanged model name, as some distros
(eg. Ubuntu) rely on this for automatic device-tree detection during
kernel installation/upgrade.

As dedicated device-tree is required, update compatibles of OLED
variants to correct ones. Keep "edp-panel" as fallback, since it is
enough to make the panels work.

While at it moving .dts, .dtsi around, drop 'model' from the top level
x1-asus-zenbook-a14.dtsi as well.

Co-developed-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Signed-off-by: Jens Glathe <jens.glathe@oldschoolsolutions.biz>
Reviewed-by: Konrad Dybcio <konrad.dybcio@oss.qualcomm.com>
Signed-off-by: Aleksandrs Vinarskis <alex@vinarskis.com>
Link: https://lore.kernel.org/r/20250927-zenbook-improvements-v3-2-d46c7368dc70@vinarskis.com
Signed-off-by: Bjorn Andersson <andersson@kernel.org>
arch/arm64/boot/dts/qcom/Makefile
arch/arm64/boot/dts/qcom/x1-asus-zenbook-a14.dtsi
arch/arm64/boot/dts/qcom/x1e80100-asus-zenbook-a14.dts
arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14-lcd.dts [new file with mode: 0644]
arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14.dts
arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14.dtsi [new file with mode: 0644]

index 65a0e26b148cfbe80b998dbed26abcfa8c443321..e9f06fe17cbdea9232ef46ea896325b594e36dbb 100644 (file)
@@ -346,6 +346,8 @@ x1e80100-qcp-el2-dtbs       := x1e80100-qcp.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)        += x1e80100-qcp.dtb x1e80100-qcp-el2.dtb
 x1p42100-asus-zenbook-a14-el2-dtbs     := x1p42100-asus-zenbook-a14.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)        += x1p42100-asus-zenbook-a14.dtb x1p42100-asus-zenbook-a14-el2.dtb
+x1p42100-asus-zenbook-a14-lcd-el2-dtbs := x1p42100-asus-zenbook-a14-lcd.dtb x1-el2.dtbo
+dtb-$(CONFIG_ARCH_QCOM)        += x1p42100-asus-zenbook-a14-lcd.dtb x1p42100-asus-zenbook-a14-lcd-el2.dtb
 x1p42100-crd-el2-dtbs  := x1p42100-crd.dtb x1-el2.dtbo
 dtb-$(CONFIG_ARCH_QCOM)        += x1p42100-crd.dtb x1p42100-crd-el2.dtb
 x1p42100-hp-omnibook-x14-el2-dtbs := x1p42100-hp-omnibook-x14.dtb x1-el2.dtbo
index 69eccad1a09c240ba721ecfd50d1558aaa1a633a..8e5c5575a5320172caa628db181560f55b688e67 100644 (file)
@@ -14,7 +14,6 @@
 #include "hamoa-pmics.dtsi"
 
 / {
-       model = "ASUS Zenbook A14";
        chassis-type = "laptop";
 
        aliases {
        status = "okay";
 
        aux-bus {
-               panel {
+               panel: panel {
                        compatible = "edp-panel";
-                       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
                        power-supply = <&vreg_edp_3p3>;
 
-                       pinctrl-0 = <&edp_bl_en>;
-                       pinctrl-names = "default";
-
                        port {
                                edp_panel_in: endpoint {
                                        remote-endpoint = <&mdss_dp3_out>;
index c3cd04c9703d3df6b04ef4a1393e92aa6b60a5a0..49b12a0a7cb1e7342f15b63d48ec03f7f2cc325f 100644 (file)
        firmware-name = "qcom/x1e80100/ASUSTeK/zenbook-a14/qcdxkmsuc8380.mbn";
 };
 
+&panel {
+       compatible = "samsung,atna40cu11", "samsung,atna33xc20";
+       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+
+       pinctrl-0 = <&edp_bl_en>;
+       pinctrl-names = "default";
+};
+
 &remoteproc_adsp {
        firmware-name = "qcom/x1e80100/ASUSTeK/zenbook-a14/qcadsp8380.mbn",
                        "qcom/x1e80100/ASUSTeK/zenbook-a14/adsp_dtbs.elf";
diff --git a/arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14-lcd.dts b/arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14-lcd.dts
new file mode 100644 (file)
index 0000000..be75606
--- /dev/null
@@ -0,0 +1,62 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025 Aleksandrs Vinarskis <alex@vinarskis.com>
+ */
+
+/dts-v1/;
+
+#include "x1p42100-asus-zenbook-a14.dtsi"
+
+/ {
+       model = "ASUS Zenbook A14 (UX3407QA, LCD)";
+       compatible = "asus,zenbook-a14-ux3407qa-lcd", "asus,zenbook-a14-ux3407qa", "qcom,x1p42100";
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               pwms = <&pmk8550_pwm 0 416667>;
+               enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
+               power-supply = <&vreg_edp_bl>;
+
+               pinctrl-0 = <&edp_bl_en>, <&edp_bl_pwm>;
+               pinctrl-names = "default";
+       };
+
+       vreg_edp_bl: regulator-edp-bl {
+               compatible = "regulator-fixed";
+
+               regulator-name = "VBL9";
+               regulator-min-microvolt = <3600000>;
+               regulator-max-microvolt = <3600000>;
+
+               gpio = <&pmc8380_3_gpios 10 GPIO_ACTIVE_HIGH>;
+               enable-active-high;
+
+               pinctrl-0 = <&edp_bl_reg_en>;
+               pinctrl-names = "default";
+
+               regulator-boot-on;
+       };
+};
+
+&panel {
+       backlight = <&backlight>;
+};
+
+&pmc8380_3_gpios {
+       edp_bl_reg_en: edp-bl-reg-en-state {
+               pins = "gpio10";
+               function = "normal";
+       };
+};
+
+&pmk8550_gpios {
+       edp_bl_pwm: edp-bl-pwm-state {
+               pins = "gpio5";
+               function = "func3";
+       };
+};
+
+&pmk8550_pwm {
+       status = "okay";
+};
index bd75ff898601a0e1d79a5c3986c946046eecf789..68cd318d69073af70e596f935d60d76859dec2c4 100644 (file)
 
 /dts-v1/;
 
-#include "x1p42100.dtsi"
-#include "x1-asus-zenbook-a14.dtsi"
-
-/delete-node/ &pmc8380_6;
-/delete-node/ &pmc8380_6_thermal;
+#include "x1p42100-asus-zenbook-a14.dtsi"
 
 / {
        model = "ASUS Zenbook A14 (UX3407QA)";
-       compatible = "asus,zenbook-a14-ux3407qa", "qcom,x1p42100";
-
-       wcn6855-pmu {
-               compatible = "qcom,wcn6855-pmu";
-
-               vddaon-supply = <&vreg_wcn_0p95>;
-               vddio-supply = <&vreg_wcn_1p9>;
-               vddpcie1p3-supply = <&vreg_wcn_1p9>;
-               vddpcie1p9-supply = <&vreg_wcn_1p9>;
-               vddpmu-supply = <&vreg_wcn_0p95>;
-               vddpmucx-supply = <&vreg_wcn_0p95>;
-               vddpmumx-supply = <&vreg_wcn_0p95>;
-               vddrfa0p95-supply = <&vreg_wcn_0p95>;
-               vddrfa1p3-supply = <&vreg_wcn_1p9>;
-               vddrfa1p9-supply = <&vreg_wcn_1p9>;
-
-               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
-               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
-
-               pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
-               pinctrl-names = "default";
-
-               regulators {
-                       vreg_pmu_rfa_cmn_0p8: ldo0 {
-                               regulator-name = "vreg_pmu_rfa_cmn_0p8";
-                       };
-
-                       vreg_pmu_aon_0p8: ldo1 {
-                               regulator-name = "vreg_pmu_aon_0p8";
-                       };
-
-                       vreg_pmu_wlcx_0p8: ldo2 {
-                               regulator-name = "vreg_pmu_wlcx_0p8";
-                       };
-
-                       vreg_pmu_wlmx_0p8: ldo3 {
-                               regulator-name = "vreg_pmu_wlmx_0p8";
-                       };
-
-                       vreg_pmu_btcmx_0p8: ldo4 {
-                               regulator-name = "vreg_pmu_btcmx_0p8";
-                       };
-
-                       vreg_pmu_pcie_1p8: ldo5 {
-                               regulator-name = "vreg_pmu_pcie_1p8";
-                       };
-
-                       vreg_pmu_pcie_0p9: ldo6 {
-                               regulator-name = "vreg_pmu_pcie_0p9";
-                       };
-
-                       vreg_pmu_rfa_0p8: ldo7 {
-                               regulator-name = "vreg_pmu_rfa_0p8";
-                       };
-
-                       vreg_pmu_rfa_1p2: ldo8 {
-                               regulator-name = "vreg_pmu_rfa_1p2";
-                       };
-
-                       vreg_pmu_rfa_1p7: ldo9 {
-                               regulator-name = "vreg_pmu_rfa_1p7";
-                       };
-               };
-       };
+       compatible = "asus,zenbook-a14-ux3407qa-oled", "asus,zenbook-a14-ux3407qa", "qcom,x1p42100";
 };
 
-&gpu {
-       status = "okay";
-};
-
-&gpu_zap_shader {
-       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qcdxkmsucpurwa.mbn";
-};
-
-&pcie4_port0 {
-       wifi@0 {
-               compatible = "pci17cb,1103";
-               reg = <0x10000 0x0 0x0 0x0 0x0>;
-
-               vddaon-supply = <&vreg_pmu_aon_0p8>;
-               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
-               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
-               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
-               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
-               vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
-               vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
-               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
-               vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
-
-               qcom,calibration-variant = "UX3407Q";
-       };
-};
-
-&remoteproc_adsp {
-       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qcadsp8380.mbn",
-                       "qcom/x1p42100/ASUSTeK/zenbook-a14/adsp_dtbs.elf";
-
-       status = "okay";
-};
-
-&remoteproc_cdsp {
-       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qccdsp8380.mbn",
-                       "qcom/x1p42100/ASUSTeK/zenbook-a14/cdsp_dtbs.elf";
-
-       status = "okay";
-};
-
-&uart14 {
-       status = "okay";
-
-       bluetooth {
-               compatible = "qcom,wcn6855-bt";
-
-               vddaon-supply = <&vreg_pmu_aon_0p8>;
-               vddbtcmx-supply = <&vreg_pmu_btcmx_0p8>;
-               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
-               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
-               vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
-               vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
-               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
-               vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
+&panel {
+       compatible = "samsung,atna40ct06", "samsung,atna33xc20";
+       enable-gpios = <&pmc8380_3_gpios 4 GPIO_ACTIVE_HIGH>;
 
-               max-speed = <3000000>;
-       };
+       pinctrl-0 = <&edp_bl_en>;
+       pinctrl-names = "default";
 };
diff --git a/arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14.dtsi b/arch/arm64/boot/dts/qcom/x1p42100-asus-zenbook-a14.dtsi
new file mode 100644 (file)
index 0000000..7ccb207
--- /dev/null
@@ -0,0 +1,138 @@
+// SPDX-License-Identifier: BSD-3-Clause
+/*
+ * Copyright (c) 2025 Qualcomm Innovation Center, Inc. All rights reserved.
+ * Copyright (c) 2025 Aleksandrs Vinarskis <alex@vinarskis.com>
+ */
+
+/dts-v1/;
+
+#include "x1p42100.dtsi"
+#include "x1-asus-zenbook-a14.dtsi"
+
+/delete-node/ &pmc8380_6;
+/delete-node/ &pmc8380_6_thermal;
+
+/ {
+       wcn6855-pmu {
+               compatible = "qcom,wcn6855-pmu";
+
+               vddaon-supply = <&vreg_wcn_0p95>;
+               vddio-supply = <&vreg_wcn_1p9>;
+               vddpcie1p3-supply = <&vreg_wcn_1p9>;
+               vddpcie1p9-supply = <&vreg_wcn_1p9>;
+               vddpmu-supply = <&vreg_wcn_0p95>;
+               vddpmucx-supply = <&vreg_wcn_0p95>;
+               vddpmumx-supply = <&vreg_wcn_0p95>;
+               vddrfa0p95-supply = <&vreg_wcn_0p95>;
+               vddrfa1p3-supply = <&vreg_wcn_1p9>;
+               vddrfa1p9-supply = <&vreg_wcn_1p9>;
+
+               bt-enable-gpios = <&tlmm 116 GPIO_ACTIVE_HIGH>;
+               wlan-enable-gpios = <&tlmm 117 GPIO_ACTIVE_HIGH>;
+
+               pinctrl-0 = <&wcn_bt_en>, <&wcn_wlan_en>;
+               pinctrl-names = "default";
+
+               regulators {
+                       vreg_pmu_rfa_cmn_0p8: ldo0 {
+                               regulator-name = "vreg_pmu_rfa_cmn_0p8";
+                       };
+
+                       vreg_pmu_aon_0p8: ldo1 {
+                               regulator-name = "vreg_pmu_aon_0p8";
+                       };
+
+                       vreg_pmu_wlcx_0p8: ldo2 {
+                               regulator-name = "vreg_pmu_wlcx_0p8";
+                       };
+
+                       vreg_pmu_wlmx_0p8: ldo3 {
+                               regulator-name = "vreg_pmu_wlmx_0p8";
+                       };
+
+                       vreg_pmu_btcmx_0p8: ldo4 {
+                               regulator-name = "vreg_pmu_btcmx_0p8";
+                       };
+
+                       vreg_pmu_pcie_1p8: ldo5 {
+                               regulator-name = "vreg_pmu_pcie_1p8";
+                       };
+
+                       vreg_pmu_pcie_0p9: ldo6 {
+                               regulator-name = "vreg_pmu_pcie_0p9";
+                       };
+
+                       vreg_pmu_rfa_0p8: ldo7 {
+                               regulator-name = "vreg_pmu_rfa_0p8";
+                       };
+
+                       vreg_pmu_rfa_1p2: ldo8 {
+                               regulator-name = "vreg_pmu_rfa_1p2";
+                       };
+
+                       vreg_pmu_rfa_1p7: ldo9 {
+                               regulator-name = "vreg_pmu_rfa_1p7";
+                       };
+               };
+       };
+};
+
+&gpu {
+       status = "okay";
+};
+
+&gpu_zap_shader {
+       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qcdxkmsucpurwa.mbn";
+};
+
+&pcie4_port0 {
+       wifi@0 {
+               compatible = "pci17cb,1103";
+               reg = <0x10000 0x0 0x0 0x0 0x0>;
+
+               vddaon-supply = <&vreg_pmu_aon_0p8>;
+               vddpcie0p9-supply = <&vreg_pmu_pcie_0p9>;
+               vddpcie1p8-supply = <&vreg_pmu_pcie_1p8>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
+
+               qcom,calibration-variant = "UX3407Q";
+       };
+};
+
+&remoteproc_adsp {
+       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qcadsp8380.mbn",
+                       "qcom/x1p42100/ASUSTeK/zenbook-a14/adsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&remoteproc_cdsp {
+       firmware-name = "qcom/x1p42100/ASUSTeK/zenbook-a14/qccdsp8380.mbn",
+                       "qcom/x1p42100/ASUSTeK/zenbook-a14/cdsp_dtbs.elf";
+
+       status = "okay";
+};
+
+&uart14 {
+       status = "okay";
+
+       bluetooth {
+               compatible = "qcom,wcn6855-bt";
+
+               vddaon-supply = <&vreg_pmu_aon_0p8>;
+               vddbtcmx-supply = <&vreg_pmu_btcmx_0p8>;
+               vddrfa0p8-supply = <&vreg_pmu_rfa_0p8>;
+               vddrfa1p2-supply = <&vreg_pmu_rfa_1p2>;
+               vddrfa1p8-supply = <&vreg_pmu_rfa_1p7>;
+               vddrfacmn-supply = <&vreg_pmu_rfa_cmn_0p8>;
+               vddwlcx-supply = <&vreg_pmu_wlcx_0p8>;
+               vddwlmx-supply = <&vreg_pmu_wlmx_0p8>;
+
+               max-speed = <3000000>;
+       };
+};