mbox series

[v4,0/3] arm64: dts: realtek: Initial RTD1319 and Pym Particles support

Message ID 20200620233227.31585-1-afaerber@suse.de
Headers show
Series arm64: dts: realtek: Initial RTD1319 and Pym Particles support | expand

Message

Andreas Färber June 20, 2020, 11:32 p.m. UTC
Hello,

This patch series adds initial Device Trees for Realtek RTD1319 SoC and
Realtek Pym Particles EVB.

This v4 is an update of James' v3, incorporating pending review comments.

Upstreaming progress being tracked at:
https://en.opensuse.org/HCL:Realtek_DHC

Latest experimental patches at:
https://github.com/afaerber/linux/commits/rtd1295-next

Have a lot of fun!

Cheers,
Andreas

v3 -> v4:
* Updated Realtek copyright for files changed in v3
* Updated PMU compatible (Robin)
* Changed compatible, renamed .dts
* Updated bindings schema and prepended refactoring

Cc: devicetree@vger.kernel.org
Cc: Rob Herring <robh+dt@kernel.org>
Cc: James Tai <james.tai@realtek.com>

Andreas Färber (1):
  dt-bindings: arm: realtek: Convert comments to descriptions

James Tai (2):
  dt-bindings: arm: realtek: Document RTD1319 and Realtek Pym Particles
    EVB
  arm64: dts: realtek: Add RTD1319 SoC and Realtek Pym Particles EVB

 .../devicetree/bindings/arm/realtek.yaml      |  30 ++-
 arch/arm64/boot/dts/realtek/Makefile          |   2 +
 .../boot/dts/realtek/rtd1319-pymparticles.dts |  43 ++++
 arch/arm64/boot/dts/realtek/rtd1319.dtsi      |  12 +
 arch/arm64/boot/dts/realtek/rtd13xx.dtsi      | 213 ++++++++++++++++++
 5 files changed, 288 insertions(+), 12 deletions(-)
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1319-pymparticles.dts
 create mode 100644 arch/arm64/boot/dts/realtek/rtd1319.dtsi
 create mode 100644 arch/arm64/boot/dts/realtek/rtd13xx.dtsi

Comments

Andreas Färber June 23, 2020, 12:53 a.m. UTC | #1
Am 21.06.20 um 01:32 schrieb Andreas Färber:
> diff --git a/arch/arm64/boot/dts/realtek/rtd13xx.dtsi b/arch/arm64/boot/dts/realtek/rtd13xx.dtsi
> new file mode 100644
> index 000000000000..8c5b6fc7b8eb
> --- /dev/null
> +++ b/arch/arm64/boot/dts/realtek/rtd13xx.dtsi
[...]
> +&iso {
> +	uart0: serial0@800 {

Node name should be serial, not serial0.

> +		compatible = "snps,dw-apb-uart";
> +		reg = <0x800 0x400>;
> +		reg-shift = <2>;
> +		reg-io-width = <4>;
> +		interrupts = <GIC_SPI 68 IRQ_TYPE_LEVEL_HIGH>;
> +		clock-frequency = <432000000>;
> +		status = "disabled";
> +	};
> +};
> +
> +&misc {
> +	uart1: serial1@200 {

Ditto, serial.

> +		compatible = "snps,dw-apb-uart";
> +		reg = <0x200 0x400>;
> +		reg-shift = <2>;
> +		reg-io-width = <4>;
> +		interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
> +		clock-frequency = <432000000>;
> +		status = "disabled";
> +	};
> +
> +	uart2: serial2@400 {

Ditto.

> +		compatible = "snps,dw-apb-uart";
> +		reg = <0x400 0x400>;
> +		reg-shift = <2>;
> +		reg-io-width = <4>;
> +		interrupts = <GIC_SPI 90 IRQ_TYPE_LEVEL_HIGH>;
> +		clock-frequency = <432000000>;
> +		status = "disabled";
> +	};
> +};

Regards,
Andreas
Andreas Färber June 23, 2020, 2:16 a.m. UTC | #2
Hi James,

