mbox series

[v2,0/7] Add MSM8939 SoC support with two devices

Message ID 20230103010904.3201835-1-bryan.odonoghue@linaro.org
Headers show
Series Add MSM8939 SoC support with two devices | expand

Message

Bryan O'Donoghue Jan. 3, 2023, 1:08 a.m. UTC
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@kernel.org/

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

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

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

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

- 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@linaro.org/T/#t

Fix apq8016 compat string
link: https://lore.kernel.org/linux-arm-msm/20220418230956.3059563-1-bryan.odonoghue@linaro.org/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@linaro.org/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 (6):
  dt-bindings: interconnect: Move interconnect child node definition
  dt-bindings: arm: qcom: Document MSM8939 SoC binding
  dt-bindings: soc: qcom: smd-rpm: Exclude MSM8936 from glink-channels
  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

 .../devicetree/bindings/arm/qcom.yaml         |    8 +
 .../bindings/interconnect/qcom,rpm.yaml       |   62 +-
 .../bindings/soc/qcom/qcom,smd-rpm.yaml       |    1 +
 arch/arm64/boot/dts/qcom/Makefile             |    2 +
 arch/arm64/boot/dts/qcom/apq8039-t2.dts       |  557 ++++
 arch/arm64/boot/dts/qcom/msm8939-pm8916.dtsi  |   82 +
 .../qcom/msm8939-sony-xperia-kanuti-tulip.dts |  472 ++++
 arch/arm64/boot/dts/qcom/msm8939.dtsi         | 2470 +++++++++++++++++
 8 files changed, 3623 insertions(+), 31 deletions(-)
 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

Comments

Bryan O'Donoghue Jan. 10, 2023, 1:14 p.m. UTC | #1
On 03/01/2023 09:14, Krzysztof Kozlowski wrote:
> ../arch/arm64/boot/dts/qcom/msm8939.dtsi:1825.23-1842.5: Warning
> (simple_bus_reg): /soc@0/mmc@7824000: simple-bus unit address format
> error, expected "7824900

For the record the driver consuming this dt entry requires the host regs 
to come first followed by the core

sdhc_1: mmc@7824000 {
         compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
         reg = <0x07824900 0x11c>, <0x07824000 0x800>;
         reg-names = "hc", "core";
}

If I change this and the msm8916 to

sdhc_1: mmc@7824000 {
         compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
         reg = <0x07824000 0x800>, <0x07824900 0x11c>;
         reg-names = "core", "hc";
}

the warning goes away but then this code won't work as intended anymore.

drivers/mmc/host/sdhci-msm.c:		msm_host->core_mem = 
devm_platform_ioremap_resource(pdev, 1);

Weirdly when I change the ordering of the registers in the dts the SD 
seems to work just fine, which is at variance to my reading of the code.

Converting the sdhci driver to use the register name, instead of a 
static ordering of the regs feels like something to be done in a 
separate series.

---
bod
Krzysztof Kozlowski Jan. 10, 2023, 1:24 p.m. UTC | #2
On 10/01/2023 14:14, Bryan O'Donoghue wrote:
> On 03/01/2023 09:14, Krzysztof Kozlowski wrote:
>> ../arch/arm64/boot/dts/qcom/msm8939.dtsi:1825.23-1842.5: Warning
>> (simple_bus_reg): /soc@0/mmc@7824000: simple-bus unit address format
>> error, expected "7824900
> 
> For the record the driver consuming this dt entry requires the host regs 
> to come first followed by the core
> 
> sdhc_1: mmc@7824000 {
>          compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
>          reg = <0x07824900 0x11c>, <0x07824000 0x800>;
>          reg-names = "hc", "core";
> }
> 
> If I change this and the msm8916 to

That's not the solution. The warning is saying that unit address does
not match your reg. You need to correct unit address.

