Re: [PATCH v2 3/4] arm64: dts: renesas: Add R8A78000 X5H DTs

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Morimoto-san,

On Wed, 10 Sept 2025 at 04:01, Kuninori Morimoto
<kuninori.morimoto.gx@xxxxxxxxxxx> wrote:
> From: Hai Pham <hai.pham.ud@xxxxxxxxxxx>
>
> Add initial DT support for R8A78000 (R-Car X5H) SoC.
>
> [Kuninori: tidyup for upstreaming]
>
> Signed-off-by: Hai Pham <hai.pham.ud@xxxxxxxxxxx>
> Signed-off-by: Vinh Nguyen <vinh.nguyen.xz@xxxxxxxxxxx>
> Signed-off-by: Minh Le <minh.le.aj@xxxxxxxxxxx>
> Signed-off-by: Huy Bui <huy.bui.wm@xxxxxxxxxxx>
> Signed-off-by: Khanh Le <khanh.le.xr@xxxxxxxxxxx>
> Signed-off-by: Phong Hoang <phong.hoang.wz@xxxxxxxxxxx>
> Signed-off-by: Kuninori Morimoto <kuninori.morimoto.gx@xxxxxxxxxxx>

Thanks for your patch!

> --- /dev/null
> +++ b/arch/arm64/boot/dts/renesas/r8a78000.dtsi