Am 21.06.20 um 01:32 schrieb Andreas Färber:
> From: James Tai <james.tai@realtek.com>
> 
> Add Device Trees for Realtek RTD1319 SoC family, RTD1319 SoC and
> Realtek Pym Particles EVB.
> 
> Signed-off-by: James Tai <james.tai@realtek.com>
> Signed-off-by: Andreas Färber <afaerber@suse.de>
> ---
>   v3 -> v4:
>   * Updated Realtek copyright for 2 out of 3 files from v3
>   * Renamed from rtd1319-pymparticle.dts to rtd1319-pymparticles.dts
>   * Updated compatible from pymparticle to pym-particles
>   * Updated PMU compatible from armv8-pmuv3 to cortex-a55-pmu (Robin)
>   
>   v2 -> v3:
>   * Add virtual maintenance interrupt for architecture timer
>   * Correct the GIC redistributor address range
[...]
> diff --git a/arch/arm64/boot/dts/realtek/rtd13xx.dtsi b/arch/arm64/boot/dts/realtek/rtd13xx.dtsi
> new file mode 100644
> index 000000000000..8c5b6fc7b8eb
> --- /dev/null
> +++ b/arch/arm64/boot/dts/realtek/rtd13xx.dtsi
[...]
> +		gic: interrupt-controller@ff100000 {
> +			compatible = "arm,gic-v3";
> +			reg = <0xff100000 0x10000>,
> +			      <0xff140000 0x80000>;
> +			interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;

In my testing this appears to cause the following error:

[    2.239858] irq: type mismatch, failed to map hwirq-25 for 
interrupt-controller@ff100000!
...
[    3.505649] kvm [1]: IPA Size Limit: 40bits
[    3.506051] kvm [1]: GICv3: no GICV resource entry
[    3.506058] kvm [1]: disabling GICv2 emulation
[    3.506081] kvm [1]: GIC system register CPU interface enabled
[    3.506175] kvm [1]: vgic interrupt IRQ1
[    3.506293] kvm [1]: Hyp mode initialized successfully

If I change it to IRQ_TYPE_LEVEL_LOW, that error goes away:

[    3.506030] kvm [1]: IPA Size Limit: 40bits
[    3.506430] kvm [1]: GICv3: no GICV resource entry
[    3.506437] kvm [1]: disabling GICv2 emulation
[    3.506459] kvm [1]: GIC system register CPU interface enabled
[    3.506551] kvm [1]: vgic interrupt IRQ1
[    3.506672] kvm [1]: Hyp mode initialized successfully

In-tree RTD1619 has it as HIGH, too, but doesn't show above error:

[    2.918973] kvm [1]: IPA Size Limit: 40bits
[    2.919345] kvm [1]: GICv3: no GICV resource entry
[    2.919352] kvm [1]: disabling GICv2 emulation
[    2.919373] kvm [1]: GIC system register CPU interface enabled
[    2.919522] kvm [1]: vgic interrupt IRQ1
[    2.919700] kvm [1]: Hyp mode initialized successfully

RTD1619 doesn't show an error either if I change it to LOW though:

[    2.918843] kvm [1]: IPA Size Limit: 40bits
[    2.919212] kvm [1]: GICv3: no GICV resource entry
[    2.919218] kvm [1]: disabling GICv2 emulation
[    2.919240] kvm [1]: GIC system register CPU interface enabled
[    2.919390] kvm [1]: vgic interrupt IRQ1
[    2.919567] kvm [1]: Hyp mode initialized successfully

The GICv3 bindings example does have it as 4 == HIGH, but so does the 
GICv2 binding example, and yet we used LOW == 8 for in-tree RTD139x, 
RTD129x and RTD1195. The downstream BSP uses value 4 == HIGH for both 
RTD16xx and RTD13xx - is it possible this was never actually tested?

Thanks in advance for clarifying the correct interrupt polarity.

> +			interrupt-controller;
> +			#interrupt-cells = <3>;
> +		};
[snip]

Regards,
Andreas