[PATCH 0/7] Xperia 1 V support
DTS for the phone and some fly-by fixes
Patch 1 for Mark/sound Rest for qcom
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- Konrad Dybcio (7): dt-bindings: ASoC: cs35l45: Add interrupts dt-bindings: arm: qcom: Add Xperia 1 V arm64: dts: qcom: sm8550: Mark QUPs and GPI dma-coherent arm64: dts: qcom: sm8550: Mark APPS SMMU as dma-coherent arm64: dts: qcom: sm8550: Add missing DWC3 quirks arm64: dts: qcom: sm8550: Mark DWC3 as dma-coherent arm64: dts: qcom: Add SM8550 Xperia 1 V
Documentation/devicetree/bindings/arm/qcom.yaml | 1 + .../devicetree/bindings/sound/cirrus,cs35l45.yaml | 3 + arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts | 779 +++++++++++++++++++++ arch/arm64/boot/dts/qcom/sm8550.dtsi | 20 +- 5 files changed, 801 insertions(+), 3 deletions(-) --- base-commit: ae00c445390b349e070a64dc62f08aa878db7248 change-id: 20240210-topic-1v-18e9697d2056
Best regards,
This chip seems to have an IRQ line, let us describe it.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml | 3 +++ 1 file changed, 3 insertions(+)
diff --git a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml index 4c9acb8d4c4c..70f6c62aedca 100644 --- a/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml +++ b/Documentation/devicetree/bindings/sound/cirrus,cs35l45.yaml @@ -25,6 +25,9 @@ properties: reg: maxItems: 1
+ interrupts: + maxItems: 1 + '#sound-dai-cells': const: 1
On 12/02/2024 14:10, Konrad Dybcio wrote:
This chip seems to have an IRQ line, let us describe it.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
Subject: ASoC: dt-bindings: cs35l45......
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org
Best regards, Krzysztof
Konrad,
On Feb 12, 2024, at 7:25 AM, Krzysztof Kozlowski krzysztof.kozlowski@linaro.org wrote:
On 12/02/2024 14:10, Konrad Dybcio wrote:
This chip seems to have an IRQ line, let us describe it.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
Subject: ASoC: dt-bindings: cs35l45……
ditto
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org
Acked-by: Ricardo Rivera-Matos <rriveram@opensource.cirrus.com mailto:rriveram@opensource.cirrus.com>
Best regards, Krzysztof
Thanks, Ricardo
Document the SM8550 SONY Xperia 1 V (PDX234) board.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- Documentation/devicetree/bindings/arm/qcom.yaml | 1 + 1 file changed, 1 insertion(+)
diff --git a/Documentation/devicetree/bindings/arm/qcom.yaml b/Documentation/devicetree/bindings/arm/qcom.yaml index 2b993b4c51dc..fada660257ed 100644 --- a/Documentation/devicetree/bindings/arm/qcom.yaml +++ b/Documentation/devicetree/bindings/arm/qcom.yaml @@ -1002,6 +1002,7 @@ properties: - qcom,sm8550-hdk - qcom,sm8550-mtp - qcom,sm8550-qrd + - sony,pdx234 - const: qcom,sm8550
- items:
On 12/02/2024 14:10, Konrad Dybcio wrote:
Document the SM8550 SONY Xperia 1 V (PDX234) board.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
Acked-by: Krzysztof Kozlowski krzysztof.kozlowski@linaro.org
Best regards, Krzysztof
These peripherals are DMA-coherent on 8550. Mark them as such.
Interestingly enough, the I2C master hubs are not.
Fixes: ffc50b2d3828 ("arm64: dts: qcom: Add base SM8550 dtsi") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index b8f1c7f97e48..d696ec6c6850 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -812,6 +812,7 @@ gpi_dma2: dma-controller@800000 { dma-channels = <12>; dma-channel-mask = <0x3e>; iommus = <&apps_smmu 0x436 0>; + dma-coherent; status = "disabled"; };
@@ -823,6 +824,7 @@ qupv3_id_1: geniqup@8c0000 { clocks = <&gcc GCC_QUPV3_WRAP_2_M_AHB_CLK>, <&gcc GCC_QUPV3_WRAP_2_S_AHB_CLK>; iommus = <&apps_smmu 0x423 0>; + dma-coherent; #address-cells = <2>; #size-cells = <2>; status = "disabled"; @@ -1322,6 +1324,7 @@ gpi_dma1: dma-controller@a00000 { dma-channels = <12>; dma-channel-mask = <0x1e>; iommus = <&apps_smmu 0xb6 0>; + dma-coherent; status = "disabled"; };
@@ -1335,6 +1338,7 @@ qupv3_id_0: geniqup@ac0000 { iommus = <&apps_smmu 0xa3 0>; interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>; interconnect-names = "qup-core"; + dma-coherent; #address-cells = <2>; #size-cells = <2>; status = "disabled";
On 12/02/2024 14:10, Konrad Dybcio wrote:
These peripherals are DMA-coherent on 8550. Mark them as such.
Interestingly enough, the I2C master hubs are not.
Yeah they are not DMA capable at all
Fixes: ffc50b2d3828 ("arm64: dts: qcom: Add base SM8550 dtsi") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
arch/arm64/boot/dts/qcom/sm8550.dtsi | 4 ++++ 1 file changed, 4 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index b8f1c7f97e48..d696ec6c6850 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -812,6 +812,7 @@ gpi_dma2: dma-controller@800000 { dma-channels = <12>; dma-channel-mask = <0x3e>; iommus = <&apps_smmu 0x436 0>;
};dma-coherent; status = "disabled";
@@ -823,6 +824,7 @@ qupv3_id_1: geniqup@8c0000 { clocks = <&gcc GCC_QUPV3_WRAP_2_M_AHB_CLK>, <&gcc GCC_QUPV3_WRAP_2_S_AHB_CLK>; iommus = <&apps_smmu 0x423 0>;
dma-coherent; #address-cells = <2>; #size-cells = <2>; status = "disabled";
@@ -1322,6 +1324,7 @@ gpi_dma1: dma-controller@a00000 { dma-channels = <12>; dma-channel-mask = <0x1e>; iommus = <&apps_smmu 0xb6 0>;
};dma-coherent; status = "disabled";
@@ -1335,6 +1338,7 @@ qupv3_id_0: geniqup@ac0000 { iommus = <&apps_smmu 0xa3 0>; interconnects = <&clk_virt MASTER_QUP_CORE_1 0 &clk_virt SLAVE_QUP_CORE_1 0>; interconnect-names = "qup-core";
dma-coherent; #address-cells = <2>; #size-cells = <2>; status = "disabled";
Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
Like on earlier flagship Qualcomm SoCs, the SMMU is dma-coherent. Mark it as such.
Fixes: ffc50b2d3828 ("arm64: dts: qcom: Add base SM8550 dtsi") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index d696ec6c6850..868d48b85555 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3934,6 +3934,7 @@ apps_smmu: iommu@15000000 { <GIC_SPI 694 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 695 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 696 IRQ_TYPE_LEVEL_HIGH>; + dma-coherent; };
intc: interrupt-controller@17100000 {
On 12/02/2024 14:10, Konrad Dybcio wrote:
Like on earlier flagship Qualcomm SoCs, the SMMU is dma-coherent. Mark it as such.
Fixes: ffc50b2d3828 ("arm64: dts: qcom: Add base SM8550 dtsi") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
arch/arm64/boot/dts/qcom/sm8550.dtsi | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index d696ec6c6850..868d48b85555 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3934,6 +3934,7 @@ apps_smmu: iommu@15000000 { <GIC_SPI 694 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 695 IRQ_TYPE_LEVEL_HIGH>, <GIC_SPI 696 IRQ_TYPE_LEVEL_HIGH>;
dma-coherent;
};
intc: interrupt-controller@17100000 {
Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
As expected, Qualcomm DWC3 implementation come with a sizable number of quirks. Make sure to account for all of them.
Fixes: 7f7e5c1b037f ("arm64: dts: qcom: sm8550: Add USB PHYs and controller nodes") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index 868d48b85555..925e56317fb0 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3193,12 +3193,20 @@ usb_1_dwc3: usb@a600000 { reg = <0x0 0x0a600000 0x0 0xcd00>; interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; iommus = <&apps_smmu 0x40 0x0>; - snps,dis_u2_susphy_quirk; - snps,dis_enblslpm_quirk; - snps,usb3_lpm_capable; phys = <&usb_1_hsphy>, <&usb_dp_qmpphy QMP_USB43DP_USB3_PHY>; phy-names = "usb2-phy", "usb3-phy"; + snps,hird-threshold = /bits/ 8 <0x0>; + snps,usb2-gadget-lpm-disable; + snps,dis_u2_susphy_quirk; + snps,dis_enblslpm_quirk; + snps,dis-u1-entry-quirk; + snps,dis-u2-entry-quirk; + snps,is-utmi-l1-suspend; + snps,usb3_lpm_capable; + snps,usb2-lpm-disable; + snps,has-lpm-erratum; + tx-fifo-resize;
ports { #address-cells = <1>;
On 12/02/2024 14:10, Konrad Dybcio wrote:
As expected, Qualcomm DWC3 implementation come with a sizable number of quirks. Make sure to account for all of them.
Fixes: 7f7e5c1b037f ("arm64: dts: qcom: sm8550: Add USB PHYs and controller nodes") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
arch/arm64/boot/dts/qcom/sm8550.dtsi | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index 868d48b85555..925e56317fb0 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3193,12 +3193,20 @@ usb_1_dwc3: usb@a600000 { reg = <0x0 0x0a600000 0x0 0xcd00>; interrupts = <GIC_SPI 133 IRQ_TYPE_LEVEL_HIGH>; iommus = <&apps_smmu 0x40 0x0>;
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
snps,usb3_lpm_capable; phys = <&usb_1_hsphy>, <&usb_dp_qmpphy QMP_USB43DP_USB3_PHY>; phy-names = "usb2-phy", "usb3-phy";
snps,hird-threshold = /bits/ 8 <0x0>;
snps,usb2-gadget-lpm-disable;
snps,dis_u2_susphy_quirk;
snps,dis_enblslpm_quirk;
snps,dis-u1-entry-quirk;
snps,dis-u2-entry-quirk;
snps,is-utmi-l1-suspend;
snps,usb3_lpm_capable;
snps,usb2-lpm-disable;
snps,has-lpm-erratum;
tx-fifo-resize; ports { #address-cells = <1>;
Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
In a fairly new development, Qualcomm somehow made the DWC3 block cache-coherent. Annotate that.
Fixes: 7f7e5c1b037f ("arm64: dts: qcom: sm8550: Add USB PHYs and controller nodes") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- arch/arm64/boot/dts/qcom/sm8550.dtsi | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index 925e56317fb0..e845c8814fb9 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3207,6 +3207,7 @@ usb_1_dwc3: usb@a600000 { snps,usb2-lpm-disable; snps,has-lpm-erratum; tx-fifo-resize; + dma-coherent;
ports { #address-cells = <1>;
On 12/02/2024 14:10, Konrad Dybcio wrote:
In a fairly new development, Qualcomm somehow made the DWC3 block cache-coherent. Annotate that.
Fixes: 7f7e5c1b037f ("arm64: dts: qcom: sm8550: Add USB PHYs and controller nodes") Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
arch/arm64/boot/dts/qcom/sm8550.dtsi | 1 + 1 file changed, 1 insertion(+)
diff --git a/arch/arm64/boot/dts/qcom/sm8550.dtsi b/arch/arm64/boot/dts/qcom/sm8550.dtsi index 925e56317fb0..e845c8814fb9 100644 --- a/arch/arm64/boot/dts/qcom/sm8550.dtsi +++ b/arch/arm64/boot/dts/qcom/sm8550.dtsi @@ -3207,6 +3207,7 @@ usb_1_dwc3: usb@a600000 { snps,usb2-lpm-disable; snps,has-lpm-erratum; tx-fifo-resize;
dma-coherent; ports { #address-cells = <1>;
Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
Add support for Sony Xperia 1 V, a.k.a PDX234. This device is a part of the SoMC SM8550 Yodo platform.
This commit brings support for: * Remoteprocs (sans modem for now) * Flash LED (the notification LED is gone :((((() * SD Card * USB (*including SuperSpeed*) + PMIC_GLINK (it's funky, requires a replug with an cable flip sometimes..) * Most regulators * Part of I2C-connected peripherals (notably no touch due to a driver bug) * PCIe0 (PCIe1 is unused)
Do note display via simplefb is not supported, as the display is blanked upon exiting XBL.
To create a working boot image, you need to run: cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sm8550-sony-xperia-\ yodo-pdx234.dtb > .Image.gz-dtb
mkbootimg \ --kernel .Image.gz-dtb \ --ramdisk some_initrd.img \ --pagesize 4096 \ --base 0x0 \ --kernel_offset 0x8000 \ --ramdisk_offset 0x1000000 \ --tags_offset 0x100 \ --cmdline "SOME_CMDLINE" \ --dtb_offset 0x1f00000 \ --header_version 2 \ -o boot.img-sony-xperia-pdx234
Then, you need to flash it on the device and get rid of all the vendor_boot/dtbo mess:
// You have to either pull vbmeta{"","_system"} from // /dev/block/bootdevice/by-name/ or build one as a part of AOSP build process fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img fastboot --disable-verity --disable-verification flash vbmeta_system \ vbmeta_system.img
fastboot flash boot boot.img-sony-xperia-pdx234 fastboot erase vendor_boot fastboot erase recovery fastboot flash dtbo emptydtbo.img fastboot erase init_boot // ? I don't remember if it's necessary, sorry fastboot continue
Where emptydtbo.img is a tiny file that consists of 2 bytes (all zeroes), doing a "fastboot erase" won't cut it, the bootloader will go crazy and things will fall apart when it tries to overlay random bytes from an empty partition onto a perfectly good appended DTB.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org --- arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts | 779 +++++++++++++++++++++ 2 files changed, 780 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index f7c5662213e4..9bbea531660d 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -237,6 +237,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8450-sony-xperia-nagara-pdx224.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-hdk.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb +dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) += x1e80100-crd.dtb diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts new file mode 100644 index 000000000000..85e0d3d66e16 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts @@ -0,0 +1,779 @@ +// SPDX-License-Identifier: BSD-3-Clause +/* + * Copyright (c) 2023, Linaro Limited + */ + +/dts-v1/; + +#include <dt-bindings/firmware/qcom,scm.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include <dt-bindings/sound/cs35l45.h> +#include "sm8550.dtsi" +#include "pm8010.dtsi" +#include "pm8550.dtsi" +#include "pm8550b.dtsi" +#define PMK8550VE_SID 5 +#include "pm8550ve.dtsi" +#include "pm8550vs.dtsi" +#include "pmk8550.dtsi" +/* TODO: Only one SID of PMR735D seems accessible? */ + +/delete-node/ &hwfence_shbuf; +/delete-node/ &mpss_mem; +/delete-node/ &rmtfs_mem; +/ { + model = "Sony Xperia 1 V"; + compatible = "sony,pdx234", "qcom,sm8550"; + chassis-type = "handset"; + + aliases { + i2c0 = &i2c0; + i2c4 = &i2c4; + i2c10 = &i2c10; + i2c11 = &i2c11; + i2c16 = &i2c_hub_2; + serial0 = &uart7; + }; + + chosen { + stdout-path = "serial0:115200n8"; + }; + + gpio-keys { + compatible = "gpio-keys"; + label = "gpio-keys"; + + pinctrl-0 = <&focus_n &snapshot_n &vol_down_n>; + pinctrl-names = "default"; + + key-camera-focus { + label = "Camera Focus"; + linux,code = <KEY_CAMERA_FOCUS>; + gpios = <&pm8550b_gpios 8 GPIO_ACTIVE_LOW>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + + key-camera-snapshot { + label = "Camera Snapshot"; + gpios = <&pm8550b_gpios 7 GPIO_ACTIVE_LOW>; + linux,code = <KEY_CAMERA>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + + key-volume-down { + label = "Volume Down"; + linux,code = <KEY_VOLUMEDOWN>; + gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>; + debounce-interval = <15>; + linux,can-disable; + wakeup-source; + }; + }; + + pmic-glink { + compatible = "qcom,sm8550-pmic-glink", "qcom,pmic-glink"; + orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>; + #address-cells = <1>; + #size-cells = <0>; + + connector@0 { + compatible = "usb-c-connector"; + reg = <0>; + power-role = "dual"; + data-role = "dual"; + + ports { + #address-cells = <1>; + #size-cells = <0>; + + port@0 { + reg = <0>; + + pmic_glink_hs_in: endpoint { + remote-endpoint = <&usb_1_dwc3_hs>; + }; + }; + + port@1 { + reg = <1>; + + pmic_glink_ss_in: endpoint { + remote-endpoint = <&usb_dp_qmpphy_out>; + }; + }; + }; + }; + }; + + reserved-memory { + mpss_mem: mpss-region@89800000 { + reg = <0x0 0x89800000 0x0 0x10800000>; + no-map; + }; + + splash@b8000000 { + reg = <0x0 0xb8000000 0x0 0x2b00000>; + no-map; + }; + + hwfence_shbuf: hwfence-shbuf-region@e6440000 { + reg = <0x0 0xe6440000 0x0 0x2dd000>; + no-map; + }; + + rmtfs_mem: memory@f8b00000 { + compatible = "qcom,rmtfs-mem"; + reg = <0x0 0xf8b00000 0x0 0x280000>; + no-map; + + qcom,client-id = <1>; + qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>; + }; + + ramoops@ffd00000 { + compatible = "ramoops"; + reg = <0x0 0xffd00000 0x0 0xc0000>; + console-size = <0x40000>; + record-size = <0x1000>; + pmsg-size = <0x40000>; + ecc-size = <16>; + }; + + rdtag-store-region@ffdc0000 { + reg = <0x0 0xffdc0000 0x0 0x40000>; + no-map; + }; + }; + + 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; + }; +}; + +&apps_rsc { + regulators-0 { + compatible = "qcom,pm8550-rpmh-regulators"; + qcom,pmic-id = "b"; + + pm8550_bob1: bob1 { + regulator-name = "pm8550_bob1"; + regulator-min-microvolt = <3416000>; + regulator-max-microvolt = <3960000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + /* TODO: bob2 @ 2.704-3.008V doesn't fall into the vreg driver constraints */ + + pm8550_l1: ldo1 { + regulator-name = "pm8550_l1"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l2: ldo2 { + regulator-name = "pm8550_l2"; + regulator-min-microvolt = <3008000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + /* L4 exists in cmd-db, but the board seems to crash on access */ + + pm8550_l5: ldo5 { + regulator-name = "pm8550_l5"; + regulator-min-microvolt = <3104000>; + regulator-max-microvolt = <3104000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l6: ldo6 { + regulator-name = "pm8550_l6"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l7: ldo7 { + regulator-name = "pm8550_l7"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l8: ldo8 { + regulator-name = "pm8550_l8"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l9: ldo9 { + regulator-name = "pm8550_l9"; + regulator-min-microvolt = <2960000>; + regulator-max-microvolt = <3008000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l10: ldo10 { + regulator-name = "pm8550_l10"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l11: ldo11 { + regulator-name = "pm8550_l11"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1504000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l12: ldo12 { + regulator-name = "pm8550_l12"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l13: ldo13 { + regulator-name = "pm8550_l13"; + regulator-min-microvolt = <3000000>; + regulator-max-microvolt = <3000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l14: ldo14 { + regulator-name = "pm8550_l14"; + regulator-min-microvolt = <3304000>; + regulator-max-microvolt = <3304000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l15: ldo15 { + regulator-name = "pm8550_l15"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <1800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l16: ldo16 { + regulator-name = "pm8550_l16"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550_l17: ldo17 { + regulator-name = "pm8550_l17"; + regulator-min-microvolt = <2504000>; + regulator-max-microvolt = <2504000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-1 { + compatible = "qcom,pm8550vs-rpmh-regulators"; + qcom,pmic-id = "c"; + + pm8550vs_0_l1: ldo1 { + regulator-name = "pm8550vs_0_l1"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_0_l3: ldo3 { + regulator-name = "pm8550vs_0_l3"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-2 { + compatible = "qcom,pm8550vs-rpmh-regulators"; + qcom,pmic-id = "d"; + + pm8550vs_1_l1: ldo1 { + regulator-name = "pm8550vs_1_l1"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <920000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + /* L3 exists in cmd-db, but the board seems to crash on access */ + }; + + regulators-3 { + compatible = "qcom,pm8550vs-rpmh-regulators"; + qcom,pmic-id = "e"; + + pm8550vs_2_s4: smps4 { + regulator-name = "pm8550vs_2_s4"; + regulator-min-microvolt = <904000>; + regulator-max-microvolt = <984000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_2_s5: smps5 { + regulator-name = "pm8550vs_2_s5"; + regulator-min-microvolt = <1010000>; + regulator-max-microvolt = <1120000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_2_l1: ldo1 { + regulator-name = "pm8550vs_2_l1"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_2_l2: ldo2 { + regulator-name = "pm8550vs_2_l2"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <968000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_2_l3: ldo3 { + regulator-name = "pm8550vs_2_l3"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-4 { + compatible = "qcom,pm8550ve-rpmh-regulators"; + qcom,pmic-id = "f"; + + pm8550ve_s4: smps4 { + regulator-name = "pm8550ve_s4"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <700000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550ve_l1: ldo1 { + regulator-name = "pm8550ve_l1"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550ve_l2: ldo2 { + regulator-name = "pm8550ve_l2"; + regulator-min-microvolt = <880000>; + regulator-max-microvolt = <912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550ve_l3: ldo3 { + regulator-name = "pm8550ve_l3"; + regulator-min-microvolt = <912000>; + regulator-max-microvolt = <912000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + regulators-5 { + compatible = "qcom,pm8550vs-rpmh-regulators"; + qcom,pmic-id = "g"; + + pm8550vs_3_s1: smps1 { + regulator-name = "pm8550vs_3_s1"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1300000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_s2: smps2 { + regulator-name = "pm8550vs_3_s2"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1036000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_s3: smps3 { + regulator-name = "pm8550vs_3_s3"; + regulator-min-microvolt = <300000>; + regulator-max-microvolt = <1004000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_s4: smps4 { + regulator-name = "pm8550vs_3_s4"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1352000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_s5: smps5 { + regulator-name = "pm8550vs_3_s5"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1004000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_s6: smps6 { + regulator-name = "pm8550vs_3_s6"; + regulator-min-microvolt = <1800000>; + regulator-max-microvolt = <2000000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_l1: ldo1 { + regulator-name = "pm8550vs_3_l1"; + regulator-min-microvolt = <1144000>; + regulator-max-microvolt = <1256000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_l2: ldo2 { + regulator-name = "pm8550vs_3_l2"; + regulator-min-microvolt = <1104000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + + pm8550vs_3_l3: ldo3 { + regulator-name = "pm8550vs_3_l3"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <1200000>; + regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>; + }; + }; + + /* TODO: Unknown PMIC @ k, l, PM8010 @ m, n */ +}; + +&gpi_dma1 { + status = "okay"; +}; + +&gpi_dma2 { + status = "okay"; +}; + +&i2c_hub_2 { + clock-frequency = <400000>; + status = "okay"; + + pmic@75 { + compatible = "dlg,slg51000"; + reg = <0x75>; + dlg,cs-gpios = <&pm8550vs_g_gpios 4 GPIO_ACTIVE_HIGH>; + + pinctrl-0 = <&cam_pwr_a_cs>; + pinctrl-names = "default"; + + regulators { + slg51000_a_ldo1: ldo1 { + regulator-name = "slg51000_a_ldo1"; + regulator-min-microvolt = <2400000>; + regulator-max-microvolt = <3300000>; + }; + + slg51000_a_ldo2: ldo2 { + regulator-name = "slg51000_a_ldo2"; + regulator-min-microvolt = <2400000>; + regulator-max-microvolt = <3300000>; + }; + + slg51000_a_ldo3: ldo3 { + regulator-name = "slg51000_a_ldo3"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <3750000>; + }; + + slg51000_a_ldo4: ldo4 { + regulator-name = "slg51000_a_ldo4"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <3750000>; + }; + + slg51000_a_ldo5: ldo5 { + regulator-name = "slg51000_a_ldo5"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + }; + + slg51000_a_ldo6: ldo6 { + regulator-name = "slg51000_a_ldo6"; + regulator-min-microvolt = <500000>; + regulator-max-microvolt = <1200000>; + }; + + slg51000_a_ldo7: ldo7 { + regulator-name = "slg51000_a_ldo7"; + regulator-min-microvolt = <1200000>; + regulator-max-microvolt = <3750000>; + }; + }; + }; +}; + +&i2c_master_hub_0 { + status = "okay"; +}; + +&i2c0 { + clock-frequency = <1000000>; + status = "okay"; + + /* NXP NFC @ 28 */ +}; + +&i2c4 { + clock-frequency = <400000>; + status = "okay"; + + /* LX Semi SW82907 touchscreen @ 28 */ +}; + +&i2c10 { + clock-frequency = <1000000>; + status = "okay"; + + /* Cirrus Logic CS40L25A boosted haptics driver @ 40 */ +}; + +&i2c11 { + clock-frequency = <1000000>; + status = "okay"; + + cs35l41_l: speaker-amp@30 { + compatible = "cirrus,cs35l45"; + reg = <0x30>; + interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&tlmm 183 GPIO_ACTIVE_HIGH>; + cirrus,asp-sdout-hiz-ctrl = <(CS35L45_ASP_TX_HIZ_UNUSED | CS35L45_ASP_TX_HIZ_DISABLED)>; + #sound-dai-cells = <1>; + + cirrus,gpio-ctrl2 { + gpio-ctrl = <0x2>; + }; + }; + + cs35l41_r: speaker-amp@31 { + compatible = "cirrus,cs35l45"; + reg = <0x31>; + interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>; + reset-gpios = <&tlmm 183 GPIO_ACTIVE_HIGH>; + cirrus,asp-sdout-hiz-ctrl = <(CS35L45_ASP_TX_HIZ_UNUSED | CS35L45_ASP_TX_HIZ_DISABLED)>; + #sound-dai-cells = <1>; + + cirrus,gpio-ctrl2 { + gpio-ctrl = <0x2>; + }; + }; +}; + +&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"; +}; + +&pcie0_phy { + vdda-phy-supply = <&pm8550vs_2_l1>; + vdda-pll-supply = <&pm8550vs_2_l3>; + + status = "okay"; +}; + +&pm8550_flash { + status = "okay"; + + led-0 { + function = LED_FUNCTION_FLASH; + color = <LED_COLOR_ID_WHITE>; + led-sources = <1>, <4>; + led-max-microamp = <500000>; + flash-max-microamp = <1000000>; + flash-max-timeout-us = <1280000>; + function-enumerator = <0>; + }; + + led-1 { + function = LED_FUNCTION_FLASH; + color = <LED_COLOR_ID_YELLOW>; + led-sources = <2>, <3>; + led-max-microamp = <500000>; + flash-max-microamp = <1000000>; + flash-max-timeout-us = <1280000>; + function-enumerator = <1>; + }; +}; + +&pm8550_gpios { + vol_down_n: volume-down-n-state { + pins = "gpio6"; + function = "normal"; + power-source = <1>; + bias-pull-up; + input-enable; + }; + + sdc2_card_det_n: sd-card-det-n-state { + pins = "gpio12"; + function = "normal"; + power-source = <1>; + bias-pull-down; + output-disable; + input-enable; + }; +}; + +&pm8550b_gpios { + snapshot_n: snapshot-n-state { + pins = "gpio7"; + function = "normal"; + power-source = <1>; + bias-pull-up; + input-enable; + }; + + focus_n: focus-n-state { + pins = "gpio8"; + function = "normal"; + power-source = <1>; + bias-pull-up; + input-enable; + }; +}; + +&pm8550vs_g_gpios { + cam_pwr_a_cs: cam-pwr-a-cs-state { + pins = "gpio4"; + function = "normal"; + power-source = <0x01>; + drive-push-pull; + output-low; + qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>; + }; +}; + +&pm8550b_eusb2_repeater { + qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>; + qcom,tune-usb2-amplitude = /bits/ 8 <0xf>; + qcom,tune-usb2-preem = /bits/ 8 <0x7>; + vdd18-supply = <&pm8550_l15>; + vdd3-supply = <&pm8550_l5>; +}; + +&pon_pwrkey { + status = "okay"; +}; + +&pon_resin { + linux,code = <KEY_VOLUMEUP>; + status = "okay"; +}; + +&qupv3_id_0 { + status = "okay"; +}; + +&qupv3_id_1 { + status = "okay"; +}; + +&remoteproc_adsp { + firmware-name = "qcom/sm8550/Sony/yodo/adsp.mbn", + "qcom/sm8550/Sony/yodo/adsp_dtb.mbn"; + status = "okay"; +}; + +&remoteproc_cdsp { + firmware-name = "qcom/sm8550/Sony/yodo/cdsp.mbn", + "qcom/sm8550/Sony/yodo/cdsp_dtb.mbn"; + status = "okay"; +}; + +&sdhc_2 { + cd-gpios = <&pm8550_gpios 12 GPIO_ACTIVE_HIGH>; + pinctrl-0 = <&sdc2_default &sdc2_card_det_n>; + pinctrl-1 = <&sdc2_sleep &sdc2_card_det_n>; + pinctrl-names = "default", "sleep"; + vmmc-supply = <&pm8550_l9>; + vqmmc-supply = <&pm8550_l8>; + no-sdio; + no-mmc; + status = "okay"; +}; + +&sleep_clk { + clock-frequency = <32000>; +}; + +&tlmm { + gpio-reserved-ranges = <32 8>; +}; + +&uart7 { + status = "okay"; +}; + +&usb_1 { + status = "okay"; +}; + +&usb_1_dwc3 { + dr_mode = "otg"; + usb-role-switch; +}; + +&usb_1_dwc3_hs { + remote-endpoint = <&pmic_glink_hs_in>; +}; + +&usb_1_dwc3_ss { + remote-endpoint = <&usb_dp_qmpphy_usb_ss_in>; +}; + +&usb_1_hsphy { + vdd-supply = <&pm8550vs_2_l1>; + vdda12-supply = <&pm8550vs_2_l3>; + phys = <&pm8550b_eusb2_repeater>; + + status = "okay"; +}; + +&usb_dp_qmpphy { + vdda-phy-supply = <&pm8550vs_2_l3>; + vdda-pll-supply = <&pm8550ve_l3>; + orientation-switch; + + status = "okay"; +}; + +&usb_dp_qmpphy_out { + remote-endpoint = <&pmic_glink_ss_in>; +}; + +&usb_dp_qmpphy_usb_ss_in { + remote-endpoint = <&usb_1_dwc3_ss>; +}; + +&xo_board { + clock-frequency = <76800000>; +};
On 12/02/2024 14:10, Konrad Dybcio wrote:
Add support for Sony Xperia 1 V, a.k.a PDX234. This device is a part of the SoMC SM8550 Yodo platform.
This commit brings support for:
- Remoteprocs (sans modem for now)
- Flash LED (the notification LED is gone :((((()
- SD Card
- USB (*including SuperSpeed*) + PMIC_GLINK (it's funky, requires a replug with an cable flip sometimes..)
- Most regulators
- Part of I2C-connected peripherals (notably no touch due to a
driver bug)
- PCIe0 (PCIe1 is unused)
Do note display via simplefb is not supported, as the display is blanked upon exiting XBL.
To create a working boot image, you need to run: cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sm8550-sony-xperia-\ yodo-pdx234.dtb > .Image.gz-dtb
mkbootimg \ --kernel .Image.gz-dtb \ --ramdisk some_initrd.img \ --pagesize 4096 \ --base 0x0 \ --kernel_offset 0x8000 \ --ramdisk_offset 0x1000000 \ --tags_offset 0x100 \ --cmdline "SOME_CMDLINE" \ --dtb_offset 0x1f00000 \ --header_version 2 \ -o boot.img-sony-xperia-pdx234
Then, you need to flash it on the device and get rid of all the vendor_boot/dtbo mess:
// You have to either pull vbmeta{"","_system"} from // /dev/block/bootdevice/by-name/ or build one as a part of AOSP build process fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img fastboot --disable-verity --disable-verification flash vbmeta_system \ vbmeta_system.img
fastboot flash boot boot.img-sony-xperia-pdx234 fastboot erase vendor_boot fastboot erase recovery fastboot flash dtbo emptydtbo.img fastboot erase init_boot // ? I don't remember if it's necessary, sorry fastboot continue
Where emptydtbo.img is a tiny file that consists of 2 bytes (all zeroes), doing a "fastboot erase" won't cut it, the bootloader will go crazy and things will fall apart when it tries to overlay random bytes from an empty partition onto a perfectly good appended DTB.
DTBc check reports: arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dtb: pcie-1-phy-aux-clk: 'clock-frequency' is a required property from schema $id: http://devicetree.org/schemas/clock/fixed-clock.yaml#
So you'll probably need: &pcie_1_phy_aux_clk { status = "disabled"; };
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts | 779 +++++++++++++++++++++ 2 files changed, 780 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index f7c5662213e4..9bbea531660d 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -237,6 +237,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8450-sony-xperia-nagara-pdx224.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-hdk.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb +dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) += x1e80100-crd.dtb diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts new file mode 100644 index 000000000000..85e0d3d66e16 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts @@ -0,0 +1,779 @@ +// SPDX-License-Identifier: BSD-3-Clause +/*
- Copyright (c) 2023, Linaro Limited
- */
+/dts-v1/;
+#include <dt-bindings/firmware/qcom,scm.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include <dt-bindings/sound/cs35l45.h> +#include "sm8550.dtsi" +#include "pm8010.dtsi" +#include "pm8550.dtsi" +#include "pm8550b.dtsi" +#define PMK8550VE_SID 5 +#include "pm8550ve.dtsi" +#include "pm8550vs.dtsi" +#include "pmk8550.dtsi" +/* TODO: Only one SID of PMR735D seems accessible? */
What's reported by the cpuinfo pmic array ?
<snip>
With the pcie thing fixed: Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
On 2/12/24 18:26, Neil Armstrong wrote:
On 12/02/2024 14:10, Konrad Dybcio wrote:
Add support for Sony Xperia 1 V, a.k.a PDX234. This device is a part of the SoMC SM8550 Yodo platform.
[...]
+/* TODO: Only one SID of PMR735D seems accessible? */
What's reported by the cpuinfo pmic array ?
PMK8550 2.1 PM8550 2.0 PM8550VS 2.0 PM8550VS 2.0 PM8550VS 2.0 PM8550VE 2.0 PM8550VS 2.0 PM8550B 2.0 PMR735D 2.0 PM8010 1.1 PM8010 1.1
Not sure if there's only one or the other one is secure?
<snip>
With the pcie thing fixed: Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
It's gonna be fine with the recent aux clock additions. If you have no further comments, I'll happily ask for this to be merged ;)
Konrad
On 04/04/2024 21:41, Konrad Dybcio wrote:
On 2/12/24 18:26, Neil Armstrong wrote:
On 12/02/2024 14:10, Konrad Dybcio wrote:
Add support for Sony Xperia 1 V, a.k.a PDX234. This device is a part of the SoMC SM8550 Yodo platform.
[...]
+/* TODO: Only one SID of PMR735D seems accessible? */
What's reported by the cpuinfo pmic array ?
PMK8550 2.1 PM8550 2.0 PM8550VS 2.0 PM8550VS 2.0 PM8550VS 2.0 PM8550VE 2.0 PM8550VS 2.0 PM8550B 2.0 PMR735D 2.0 PM8010 1.1 PM8010 1.1
Not sure if there's only one or the other one is secure?
<snip>
With the pcie thing fixed: Reviewed-by: Neil Armstrong neil.armstrong@linaro.org
It's gonna be fine with the recent aux clock additions. If you have no further comments, I'll happily ask for this to be merged ;)
Sure LGTM
Konrad
W dniu 2024-02-12 14:10, Konrad Dybcio napisał(a):
Add support for Sony Xperia 1 V, a.k.a PDX234. This device is a part of the SoMC SM8550 Yodo platform.
This commit brings support for:
- Remoteprocs (sans modem for now)
- Flash LED (the notification LED is gone :((((()
- SD Card
- USB (*including SuperSpeed*) + PMIC_GLINK (it's funky, requires a
replug with an cable flip sometimes..)
- Most regulators
- Part of I2C-connected peripherals (notably no touch due to a
driver bug)
- PCIe0 (PCIe1 is unused)
Do note display via simplefb is not supported, as the display is blanked upon exiting XBL.
I also noticed such behaviour on my S24 Ultra. I was pointed out by Xilin Wu that on SM8450 or newer, the display will be turned off by the bootloader if the node '/reserved-memory/splash_region' does not exist in the device tree. Adding it in the device tree for my phone made the bootloader leave the display on. Maybe it's the same case here?
https://git.codelinaro.org/clo/la/abl/tianocore/edk2/-/blob/LA.VENDOR.1.0.r2...
To create a working boot image, you need to run: cat arch/arm64/boot/Image.gz arch/arm64/boot/dts/qcom/sm8550-sony-xperia-\ yodo-pdx234.dtb > .Image.gz-dtb
mkbootimg \ --kernel .Image.gz-dtb \ --ramdisk some_initrd.img \ --pagesize 4096 \ --base 0x0 \ --kernel_offset 0x8000 \ --ramdisk_offset 0x1000000 \ --tags_offset 0x100 \ --cmdline "SOME_CMDLINE" \ --dtb_offset 0x1f00000 \ --header_version 2 \ -o boot.img-sony-xperia-pdx234
Then, you need to flash it on the device and get rid of all the vendor_boot/dtbo mess:
// You have to either pull vbmeta{"","_system"} from // /dev/block/bootdevice/by-name/ or build one as a part of AOSP build process fastboot --disable-verity --disable-verification flash vbmeta vbmeta.img fastboot --disable-verity --disable-verification flash vbmeta_system \ vbmeta_system.img
fastboot flash boot boot.img-sony-xperia-pdx234 fastboot erase vendor_boot fastboot erase recovery fastboot flash dtbo emptydtbo.img fastboot erase init_boot // ? I don't remember if it's necessary, sorry fastboot continue
Where emptydtbo.img is a tiny file that consists of 2 bytes (all zeroes), doing a "fastboot erase" won't cut it, the bootloader will go crazy and things will fall apart when it tries to overlay random bytes from an empty partition onto a perfectly good appended DTB.
Signed-off-by: Konrad Dybcio konrad.dybcio@linaro.org
arch/arm64/boot/dts/qcom/Makefile | 1 + .../dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts | 779 +++++++++++++++++++++ 2 files changed, 780 insertions(+)
diff --git a/arch/arm64/boot/dts/qcom/Makefile b/arch/arm64/boot/dts/qcom/Makefile index f7c5662213e4..9bbea531660d 100644 --- a/arch/arm64/boot/dts/qcom/Makefile +++ b/arch/arm64/boot/dts/qcom/Makefile @@ -237,6 +237,7 @@ dtb-$(CONFIG_ARCH_QCOM) += sm8450-sony-xperia-nagara-pdx224.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-hdk.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8550-qrd.dtb +dtb-$(CONFIG_ARCH_QCOM) += sm8550-sony-xperia-yodo-pdx234.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-mtp.dtb dtb-$(CONFIG_ARCH_QCOM) += sm8650-qrd.dtb dtb-$(CONFIG_ARCH_QCOM) += x1e80100-crd.dtb diff --git a/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts new file mode 100644 index 000000000000..85e0d3d66e16 --- /dev/null +++ b/arch/arm64/boot/dts/qcom/sm8550-sony-xperia-yodo-pdx234.dts @@ -0,0 +1,779 @@ +// SPDX-License-Identifier: BSD-3-Clause +/*
- Copyright (c) 2023, Linaro Limited
- */
+/dts-v1/;
+#include <dt-bindings/firmware/qcom,scm.h> +#include <dt-bindings/leds/common.h> +#include <dt-bindings/pinctrl/qcom,pmic-gpio.h> +#include <dt-bindings/regulator/qcom,rpmh-regulator.h> +#include <dt-bindings/sound/cs35l45.h> +#include "sm8550.dtsi" +#include "pm8010.dtsi" +#include "pm8550.dtsi" +#include "pm8550b.dtsi" +#define PMK8550VE_SID 5 +#include "pm8550ve.dtsi" +#include "pm8550vs.dtsi" +#include "pmk8550.dtsi" +/* TODO: Only one SID of PMR735D seems accessible? */
+/delete-node/ &hwfence_shbuf; +/delete-node/ &mpss_mem; +/delete-node/ &rmtfs_mem; +/ {
- model = "Sony Xperia 1 V";
- compatible = "sony,pdx234", "qcom,sm8550";
- chassis-type = "handset";
- aliases {
i2c0 = &i2c0;
i2c4 = &i2c4;
i2c10 = &i2c10;
i2c11 = &i2c11;
i2c16 = &i2c_hub_2;
serial0 = &uart7;
- };
- chosen {
stdout-path = "serial0:115200n8";
- };
- gpio-keys {
compatible = "gpio-keys";
label = "gpio-keys";
pinctrl-0 = <&focus_n &snapshot_n &vol_down_n>;
pinctrl-names = "default";
key-camera-focus {
label = "Camera Focus";
linux,code = <KEY_CAMERA_FOCUS>;
gpios = <&pm8550b_gpios 8 GPIO_ACTIVE_LOW>;
debounce-interval = <15>;
linux,can-disable;
wakeup-source;
};
key-camera-snapshot {
label = "Camera Snapshot";
gpios = <&pm8550b_gpios 7 GPIO_ACTIVE_LOW>;
linux,code = <KEY_CAMERA>;
debounce-interval = <15>;
linux,can-disable;
wakeup-source;
};
key-volume-down {
label = "Volume Down";
linux,code = <KEY_VOLUMEDOWN>;
gpios = <&pm8550_gpios 6 GPIO_ACTIVE_LOW>;
debounce-interval = <15>;
linux,can-disable;
wakeup-source;
};
- };
- pmic-glink {
compatible = "qcom,sm8550-pmic-glink", "qcom,pmic-glink";
orientation-gpios = <&tlmm 11 GPIO_ACTIVE_HIGH>;
#address-cells = <1>;
#size-cells = <0>;
connector@0 {
compatible = "usb-c-connector";
reg = <0>;
power-role = "dual";
data-role = "dual";
ports {
#address-cells = <1>;
#size-cells = <0>;
port@0 {
reg = <0>;
pmic_glink_hs_in: endpoint {
remote-endpoint = <&usb_1_dwc3_hs>;
};
};
port@1 {
reg = <1>;
pmic_glink_ss_in: endpoint {
remote-endpoint = <&usb_dp_qmpphy_out>;
};
};
};
};
- };
- reserved-memory {
mpss_mem: mpss-region@89800000 {
reg = <0x0 0x89800000 0x0 0x10800000>;
no-map;
};
splash@b8000000 {
reg = <0x0 0xb8000000 0x0 0x2b00000>;
no-map;
};
hwfence_shbuf: hwfence-shbuf-region@e6440000 {
reg = <0x0 0xe6440000 0x0 0x2dd000>;
no-map;
};
rmtfs_mem: memory@f8b00000 {
compatible = "qcom,rmtfs-mem";
reg = <0x0 0xf8b00000 0x0 0x280000>;
no-map;
qcom,client-id = <1>;
qcom,vmid = <QCOM_SCM_VMID_MSS_MSA>;
};
ramoops@ffd00000 {
compatible = "ramoops";
reg = <0x0 0xffd00000 0x0 0xc0000>;
console-size = <0x40000>;
record-size = <0x1000>;
pmsg-size = <0x40000>;
ecc-size = <16>;
};
rdtag-store-region@ffdc0000 {
reg = <0x0 0xffdc0000 0x0 0x40000>;
no-map;
};
- };
- 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;
- };
+};
+&apps_rsc {
- regulators-0 {
compatible = "qcom,pm8550-rpmh-regulators";
qcom,pmic-id = "b";
pm8550_bob1: bob1 {
regulator-name = "pm8550_bob1";
regulator-min-microvolt = <3416000>;
regulator-max-microvolt = <3960000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
/* TODO: bob2 @ 2.704-3.008V doesn't fall into the vreg driver
constraints */
pm8550_l1: ldo1 {
regulator-name = "pm8550_l1";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l2: ldo2 {
regulator-name = "pm8550_l2";
regulator-min-microvolt = <3008000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
/* L4 exists in cmd-db, but the board seems to crash on access */
pm8550_l5: ldo5 {
regulator-name = "pm8550_l5";
regulator-min-microvolt = <3104000>;
regulator-max-microvolt = <3104000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l6: ldo6 {
regulator-name = "pm8550_l6";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l7: ldo7 {
regulator-name = "pm8550_l7";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l8: ldo8 {
regulator-name = "pm8550_l8";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l9: ldo9 {
regulator-name = "pm8550_l9";
regulator-min-microvolt = <2960000>;
regulator-max-microvolt = <3008000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l10: ldo10 {
regulator-name = "pm8550_l10";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l11: ldo11 {
regulator-name = "pm8550_l11";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1504000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l12: ldo12 {
regulator-name = "pm8550_l12";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l13: ldo13 {
regulator-name = "pm8550_l13";
regulator-min-microvolt = <3000000>;
regulator-max-microvolt = <3000000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l14: ldo14 {
regulator-name = "pm8550_l14";
regulator-min-microvolt = <3304000>;
regulator-max-microvolt = <3304000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l15: ldo15 {
regulator-name = "pm8550_l15";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <1800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l16: ldo16 {
regulator-name = "pm8550_l16";
regulator-min-microvolt = <2800000>;
regulator-max-microvolt = <2800000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550_l17: ldo17 {
regulator-name = "pm8550_l17";
regulator-min-microvolt = <2504000>;
regulator-max-microvolt = <2504000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
- };
- regulators-1 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "c";
pm8550vs_0_l1: ldo1 {
regulator-name = "pm8550vs_0_l1";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_0_l3: ldo3 {
regulator-name = "pm8550vs_0_l3";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
- };
- regulators-2 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "d";
pm8550vs_1_l1: ldo1 {
regulator-name = "pm8550vs_1_l1";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <920000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
/* L3 exists in cmd-db, but the board seems to crash on access */
- };
- regulators-3 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "e";
pm8550vs_2_s4: smps4 {
regulator-name = "pm8550vs_2_s4";
regulator-min-microvolt = <904000>;
regulator-max-microvolt = <984000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_2_s5: smps5 {
regulator-name = "pm8550vs_2_s5";
regulator-min-microvolt = <1010000>;
regulator-max-microvolt = <1120000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_2_l1: ldo1 {
regulator-name = "pm8550vs_2_l1";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_2_l2: ldo2 {
regulator-name = "pm8550vs_2_l2";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <968000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_2_l3: ldo3 {
regulator-name = "pm8550vs_2_l3";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
- };
- regulators-4 {
compatible = "qcom,pm8550ve-rpmh-regulators";
qcom,pmic-id = "f";
pm8550ve_s4: smps4 {
regulator-name = "pm8550ve_s4";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <700000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550ve_l1: ldo1 {
regulator-name = "pm8550ve_l1";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550ve_l2: ldo2 {
regulator-name = "pm8550ve_l2";
regulator-min-microvolt = <880000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550ve_l3: ldo3 {
regulator-name = "pm8550ve_l3";
regulator-min-microvolt = <912000>;
regulator-max-microvolt = <912000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
- };
- regulators-5 {
compatible = "qcom,pm8550vs-rpmh-regulators";
qcom,pmic-id = "g";
pm8550vs_3_s1: smps1 {
regulator-name = "pm8550vs_3_s1";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1300000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_s2: smps2 {
regulator-name = "pm8550vs_3_s2";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1036000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_s3: smps3 {
regulator-name = "pm8550vs_3_s3";
regulator-min-microvolt = <300000>;
regulator-max-microvolt = <1004000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_s4: smps4 {
regulator-name = "pm8550vs_3_s4";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1352000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_s5: smps5 {
regulator-name = "pm8550vs_3_s5";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1004000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_s6: smps6 {
regulator-name = "pm8550vs_3_s6";
regulator-min-microvolt = <1800000>;
regulator-max-microvolt = <2000000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_l1: ldo1 {
regulator-name = "pm8550vs_3_l1";
regulator-min-microvolt = <1144000>;
regulator-max-microvolt = <1256000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_l2: ldo2 {
regulator-name = "pm8550vs_3_l2";
regulator-min-microvolt = <1104000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
pm8550vs_3_l3: ldo3 {
regulator-name = "pm8550vs_3_l3";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <1200000>;
regulator-initial-mode = <RPMH_REGULATOR_MODE_HPM>;
};
- };
- /* TODO: Unknown PMIC @ k, l, PM8010 @ m, n */
+};
+&gpi_dma1 {
- status = "okay";
+};
+&gpi_dma2 {
- status = "okay";
+};
+&i2c_hub_2 {
- clock-frequency = <400000>;
- status = "okay";
- pmic@75 {
compatible = "dlg,slg51000";
reg = <0x75>;
dlg,cs-gpios = <&pm8550vs_g_gpios 4 GPIO_ACTIVE_HIGH>;
pinctrl-0 = <&cam_pwr_a_cs>;
pinctrl-names = "default";
regulators {
slg51000_a_ldo1: ldo1 {
regulator-name = "slg51000_a_ldo1";
regulator-min-microvolt = <2400000>;
regulator-max-microvolt = <3300000>;
};
slg51000_a_ldo2: ldo2 {
regulator-name = "slg51000_a_ldo2";
regulator-min-microvolt = <2400000>;
regulator-max-microvolt = <3300000>;
};
slg51000_a_ldo3: ldo3 {
regulator-name = "slg51000_a_ldo3";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <3750000>;
};
slg51000_a_ldo4: ldo4 {
regulator-name = "slg51000_a_ldo4";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <3750000>;
};
slg51000_a_ldo5: ldo5 {
regulator-name = "slg51000_a_ldo5";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1200000>;
};
slg51000_a_ldo6: ldo6 {
regulator-name = "slg51000_a_ldo6";
regulator-min-microvolt = <500000>;
regulator-max-microvolt = <1200000>;
};
slg51000_a_ldo7: ldo7 {
regulator-name = "slg51000_a_ldo7";
regulator-min-microvolt = <1200000>;
regulator-max-microvolt = <3750000>;
};
};
- };
+};
+&i2c_master_hub_0 {
- status = "okay";
+};
+&i2c0 {
- clock-frequency = <1000000>;
- status = "okay";
- /* NXP NFC @ 28 */
+};
+&i2c4 {
- clock-frequency = <400000>;
- status = "okay";
- /* LX Semi SW82907 touchscreen @ 28 */
+};
+&i2c10 {
- clock-frequency = <1000000>;
- status = "okay";
- /* Cirrus Logic CS40L25A boosted haptics driver @ 40 */
+};
+&i2c11 {
- clock-frequency = <1000000>;
- status = "okay";
- cs35l41_l: speaker-amp@30 {
compatible = "cirrus,cs35l45";
reg = <0x30>;
interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
reset-gpios = <&tlmm 183 GPIO_ACTIVE_HIGH>;
cirrus,asp-sdout-hiz-ctrl = <(CS35L45_ASP_TX_HIZ_UNUSED |
CS35L45_ASP_TX_HIZ_DISABLED)>;
#sound-dai-cells = <1>;
cirrus,gpio-ctrl2 {
gpio-ctrl = <0x2>;
};
- };
- cs35l41_r: speaker-amp@31 {
compatible = "cirrus,cs35l45";
reg = <0x31>;
interrupts-extended = <&tlmm 182 IRQ_TYPE_LEVEL_LOW>;
reset-gpios = <&tlmm 183 GPIO_ACTIVE_HIGH>;
cirrus,asp-sdout-hiz-ctrl = <(CS35L45_ASP_TX_HIZ_UNUSED |
CS35L45_ASP_TX_HIZ_DISABLED)>;
#sound-dai-cells = <1>;
cirrus,gpio-ctrl2 {
gpio-ctrl = <0x2>;
};
- };
+};
+&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";
+};
+&pcie0_phy {
- vdda-phy-supply = <&pm8550vs_2_l1>;
- vdda-pll-supply = <&pm8550vs_2_l3>;
- status = "okay";
+};
+&pm8550_flash {
- status = "okay";
- led-0 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_WHITE>;
led-sources = <1>, <4>;
led-max-microamp = <500000>;
flash-max-microamp = <1000000>;
flash-max-timeout-us = <1280000>;
function-enumerator = <0>;
- };
- led-1 {
function = LED_FUNCTION_FLASH;
color = <LED_COLOR_ID_YELLOW>;
led-sources = <2>, <3>;
led-max-microamp = <500000>;
flash-max-microamp = <1000000>;
flash-max-timeout-us = <1280000>;
function-enumerator = <1>;
- };
+};
+&pm8550_gpios {
- vol_down_n: volume-down-n-state {
pins = "gpio6";
function = "normal";
power-source = <1>;
bias-pull-up;
input-enable;
- };
- sdc2_card_det_n: sd-card-det-n-state {
pins = "gpio12";
function = "normal";
power-source = <1>;
bias-pull-down;
output-disable;
input-enable;
- };
+};
+&pm8550b_gpios {
- snapshot_n: snapshot-n-state {
pins = "gpio7";
function = "normal";
power-source = <1>;
bias-pull-up;
input-enable;
- };
- focus_n: focus-n-state {
pins = "gpio8";
function = "normal";
power-source = <1>;
bias-pull-up;
input-enable;
- };
+};
+&pm8550vs_g_gpios {
- cam_pwr_a_cs: cam-pwr-a-cs-state {
pins = "gpio4";
function = "normal";
power-source = <0x01>;
drive-push-pull;
output-low;
qcom,drive-strength = <PMIC_GPIO_STRENGTH_HIGH>;
- };
+};
+&pm8550b_eusb2_repeater {
- qcom,tune-usb2-disc-thres = /bits/ 8 <0x6>;
- qcom,tune-usb2-amplitude = /bits/ 8 <0xf>;
- qcom,tune-usb2-preem = /bits/ 8 <0x7>;
- vdd18-supply = <&pm8550_l15>;
- vdd3-supply = <&pm8550_l5>;
+};
+&pon_pwrkey {
- status = "okay";
+};
+&pon_resin {
- linux,code = <KEY_VOLUMEUP>;
- status = "okay";
+};
+&qupv3_id_0 {
- status = "okay";
+};
+&qupv3_id_1 {
- status = "okay";
+};
+&remoteproc_adsp {
- firmware-name = "qcom/sm8550/Sony/yodo/adsp.mbn",
"qcom/sm8550/Sony/yodo/adsp_dtb.mbn";
- status = "okay";
+};
+&remoteproc_cdsp {
- firmware-name = "qcom/sm8550/Sony/yodo/cdsp.mbn",
"qcom/sm8550/Sony/yodo/cdsp_dtb.mbn";
- status = "okay";
+};
+&sdhc_2 {
- cd-gpios = <&pm8550_gpios 12 GPIO_ACTIVE_HIGH>;
- pinctrl-0 = <&sdc2_default &sdc2_card_det_n>;
- pinctrl-1 = <&sdc2_sleep &sdc2_card_det_n>;
- pinctrl-names = "default", "sleep";
- vmmc-supply = <&pm8550_l9>;
- vqmmc-supply = <&pm8550_l8>;
- no-sdio;
- no-mmc;
- status = "okay";
+};
+&sleep_clk {
- clock-frequency = <32000>;
+};
+&tlmm {
- gpio-reserved-ranges = <32 8>;
+};
+&uart7 {
- status = "okay";
+};
+&usb_1 {
- status = "okay";
+};
+&usb_1_dwc3 {
- dr_mode = "otg";
- usb-role-switch;
+};
+&usb_1_dwc3_hs {
- remote-endpoint = <&pmic_glink_hs_in>;
+};
+&usb_1_dwc3_ss {
- remote-endpoint = <&usb_dp_qmpphy_usb_ss_in>;
+};
+&usb_1_hsphy {
- vdd-supply = <&pm8550vs_2_l1>;
- vdda12-supply = <&pm8550vs_2_l3>;
- phys = <&pm8550b_eusb2_repeater>;
- status = "okay";
+};
+&usb_dp_qmpphy {
- vdda-phy-supply = <&pm8550vs_2_l3>;
- vdda-pll-supply = <&pm8550ve_l3>;
- orientation-switch;
- status = "okay";
+};
+&usb_dp_qmpphy_out {
- remote-endpoint = <&pmic_glink_ss_in>;
+};
+&usb_dp_qmpphy_usb_ss_in {
- remote-endpoint = <&usb_1_dwc3_ss>;
+};
+&xo_board {
- clock-frequency = <76800000>;
+};
On Mon, 12 Feb 2024 14:10:08 +0100, Konrad Dybcio wrote:
DTS for the phone and some fly-by fixes
Patch 1 for Mark/sound Rest for qcom
Applied to
https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next
Thanks!
[1/7] dt-bindings: ASoC: cs35l45: Add interrupts commit: d0611f617d823a87f04186ad165e2990208c040b
All being well this means that it will be integrated into the linux-next tree (usually sometime in the next 24 hours) and sent to Linus during the next merge window (or sooner if it is a bug fix), however if problems are discovered then the patch may be dropped or reverted.
You may get further e-mails resulting from automated or manual testing and review of the tree, please engage with people reporting problems and send followup patches addressing any issues that are reported if needed.
If any updates are required or you are submitting further changes they should be sent as incremental updates against current git, existing patches will not be replaced.
Please add any relevant lists and maintainers to the CCs when replying to this mail.
Thanks, Mark
On Mon, 12 Feb 2024 14:10:08 +0100, Konrad Dybcio wrote:
DTS for the phone and some fly-by fixes
Patch 1 for Mark/sound Rest for qcom
Applied, thanks!
[2/7] dt-bindings: arm: qcom: Add Xperia 1 V commit: 212729551c4186a1a1cbd80379375b1b54488369 [3/7] arm64: dts: qcom: sm8550: Mark QUPs and GPI dma-coherent commit: 91fc74458d833dbc999aa04ca34c2a197711a0b6 [4/7] arm64: dts: qcom: sm8550: Mark APPS SMMU as dma-coherent commit: 93395f9a8d52b89868d75e278adaf002f99dec22 [5/7] arm64: dts: qcom: sm8550: Add missing DWC3 quirks commit: d18b5477dcea7775a562b3ba7aaa68772c8980ba [6/7] arm64: dts: qcom: sm8550: Mark DWC3 as dma-coherent commit: 6e4f7e53991ca7e70dc7d5d9d66c833091e1f6ae [7/7] arm64: dts: qcom: Add SM8550 Xperia 1 V commit: 39c596304e44781c1950ea0cbf178d6433ff9c71
Best regards,
participants (8)
-
Bjorn Andersson
-
David Wronek
-
Konrad Dybcio
-
Krzysztof Kozlowski
-
Mark Brown
-
Neil Armstrong
-
neil.armstrong@linaro.org
-
Rivera-Matos, Ricardo