Re: [PATCH v2 4/4] arm64: dts: qcom: Add IMDT QCS8550 SBC
From: Krzysztof Kozlowski
Date: Wed May 06 2026 - 03:53:34 EST
On Tue, May 05, 2026 at 09:09:54PM +0100, William Bright wrote:
> +#include "qcs8550-imdt-som.dtsi"
> +
> +/ {
> + model = "IMDT QCS8550 SBC";
> + compatible = "imdt,qcs8550-sbc", "imdt,qcs8550-som",
> + "qcom,qcs8550", "qcom,sm8550";
> + chassis-type = "embedded";
> +
> + aliases {
> + serial0 = &uart7;
> + serial1 = &uart14;
> + };
> +
> + chosen {
> + stdout-path = "serial0:115200n8";
> + };
> +
> + backlight: backlight {
> + compatible = "gpio-backlight";
> + gpios = <&pm8550_gpios 6 GPIO_ACTIVE_HIGH>;
> + default-on;
> + };
> +
> + cam_1v2_reg: regulator-cam-1v2 {
This is not used. Drop regulator completely.
> + compatible = "regulator-fixed";
> + regulator-name = "cam_1v2_reg";
> + regulator-min-microvolt = <1200000>;
> + regulator-max-microvolt = <1200000>;
> + vin-supply = <&hr_cam_pwr>;
> + };
> +
> + cam_1v8_reg: regulator-cam-1v8 {
Same here
> + compatible = "regulator-fixed";
> + regulator-name = "cam_1v8_reg";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + vin-supply = <&hr_cam_pwr>;
> + };
> +
> + cam_2v8_reg: regulator-cam-2v8 {
Same here
> + compatible = "regulator-fixed";
> + regulator-name = "cam_2v8_reg";
> + regulator-min-microvolt = <2800000>;
> + regulator-max-microvolt = <2800000>;
> + vin-supply = <&hr_cam_pwr>;
> + };
> +
> + cam_3v3_reg: regulator-cam-3v3 {
Same here
> + compatible = "regulator-fixed";
> + regulator-name = "cam_3v3_reg";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <&hr_cam_pwr>;
> + };
> +
> + display_panel_pwr_en: regulator-display-panel-en {
Again, unused
> + compatible = "regulator-fixed";
> + regulator-name = "display_panel_pwr_en";
> + regulator-min-microvolt = <8000000>;
> + regulator-max-microvolt = <8000000>;
> + startup-delay-us = <10000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&panel_en_default>;
> +
> + gpio = <&tlmm 123 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + vin-supply = <&som_vph_pwr>;
> + };
> +
> + /* 5V VIN to backlight LED driver PMIC */
> + dsi_5v_en: regulator-dsi-5v-en {
Also unused.
> + compatible = "regulator-fixed";
> + regulator-name = "dsi_5v_en";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&dsi_5v_en_default>;
> +
> + gpio = <&tlmm 140 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + vin-supply = <&som_vph_pwr>;
> +
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + /* Enables 1V2, 1V8_CAM and 3V3_CAM */
> + hr_cam_pwr: regulator-hr-cam-pwr {
And this becames unused after dropping fake regulators. Why don't you
have proper users of these controllable supplies?
> + compatible = "regulator-fixed";
> + regulator-name = "hr_cam_pwr";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&hr_cam_en_default>;
> +
> + gpio = <&tlmm 146 GPIO_ACTIVE_LOW>;
> +
> + vin-supply = <&som_vph_pwr>;
> +
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + /* Enables V2MB_3V8 and V2ME_3V3 */
> + m2_pd_pwr: regulator-m2-pd-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "m2_pd_pwr";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&m2_pd_en_default>;
> +
> + gpio = <&tlmm 144 GPIO_ACTIVE_LOW>;
> +
> + vin-supply = <&som_vph_pwr>;
> +
> + regulator-always-on;
> + regulator-boot-on;
> +
> + gpio-open-drain;
> + };
> +
> + per_1v8_reg: regulator-per-1v8 {
Drop node
> + compatible = "regulator-fixed";
> + regulator-name = "per_1v8_reg";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + vin-supply = <&per_pwr>;
> + };
> +
> + per_3v3_reg: regulator-per-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "per_3v3_reg";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + vin-supply = <&per_pwr>;
> + };
> +
> + per_5v_reg: regulator-per-5v {
> + compatible = "regulator-fixed";
> + regulator-name = "per_5v_reg";
> + regulator-min-microvolt = <5000000>;
> + regulator-max-microvolt = <5000000>;
> + vin-supply = <&per_pwr>;
> + };
Drop all these
> +
> + /* Enables 5V_PER, 3V3_PER and 1V8_PER */
> + per_pwr: regulator-per-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "per_pwr";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&pwr_per_en_default>;
> +
> + gpio = <&tlmm 142 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + vin-supply = <&som_vph_pwr>;
> +
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + sdhci_2_vqmmc: regulator-sdhci-2-vqmmc {
> + compatible = "regulator-gpio";
> +
> + regulator-name = "sdhci_2_vqmmc";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-type = "voltage";
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&sd_vset_default>;
> +
> + gpios = <&tlmm 4 GPIO_ACTIVE_HIGH>;
> + enable-active-high;
> +
> + gpios-states = <0>;
> + states = <3300000 0>,
> + <1800000 1>;
> +
> + startup-delay-us = <10000>;
> + };
> +
> + sdhci_4_vqmmc: regulator-sdhci-4-vqmmc {
Even more completely redundant nodes.
> + compatible = "regulator-fixed";
> + regulator-name = "sdhci_4_vqmmc";
> + regulator-min-microvolt = <1800000>;
> + regulator-max-microvolt = <1800000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + som_vph_pwr: regulator-som-vph-pwr {
Not used (usage by other redundant nodes does not count). Drop.
> + compatible = "regulator-fixed";
> + regulator-name = "som_vph_pwr";
> + regulator-min-microvolt = <3900000>;
> + regulator-max-microvolt = <3900000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + vph_pwr: regulator-vph-pwr {
> + compatible = "regulator-fixed";
> + regulator-name = "vph_pwr";
> + regulator-min-microvolt = <3700000>;
> + regulator-max-microvolt = <3700000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + vsys_sd_3v3_reg: regulator-vsys-sd-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "vsys_sd_3v3_reg";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
> +
> + vsys_wlan_3v3_reg: regulator-vsys-wlan-3v3 {
> + compatible = "regulator-fixed";
> + regulator-name = "vsys_wlan_3v3_reg";
> + regulator-min-microvolt = <3300000>;
> + regulator-max-microvolt = <3300000>;
> + regulator-always-on;
> + regulator-boot-on;
> + };
Probably most of them are to be dropped :/
> +
> + wifi_pwrseq: wifi-pwrseq {
> + compatible = "mmc-pwrseq-simple";
> + /*
> + * NXP IW416 chip enables: PMIC_EN (master) and WLAN_EN.
> + * Held asserted (low) before SDHC4 powers up, then
> + * released after vmmc/vqmmc are stable.
> + */
> + reset-gpios = <&tlmm 19 GPIO_ACTIVE_LOW>,
> + <&tlmm 5 GPIO_ACTIVE_LOW>;
> + post-power-on-delay-ms = <50>;
> + };
> +};
> +
> +&apps_rsc {
> + regulators-0 {
> + vdd-bob1-supply = <&vph_pwr>;
> + vdd-bob2-supply = <&vph_pwr>;
> + };
> +
> + regulators-3 {
> + vdd-s4-supply = <&vph_pwr>;
> + vdd-s5-supply = <&vph_pwr>;
> + };
> +
> + regulators-4 {
> + vdd-s4-supply = <&vph_pwr>;
> + };
> +
> + regulators-5 {
> + 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>;
> + };
> +};
> +
> +&gpi_dma1 {
> + status = "okay";
> +};
> +
> +&gpu {
> + status = "okay";
> +};
> +
> +&gpu_zap_shader {
> + firmware-name = "qcom/sm8550/a740_zap.mbn";
> + /* Zap shader doesn't load so is disabled */
> + status = "disabled";
> +};
> +
> +&i2c_master_hub_0 {
> + status = "okay";
> +};
> +
> +&i2c_hub_2 {
> + clock-frequency = <400000>;
> + status = "okay";
> +
> + ptn3222: redriver@43 {
> + compatible = "nxp,ptn3222";
> + reg = <0x43>;
> + #phy-cells = <0>;
> +
> + vdd1v8-supply = <&vreg_l15b_1p8>;
> + vdd3v3-supply = <&vreg_l5b_3p1>;
> +
> + pinctrl-names = "default";
> + pinctrl-0 = <&eusb2_repeater_reset_default>;
> +
> + reset-gpios = <&pm8550vs_d_gpios 4 GPIO_ACTIVE_LOW>;
> + };
> +};
> +
> +&ipa {
> + qcom,gsi-loader = "self";
> + memory-region = <&ipa_fw_mem>;
> + firmware-name = "qcom/sm8550/ipa_fws.mbn";
> + status = "okay";
> +};
> +
> +&iris {
> + status = "okay";
> +};
> +
> +&lpass_rxmacro {
> + status = "disabled";
> +};
> +
> +&lpass_tlmm {
> + status = "disabled";
> +};
> +
> +&lpass_txmacro {
> + status = "disabled";
> +};
> +
> +&lpass_vamacro {
> + status = "disabled";
> +};
> +
> +&lpass_wsa2macro {
> + status = "disabled";
> +};
> +
> +&lpass_wsamacro {
> + status = "disabled";
> +};
Why are all these LPASS codecs disabled?
Best regards,
Krzysztof