Best regards,
Krzysztof
Bryan O'Donoghue Jan. 10, 2023, 1:42 p.m. UTC | #3
On 10/01/2023 13:24, Krzysztof Kozlowski wrote:
> On 10/01/2023 14:14, Bryan O'Donoghue wrote:
>> On 03/01/2023 09:14, Krzysztof Kozlowski wrote:
>>> ../arch/arm64/boot/dts/qcom/msm8939.dtsi:1825.23-1842.5: Warning
>>> (simple_bus_reg): /soc@0/mmc@7824000: simple-bus unit address format
>>> error, expected "7824900
>>
>> For the record the driver consuming this dt entry requires the host regs
>> to come first followed by the core
>>
>> sdhc_1: mmc@7824000 {
>>           compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
>>           reg = <0x07824900 0x11c>, <0x07824000 0x800>;
>>           reg-names = "hc", "core";
>> }
>>
>> If I change this and the msm8916 to
> 
> That's not the solution. The warning is saying that unit address does
> not match your reg. You need to correct unit address.
> 
> Best regards,
> Krzysztof
> 

Is it not the case that the unit-address should match the first reg and 
that the first reg should also be the lowest address ?

---
bod
Konrad Dybcio Jan. 10, 2023, 2:47 p.m. UTC | #4
On 10.01.2023 14:42, Bryan O'Donoghue wrote:
> On 10/01/2023 13:24, Krzysztof Kozlowski wrote:
>> On 10/01/2023 14:14, Bryan O'Donoghue wrote:
>>> On 03/01/2023 09:14, Krzysztof Kozlowski wrote:
>>>> ../arch/arm64/boot/dts/qcom/msm8939.dtsi:1825.23-1842.5: Warning
>>>> (simple_bus_reg): /soc@0/mmc@7824000: simple-bus unit address format
>>>> error, expected "7824900
>>>
>>> For the record the driver consuming this dt entry requires the host regs
>>> to come first followed by the core
>>>
>>> sdhc_1: mmc@7824000 {
>>>           compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
>>>           reg = <0x07824900 0x11c>, <0x07824000 0x800>;
>>>           reg-names = "hc", "core";
>>> }
>>>
>>> If I change this and the msm8916 to
>>
>> That's not the solution. The warning is saying that unit address does
>> not match your reg. You need to correct unit address.
>>
>> Best regards,
>> Krzysztof
>>
> 
> Is it not the case that the unit-address should match the first reg
Yes

 and that the first reg should also be the lowest address ?
Depends on what the first reg is, bindings usually dictate the order.

Konrad
> 
> ---
> bod
Krzysztof Kozlowski Jan. 11, 2023, 9:12 a.m. UTC | #5
On 10/01/2023 14:42, Bryan O'Donoghue wrote:
> On 10/01/2023 13:24, Krzysztof Kozlowski wrote:
>> On 10/01/2023 14:14, Bryan O'Donoghue wrote:
>>> On 03/01/2023 09:14, Krzysztof Kozlowski wrote:
>>>> ../arch/arm64/boot/dts/qcom/msm8939.dtsi:1825.23-1842.5: Warning
>>>> (simple_bus_reg): /soc@0/mmc@7824000: simple-bus unit address format
>>>> error, expected "7824900
>>>
>>> For the record the driver consuming this dt entry requires the host regs
>>> to come first followed by the core
>>>
>>> sdhc_1: mmc@7824000 {
>>>           compatible = "qcom,msm8916-sdhci", "qcom,sdhci-msm-v4";
>>>           reg = <0x07824900 0x11c>, <0x07824000 0x800>;
>>>           reg-names = "hc", "core";
>>> }
>>>
>>> If I change this and the msm8916 to
>>
>> That's not the solution. The warning is saying that unit address does
>> not match your reg. You need to correct unit address.
>>
>> Best regards,
>> Krzysztof
>>
> 
> Is it not the case that the unit-address should match the first reg and 

As Konrad wrote, yes.

> that the first reg should also be the lowest address ?

I never heard such requirement, although it would be logical choice. In
this case your solution is to use the higher address as unit address.
apq8084, msm8226 and maybe more already do it.

You can also look at this that HC was made as the main IO address of a
device (if one can call something "main" here), thus it should be
expressed in unit address.

Best regards,
Krzysztof