[PATCH v9 0/4] Add MSM8939 SoC support with two devices

From: Bryan O'Donoghue
Date: Fri Apr 07 2023 - 15:49:29 EST


V9:
- Fixes name of tsens
s4 is not present
s4->s5
s5->s6
s6->s7
s7->s8
s8->s9
I erroneously thought the last sensor needed to be brought in but,
as has been pointed out to me, the last sensor isn't used, so
no need to support the reading and reassembly of the non-contiguous
calibration data - Stephan/Dmitry

- pronto/s//wcnss - Stephan

- tulip dr_mode = "otg" not dr_mode = "device"
I set the value to device for debug purposes but the role-switch
works just fine and should be upstream - Stephan

- fixed alphabetisation in pm8939-8916.dtsi - bod

Bootable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/linux-next-23-04-07-msm8939-nocpr
Previous: https://lore.kernel.org/linux-arm-msm/20230330153222.2875121-1-bryan.odonoghue@xxxxxxxxxx/

git diff linux-next-23-03-27-msm8939-nocpr -- arch/arm64/boot/dts/qcom/*39*

V8:
- Addresses all of Stephan's comments from v7
- Moves M4 Aqua display to a separate series
- Retains s4_p1/p2 done on purpose I believe
- Adds Konrad's RB as indicated

Bootable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/linux-next-23-03-27-msm8939-nocpr
Previous: https://lore.kernel.org/lkml/20230223153655.262783-1-bryan.odonoghue@xxxxxxxxxx/

V7:
- Addresses all of Konrad's asks on V6
- Adds Konrad's RB for patch #3
Bootable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/linux-next-23-02-23-msm8939-nocpr
Previous: https://lore.kernel.org/lkml/20230222120411.55197-2-bryan.odonoghue@xxxxxxxxxx/T/

V6:
- Adds Krzysztof's Ack for Square vendor addition - Krzysztof
- Incorporates all of Stephan's comments from V5, including
dropping CPR dummy given the dependent patch [1] has been merged, now.

Bootable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/linux-next-23-02-21-msm8939-nocpr
Previous: https://lore.kernel.org/lkml/20230206012336.2130341-1-bryan.odonoghue@xxxxxxxxxx/T/
[1]: https://lore.kernel.org/linux-arm-msm/20230208153913.24436-2-ansuelsmth@xxxxxxxxx/

V5:
- Adds Square as a vendor - Krzysztof

- typec_pd: usb-pd@38 - Krzysztof

- Drops gcc clock controller extension. It looks like phy0 actually
provides a PLL to phy1 for its byte clock. - Bryan, Krzysztof, Stephan

- Adds RB Konrad as indicated - Konrad

- wcnss VDDMX_AO -> VDDMX - Bjorn

- Adds dsi_phy0 as clock-parent to dsi1

- mdss interconnect drops Androidism "register-mem" - Stephan

- cpu power-domain. I've retained the "dummy" cpr reference to
satiate dtbs_check [1] but renamed &vreg_cpr_stub to remove any confusion
between now and when we finish off CPR on 8939.

Bootable: https://git.codelinaro.org/bryan.odonoghue/kernel/-/commits/linux-next-23-02-02-msm8939-nocpr
Previous: https://lore.kernel.org/linux-arm-msm/20230123023127.1186619-1-bryan.odonoghue@xxxxxxxxxx/
[1] https://lore.kernel.org/linux-arm-msm/20230126150026.14590-1-ansuelsmth@xxxxxxxxx/

V4:
- Adds Krzysztof's RB to snoc-mm
- Re-orders alphabetically missed nodes in previous iteration - Bjorn
- Adds LK address/size cells comment - Bjorn

- Left _AO for wcnss as downstream reference uses this - Bjorn/Bryan
- Uses qcom,ids.h and QCOM_ID_SOCNAME for qcom,msm-id - Bjorn
- Revises comment from "Regulator" to "Power supply" - Bjorn
- Leaves dummy power-domain reference in cpu defintion as this

- Relabels "cpu" to "CPU" to be more consistent with other dtsi - Bryan
- Moves msm8939 gcc to its own yaml file to capture 8939 specific form - Bryan

is a required property and the dt checker complains - Stephan/Bryan
- Removes CPR entries from qfprom - Stephan
- Left MDSS interconnects. I don't see a bug to fix here - Stephan/Bryan
- power-domain in MDSS - dropped its not longer required after
commit a6f033938beb ("dt-bindings: msm: dsi-controller-main: Fix power-domain constraint") - Stephan
- Adds gcc dsi1pll and dsi1pllbyte to gcc clock list.
Reviewing the silicon documentation we see dsi0_phy_pll is used to clock
GCC_BYTE1_CFG_RCGR : SRC_SEL
Root Source Select
000 : cxo
001 : dsi0_phy_pll_out_byteclk
010 : GPLL0_OUT_AUX
011 : gnd
100 : gnd
101 : gnd
110 : gnd
111 : reserved - Stephan/Bryan

- pm8916_l16 -> pm8916_l6 in dsi definition, typo - Konrad
- Moved regulator_set_load location - Konrad

Previous: https://lore.kernel.org/lkml/20230118050948.bibhq26s6sgzullg@xxxxxxxxxxx/T/
Bootable: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-23-01-23-msm8939-nocpr

V3:
- Happily I don't currently depend on any other series to be merged.
Bjorn and Chanwoo picked up everything I need to unblock this series. \(^o^)/

- Moves xo_board to RPM/PMIC clock gated CXO, not including rpmcc: obvs - Konrad/Bjorn
- qcom,msm-id = <239 0> - left as in V2 valid according to Sony references - bod
- cpu-release-addr - as stated below we rely on lk2nd to take the second cluster
out of reset - bod
- smem child node update - Konrad
- Whitespace updates - Konrad
- gpu no interconnect - Konrad - No bod
- 19.2 MHz dropped from timer@b020000 - Konrad
- Added vreg_dummy comment - Konrad
- sdc_pins grouped - Konrad
- startup-delay-us = <0> - left as is
- bias - added no-bias - Konrad
- :g/msmgpio/s//tlmm/g - Konrad
- mdss/s//display-controller - Konrad
- l11 set-load - Korad

- l12 upper voltage raised to 3.3v since this is what the
downstream kernel says when I boot and interrogate it - bod

- sdhc@address - Discussed with Krzysztof and implemented as discussed
- snoc-mm fix - Discussed with Krzysztof implemented if:then:else:not
- dtc -I dtb -fs apq8039-t2.dtb prodcues
/soc@0/i2c@78b5000: duplicate unit-address
as does every other component that uses this polymorphic dts node
- Renamed type-c i2c port manager IC to "typec" - Krzysztof

/smsm/hexagon@1: Missing #address-cells in interrupt provider
Same output as other upstream and recently upstreamed SoCs
I left these alone for now

link: https://lore.kernel.org/lkml/20230103010904.3201835-1-bryan.odonoghue@xxxxxxxxxx/T/
bootable: https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-23-01-16-msm8939-nocpr

V2:
- Sorts core dtsi node list by address followed by alpahbetical sorting
within address sorted nodes - Bjorn
- Drops use of 8916-pins - Bjorn
- Adds msm8939-pm8916.dtsi - Stephan
- Fixes every dts splat from previous submission minus non-converted
.txt compat strings [1] and one yaml error in Bjorn's tree not in -next yet
- I haven't applied Dmitry's change for tsens since that's not been
picked up yet
- Picks up a number of suggestions and fixes from Stephan Gerhold and Vincent Knecht

- Depends on

Applied:
[PATCH v4 0/7] remoteproc: qcom_q6v5_mss: Add MSM8909 and MSM8953
https://lore.kernel.org/linux-arm-msm/167216232800.738877.17567287056128563074.b4-ty@xxxxxxxxxx/

[PATCH v6 0/5] remoteproc: qcom: Add support for pronto-v3
https://lore.kernel.org/linux-arm-msm/167216232801.738877.15895916910585144737.b4-ty@xxxxxxxxxx/

[PATCH v6 00/18] mdss-dsi-ctrl binding and dts fixes
https://lore.kernel.org/linux-arm-msm/167233461766.1099840.17628700245792986354.b4-ty@xxxxxxxxxx/

Awaiting application:
https://lore.kernel.org/linux-arm-msm/20221228133058.213886-1-bryan.odonoghue@xxxxxxxxxx/

- Previous
https://lore.kernel.org/linux-arm-msm/20220419010903.3109514-1-bryan.odonoghue@xxxxxxxxxx/

- Bootable tree
https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=linux-next-23-01-03-msm8939-no-cpr

- [1] DTC_CHK arch/arm64/boot/dts/qcom/apq8039-t2.dtb

Documentation/devicetree/bindings/arm/msm/qcom,idle-state.txt
qcom/apq8039-t2.dtb: idle-states: cpu-sleep-0:compatible:0: 'qcom,idle-state-spc' is not one of ['arm,idle-state', 'riscv,idle-state']
From schema: Documentation/devicetree/bindings/cpu/idle-states.yaml
qcom/apq8039-t2.dtb: idle-states: cpu-sleep-0:compatible: ['qcom,idle-state-spc', 'arm,idle-state'] is too long
From schema: Documentation/devicetree/bindings/cpu/idle-states.yaml
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /cpus/idle-states/cpu-sleep-0: failed to match any schema with compatible: ['qcom,idle-state-spc', 'arm,idle-state']

Documentation/devicetree/bindings/iommu/qcom,iommu.txt
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/iommu@1ef0000: failed to match any schema with compatible: ['qcom,msm8916-iommu', 'qcom,msm-iommu-v1']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/iommu@1ef0000/iommu-ctx@4000: failed to match any schema with compatible: ['qcom,msm-iommu-v1-ns']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/iommu@1ef0000/iommu-ctx@5000: failed to match any schema with compatible: ['qcom,msm-iommu-v1-sec']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/iommu@1f08000: failed to match any schema with compatible: ['qcom,msm8916-iommu', 'qcom,msm-iommu-v1']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/iommu@1f08000/iommu-ctx@1000: failed to match any schema with compatible: ['qcom,msm-iommu-v1-ns']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/iommu@1f08000/iommu-ctx@2000: failed to match any schema with compatible: ['qcom,msm-iommu-v1-ns']

arch/arm64/boot/dts/qcom/pm8916.dtsi f5d7bca55425c8
qcom/apq8039-t2.dtb: pmic@0: 'extcon@1300' does not match any of the regexes: '(.*)?(wled|leds)@[0-9a-f]+$', '^adc-tm@[0-9a-f]+$', '^adc@[0-9a-f]+$', '^audio-codec@[0-9a-f]+$', '^charger@[0-9a-f]+$', '^mpps@[0-9a-f]+$', '^rtc@[0-9a-f]+$', '^temp-alarm@[0-9a-f]+$', '^usb-detect@[0-9a-f]+$', '^usb-vbus-regulator@[0-9a-f]+$', '^vibrator@[0-9a-f]+$', 'gpio@[0-9a-f]+$', 'pinctrl-[0-9]+', 'pon@[0-9a-f]+$'
From schema: Documentation/devicetree/bindings/mfd/qcom,spmi-pmic.yaml

Documentation/devicetree/bindings/sound/qcom,msm8916-wcd-analog.txt
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/spmi@200f000/pmic@1/audio-codec@f000: failed to match any schema with compatible: ['qcom,pm8916-wcd-analog-codec']

yaml documentation error not yet in -next
arm64/boot/dts/qcom/apq8039-t2.dtb: remoteproc@4080000: qcom,halt-regs:0: [33] is too short
From schema: Documentation/devicetree/bindings/remoteproc/qcom,msm8916-mss-pil.yaml

Documentation/devicetree/bindings/usb/ci-hdrc-usb2.txt
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/usb@78d9000: failed to match any schema with compatible: ['qcom,ci-hdrc']

Documentation/devicetree/bindings/arm/msm/qcom,kpss-acc.txt: compatible = "qcom,kpss-acc-v2";
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b088000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b098000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b0a8000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b0b8000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b188000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b198000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b1a8000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']
arch/arm64/boot/dts/qcom/apq8039-t2.dtb:0:0: /soc@0/clock-controller@b1b8000: failed to match any schema with compatible: ['qcom,kpss-acc-v2']

V1:
This series adds in MSM8939 SoC support with two supported devices.

- CPU
MSM8939 is a non-PSCI compliant device. As such in the downstreaming
shipped image custom code is used to bring non-boot cores out of reset.

This drop specifies the boot-method as spin-table instead and is
completely standard. To accomplish this, we rely on lk2nd.

https://github.com/msm8916-mainline/lk2nd/pull/142

- Serial
- i2c
- USB
- eMMC
- MDP/DSI
- WiFi
- Bluetooth

What's not included

- CPR
We have CPR working in a 4.19 kernel quite well but for now it feels like
putting the cart before the horse to gate the SoC and boards on CPR.

- Venus
I've been told this works but I haven't tried it myself and right now
consider it maybe working but probably not 100%.

- Sound
We have a copy-exactly from the 4.19 kernel here in the DTS.
I haven't run the sound through any sort of reasonable test.
Vincent Knecht has some PostmarketOS kernels which use a 5.17 version of
this DTS to get sound up so, I think sound is in good shape.

- CAMSS
There are slight differences between msm8916 and msm8939 for CAMSS. It
doesn't feel like tons of work but, right now it is work we haven't even
started.

- Devices
I've booted on the Square device obviously and this is my regular
hardware for upstream development. I've also booted on the Sony Xperia M4
Aqua including mutli-core bring-up, WiFi and ADB.

Dependencies for this drop:

qcom-cpufreq-nvmem: Add msm8939 with some fixups
link: https://lore.kernel.org/linux-arm-msm/20220418162226.2983117-1-bryan.odonoghue@xxxxxxxxxx/T/#t

Fix apq8016 compat string
link: https://lore.kernel.org/linux-arm-msm/20220418230956.3059563-1-bryan.odonoghue@xxxxxxxxxx/T/#t

dt-bindings: soc: qcom: smd-rpm: Fix missing MSM8936 compatible
link: https://lore.kernel.org/linux-arm-msm/20220418231857.3061053-1-bryan.odonoghue@xxxxxxxxxx/T/#u

Bootable tree here:
https://git.linaro.org/people/bryan.odonoghue/kernel.git/log/?h=v5.18-rc2%2bapq8039-without-cpr

Bryan O'Donoghue (3):
arm64: dts: qcom: Add msm8939 SoC
arm64: dts: qcom: Add Square apq8039-t2 board
arm64: dts: qcom: Add msm8939 Sony Xperia M4 Aqua

Stephan Gerhold (1):
arm64: dts: qcom: Add msm8939-pm8916.dtsi include

arch/arm64/boot/dts/qcom/Makefile | 2 +
arch/arm64/boot/dts/qcom/apq8039-t2.dts | 492 ++++
arch/arm64/boot/dts/qcom/msm8939-pm8916.dtsi | 82 +
.../qcom/msm8939-sony-xperia-kanuti-tulip.dts | 184 ++
arch/arm64/boot/dts/qcom/msm8939.dtsi | 2452 +++++++++++++++++
5 files changed, 3212 insertions(+)
create mode 100644 arch/arm64/boot/dts/qcom/apq8039-t2.dts
create mode 100644 arch/arm64/boot/dts/qcom/msm8939-pm8916.dtsi
create mode 100644 arch/arm64/boot/dts/qcom/msm8939-sony-xperia-kanuti-tulip.dts
create mode 100644 arch/arm64/boot/dts/qcom/msm8939.dtsi

--
2.39.2