> +/ {

> +       cpus {
> +               #address-cells = <2>;
> +               #size-cells = <0>;

> +               a720_0: cpu@0 {
> +                       compatible = "arm,cortex-a720";

"arm,cortex-a720ae"?

> +                       reg = <0x0 0x0>;
> +                       device_type = "cpu";
> +                       next-level-cache = <&L1_CA720_0>;
> +                       enable-method = "psci";

Please drop this line, as there is no psci node yet.

> +
> +                       L1_CA720_0: controller-0 {

cache-controller (lots of places).

> +                               compatible = "cache";
> +                               cache-unified;

The L1 cache is not unified, according to the documentation?

> +                               cache-level = <1>;

dtschema/schemas/cache-controller.yaml says valid values are 2..32,
so I think you just have to ignore the L1 cache.
I.e. drop it from DTS, and let the CPU's next-level-cache point to
the L2 cache.

> +                               next-level-cache = <&L2_CA720_0>;
> +                       };
> +
> +                       L2_CA720_0: controller-1 {
> +                               compatible = "cache";
> +                               cache-unified;
> +                               cache-level = <2>;
> +                               next-level-cache = <&L3_CA720_0>;
> +                       };

Shouldn't this node be located outside the cpu@0 node?

> +               };

> +
> +       extal_clk: clock-extal {
> +               compatible = "fixed-clock";
> +               #clock-cells = <0>;
> +               /* clock-frequency must be set on board */
> +       };
> +
> +       extalr_clk: clock-extalr {
> +               compatible = "fixed-clock";
> +               #clock-cells = <0>;
> +               /* clock-frequency must be set on board */
> +       };
> +
> +       /*
> +        * In the early phase, there is no clock control support,
> +        * so assume that the clocks are enabled by default.
> +        * Therefore, dummy clocks are used.
> +        */
> +       dummy_clk_sgasyncd4: dummy-clk-sgasyncd4 {

Perhaps use clock-*, for consistency with extal(r)?
However, please note that so far no Renesas DTS files use "clock-*"
as a node name, but "*-clk" is in active use. Krzysztof?

And don't forget to say "Thank you!" to our SCMI overlords ;-)

> +               compatible = "fixed-clock";
> +               #clock-cells = <0>;
> +               clock-frequency = <266660000>;
> +       };
> +
> +       /* External SCIF clock - to be overridden by boards that provide it */
> +       scif_clk: clock-scif {
> +               compatible = "fixed-clock";
> +               #clock-cells = <0>;
> +               /* clock-frequency must be set on board */

This clock is optional, and thus may be left unpopulated on a board,
so please (re-)add "clock-frequency = <0>;".

> +       };
> +
> +       soc: soc {

> +               /* The Arm GIC-700AE - View 1 */

s/700/720/

> +               gic: interrupt-controller@39000000 {
> +                       compatible = "arm,gic-v3";

The documentation states it is compliant with GICv4.1?

> +                       #interrupt-cells = <3>;
> +                       #address-cells = <0>;
> +                       interrupt-controller;
> +                       redistributor-stride = <0x0 0x40000>;
> +                       #redistributor-regions = <32>;
> +                       reg = <0 0x39000000 0 0x20000>, // GICD

The base address is 0x38000000, according to the docs?

> +                             <0 0x39080000 0 0x40000>, // GICR Core0
> +                             <0 0x390C0000 0 0x40000>, // GICR Core1
> +                             <0 0x39100000 0 0x40000>, // GICR Core2
> +                             <0 0x39140000 0 0x40000>, // GICR Core3
> +                             <0 0x39180000 0 0x40000>, // GICR Core4
> +                             <0 0x391C0000 0 0x40000>, // GICR Core5
> +                             <0 0x39200000 0 0x40000>, // GICR Core6
> +                             <0 0x39240000 0 0x40000>, // GICR Core7
> +                             <0 0x39280000 0 0x40000>, // GICR Core8
> +                             <0 0x392C0000 0 0x40000>, // GICR Core9
> +                             <0 0x39300000 0 0x40000>, // GICR Core10
> +                             <0 0x39340000 0 0x40000>, // GICR Core11
> +                             <0 0x39380000 0 0x40000>, // GICR Core12
> +                             <0 0x393C0000 0 0x40000>, // GICR Core13
> +                             <0 0x39400000 0 0x40000>, // GICR Core14
> +                             <0 0x39440000 0 0x40000>, // GICR Core15
> +                             <0 0x39480000 0 0x40000>, // GICR Core16
> +                             <0 0x394C0000 0 0x40000>, // GICR Core17
> +                             <0 0x39500000 0 0x40000>, // GICR Core18
> +                             <0 0x39540000 0 0x40000>, // GICR Core19
> +                             <0 0x39580000 0 0x40000>, // GICR Core20
> +                             <0 0x395C0000 0 0x40000>, // GICR Core21
> +                             <0 0x39600000 0 0x40000>, // GICR Core22
> +                             <0 0x39640000 0 0x40000>, // GICR Core23
> +                             <0 0x39680000 0 0x40000>, // GICR Core24
> +                             <0 0x396C0000 0 0x40000>, // GICR Core25
> +                             <0 0x39700000 0 0x40000>, // GICR Core26
> +                             <0 0x39740000 0 0x40000>, // GICR Core27
> +                             <0 0x39780000 0 0x40000>, // GICR Core28
> +                             <0 0x397C0000 0 0x40000>, // GICR Core29
> +                             <0 0x39800000 0 0x40000>, // GICR Core30
> +                             <0 0x39840000 0 0x40000>; // GICR Core31

No GICC, GICH, and GICV?

> +                       interrupts = <GIC_PPI 9 IRQ_TYPE_LEVEL_HIGH>;
> +               };
> +
> +               scif0: serial@c0700000 {
> +                       compatible = "renesas,rcar-gen5-scif", "renesas,scif";

Missing "renesas,scif-r8a78000" (everywhere)
("make dtbs_check" would have told you).

> +                       reg = <0 0xc0700000 0 0x40>;
> +                       interrupts = <GIC_SPI 4074 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&dummy_clk_sgasyncd4>, <&dummy_clk_sgasyncd4>, <&scif_clk>;
> +                       clock-names = "fck", "brg_int", "scif_clk";

"fck" on SCIF should be (derived from) SGASYNCD16 (66.666 MHz).

According to the DT bindings, "power-domains" and "resets" are missing.

> +                       status = "disabled";
> +               };

> +               hscif0: serial@c0710000 {
> +                       compatible = "renesas,rcar-gen5-hscif", "renesas,hscif";

Missing "renesas,hscif-r8a78000".

> +                       reg = <0 0xc0710000 0 0x60>;
> +                       interrupts = <GIC_SPI 4078 IRQ_TYPE_LEVEL_HIGH>;
> +                       clocks = <&dummy_clk_sgasyncd4>, <&dummy_clk_sgasyncd4>, <&scif_clk>;
> +                       clock-names = "fck", "brg_int", "scif_clk";

"fck" on HSCIF should be (derived from) SGASYNCD8 (133.33 MHz).

According to the DT bindings, "power-domains" and "resets" are missing.

> +                       status = "disabled";
> +               };

Gr{oetje,eeting}s,

                        Geert

--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@xxxxxxxxxxxxxx

In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
                                -- Linus Torvalds




[Index of Archives]     [Linux Samsung SOC]     [Linux Wireless]     [Linux Kernel]     [ATH6KL]     [Linux Bluetooth]     [Linux Netdev]     [Kernel Newbies]     [IDE]     [Security]     [Git]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux ATA RAID]     [Samba]     [Device Mapper]

  Powered by Linux