[PATCH v6 2/6] ARM: dts: rockchip: Add Rockchip RV1126 SoC
Jagan Teki
jagan at edgeble.ai
Sat Nov 5 00:35:59 PDT 2022
Hi Johan,
On Fri, 4 Nov 2022 at 16:12, Johan Jonker <jbx6244 at gmail.com> wrote:
>
> Hi Jagan,
>
> When I run this command below I get a lot text on my screen.
> Could you fix them all?
> Some more comments below.
>
> Johan
>
> ===
>
> ARCH=arm CROSS_COMPILE=arm-linux-gnueabihf- make dtbs_check
>
> On 11/2/22 13:46, Jagan Teki wrote:
> > RV1126 is a high-performance vision processor SoC for IPC/CVR,
> > especially for AI related application.
> >
> > It is based on quad-core ARM Cortex-A7 32-bit core which integrates
> > NEON and FPU. There is a 32KB I-cache and 32KB D-cache for each core
> > and 512KB unified L2 cache. It has build-in NPU supports INT8/INT16
> > hybrid operation and computing power is up to 2.0TOPs.
> >
> > This patch add basic core dtsi support.
> >
> > Signed-off-by: Jon Lin <jon.lin at rock-chips.com>
> > Signed-off-by: Sugar Zhang <sugar.zhang at rock-chips.com>
> > Signed-off-by: Jagan Teki <jagan at edgeble.ai>
> > ---
> > Changes for v6:
> > - add psci node
> > Changes for v5:
> > - none
> > Changes for v4:
> > - update i2c0
> > - rebase on -next
> > Changes for v3:
> > - update cru and power file names
> > Changes for v2:
> > - split pinctrl in separate patch
> >
> > arch/arm/boot/dts/rv1126.dtsi | 439 ++++++++++++++++++++++++++++++++++
> > 1 file changed, 439 insertions(+)
> > create mode 100644 arch/arm/boot/dts/rv1126.dtsi
> >
> > diff --git a/arch/arm/boot/dts/rv1126.dtsi b/arch/arm/boot/dts/rv1126.dtsi
> > new file mode 100644
> > index 000000000000..867f17ab0efd
> > --- /dev/null
> > +++ b/arch/arm/boot/dts/rv1126.dtsi
> > @@ -0,0 +1,439 @@
> > +// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
> > +/*
> > + * Copyright (c) 2019 Fuzhou Rockchip Electronics Co., Ltd.
>
> > + * Copyright (c) 2022 Edgeble AI Technologies Pvt. Ltd.
>
> Is this an advertisement?
Not really, add since we made our real efforts to place this on the
upstream tree. Which indeed make sense I think.
> Maybe remove?
> Was there added substantial new code?
> Compared to the original there was mainly parts removed, sorted and restyled here and there I think.
Mostly, yes for now.
>
> https://github.com/rockchip-linux/kernel/blob/develop-5.10/arch/arm/boot/dts/rv1126.dtsi
>
> > + */
> > +
> > +#include <dt-bindings/clock/rockchip,rv1126-cru.h>
> > +#include <dt-bindings/gpio/gpio.h>
> > +#include <dt-bindings/interrupt-controller/arm-gic.h>
> > +#include <dt-bindings/interrupt-controller/irq.h>
> > +#include <dt-bindings/pinctrl/rockchip.h>
> > +#include <dt-bindings/power/rockchip,rv1126-power.h>
> > +#include <dt-bindings/soc/rockchip,boot-mode.h>
> > +
> > +/ {
> > + #address-cells = <1>;
> > + #size-cells = <1>;
> > +
> > + compatible = "rockchip,rv1126";
> > +
> > + interrupt-parent = <&gic>;
> > +
>
> > + aliases {
> > + i2c0 = &i2c0;
> > + serial0 = &uart0;
> > + serial1 = &uart1;
> > + serial2 = &uart2;
> > + serial3 = &uart3;
> > + serial4 = &uart4;
> > + serial5 = &uart5;
> > + };
>
> Comment by Krzysztof:
> https://lore.kernel.org/all/f2652e0e-fb08-efb4-e25a-36a335f0c457@linaro.org/
>
> No, not only mmc. UART, I2C, SPI - all of these should go to the board.
>
> Comment by Arnd:
> https://lore.kernel.org/linux-rockchip/CAK8P3a25iYksubCnQb1-e5yj=crEsK37RB9Hn4ZGZMwcVVrG7g@mail.gmail.com/
>
> Each board should have its own aliases node that describes
> exactly which of the devices are wired up on that board, and
> in which order. If there are connectors on the board that
> are labeled in some form, then the aliases are meant to
> match what is written on the board or in its documentation.
I'm not sure whether it would apply to all arch/boards, let Heiko or
someone comment.
> > +
> > + cpus {
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + cpu0: cpu at f00 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf00>;
> > + enable-method = "psci";
> > + clocks = <&cru ARMCLK>;
> > + };
> > +
> > + cpu1: cpu at f01 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf01>;
> > + enable-method = "psci";
> > + clocks = <&cru ARMCLK>;
> > + };
> > +
> > + cpu2: cpu at f02 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf02>;
> > + enable-method = "psci";
> > + clocks = <&cru ARMCLK>;
> > + };
> > +
> > + cpu3: cpu at f03 {
> > + device_type = "cpu";
> > + compatible = "arm,cortex-a7";
> > + reg = <0xf03>;
> > + enable-method = "psci";
> > + clocks = <&cru ARMCLK>;
> > + };
> > + };
> > +
> > + arm-pmu {
> > + compatible = "arm,cortex-a7-pmu";
> > + interrupts = <GIC_SPI 123 IRQ_TYPE_LEVEL_HIGH>,
> > + <GIC_SPI 124 IRQ_TYPE_LEVEL_HIGH>,
> > + <GIC_SPI 125 IRQ_TYPE_LEVEL_HIGH>,
> > + <GIC_SPI 126 IRQ_TYPE_LEVEL_HIGH>;
> > + interrupt-affinity = <&cpu0>, <&cpu1>, <&cpu2>, <&cpu3>;
> > + };
> > +
> > + psci {
> > + compatible = "arm,psci-1.0";
> > + method = "smc";
> > + };
> > +
> > + timer {
> > + compatible = "arm,armv7-timer";
> > + interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
> > + <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
> > + <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
> > + <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
> > + clock-frequency = <24000000>;
> > + };
> > +
> > + xin24m: oscillator {
> > + compatible = "fixed-clock";
> > + clock-frequency = <24000000>;
> > + clock-output-names = "xin24m";
> > + #clock-cells = <0>;
> > + };
> > +
> > + grf: syscon at fe000000 {
> > + compatible = "rockchip,rv1126-grf", "syscon", "simple-mfd";
> > + reg = <0xfe000000 0x20000>;
> > + };
> > +
> > + pmugrf: syscon at fe020000 {
> > + compatible = "rockchip,rv1126-pmugrf", "syscon", "simple-mfd";
> > + reg = <0xfe020000 0x1000>;
> > +
> > + pmu_io_domains: io-domains {
> > + compatible = "rockchip,rv1126-pmu-io-voltage-domain";
> > + status = "disabled";
> > + };
> > + };
> > +
> > + qos_emmc: qos at fe860000 {
> > + compatible = "rockchip,rv1126-qos", "syscon";
> > + reg = <0xfe860000 0x20>;
> > + };
> > +
> > + qos_nandc: qos at fe860080 {
> > + compatible = "rockchip,rv1126-qos", "syscon";
> > + reg = <0xfe860080 0x20>;
> > + };
> > +
> > + qos_sfc: qos at fe860200 {
> > + compatible = "rockchip,rv1126-qos", "syscon";
> > + reg = <0xfe860200 0x20>;
> > + };
> > +
> > + qos_sdio: qos at fe86c000 {
> > + compatible = "rockchip,rv1126-qos", "syscon";
> > + reg = <0xfe86c000 0x20>;
> > + };
> > +
> > + gic: interrupt-controller at feff0000 {
> > + compatible = "arm,gic-400";
> > + interrupt-controller;
> > + #interrupt-cells = <3>;
> > + #address-cells = <0>;
> > +
> > + reg = <0xfeff1000 0x1000>,
> > + <0xfeff2000 0x2000>,
> > + <0xfeff4000 0x2000>,
> > + <0xfeff6000 0x2000>;
> > + interrupts = <GIC_PPI 9 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
> > + };
> > +
> > + pmu: power-management at ff3e0000 {
>
> > + compatible = "rockchip,rv1126-pmu", "syscon", "simple-mfd";
>
> arch/arm/boot/dts/rv1126-edgeble-neu2-io.dtb:0:0: /power-management at ff3e0000: failed to match any schema with compatible: ['rockchip,rv1126-pmu', 'syscon', 'simple-mfd']
>
>
> > + reg = <0xff3e0000 0x1000>;
> > +
> > + power: power-controller {
> > + compatible = "rockchip,rv1126-power-controller";
> > + #power-domain-cells = <1>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > +
> > + power-domain at RV1126_PD_NVM {
> > + reg = <RV1126_PD_NVM>;
> > + clocks = <&cru HCLK_EMMC>,
> > + <&cru CLK_EMMC>,
> > + <&cru HCLK_NANDC>,
> > + <&cru CLK_NANDC>,
> > + <&cru HCLK_SFC>,
> > + <&cru HCLK_SFCXIP>,
> > + <&cru SCLK_SFC>;
> > + pm_qos = <&qos_emmc>,
> > + <&qos_nandc>,
> > + <&qos_sfc>;
> > + #power-domain-cells = <0>;
> > + };
> > +
> > + power-domain at RV1126_PD_SDIO {
> > + reg = <RV1126_PD_SDIO>;
> > + clocks = <&cru HCLK_SDIO>,
> > + <&cru CLK_SDIO>;
> > + pm_qos = <&qos_sdio>;
> > + #power-domain-cells = <0>;
> > + };
> > + };
> > + };
> > +
> > + i2c0: i2c at ff3f0000 {
> > + compatible = "rockchip,rv1126-i2c", "rockchip,rk3399-i2c";
> > + reg = <0xff3f0000 0x1000>;
> > + interrupts = <GIC_SPI 4 IRQ_TYPE_LEVEL_HIGH>;
> > + rockchip,grf = <&pmugrf>;
> > + clocks = <&pmucru CLK_I2C0>, <&pmucru PCLK_I2C0>;
> > + clock-names = "i2c", "pclk";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&i2c0_xfer>;
> > + #address-cells = <1>;
> > + #size-cells = <0>;
> > + status = "disabled";
> > + };
> > +
>
> > + dmac: dma-controller at ff4e0000 {
>
> Sort nodes with reg property on reg address.
>
> > + compatible = "arm,pl330", "arm,primecell";
> > + reg = <0xff4e0000 0x4000>;
> > + interrupts = <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>,
> > + <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>;
> > + #dma-cells = <1>;
> > + arm,pl330-periph-burst;
> > + clocks = <&cru ACLK_DMAC>;
> > + clock-names = "apb_pclk";
> > + };
> > +
> > + uart1: serial at ff410000 {
> > + compatible = "rockchip,rv1126-uart", "snps,dw-apb-uart";
> > + reg = <0xff410000 0x100>;
> > + interrupts = <GIC_SPI 13 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-frequency = <24000000>;
> > + clocks = <&pmucru SCLK_UART1>, <&pmucru PCLK_UART1>;
> > + clock-names = "baudclk", "apb_pclk";
> > + dmas = <&dmac 7>, <&dmac 6>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart1m0_xfer>;
> > + reg-shift = <2>;
> > + reg-io-width = <4>;
> > + status = "disabled";
> > + };
> > +
> > + pmucru: clock-controller at ff480000 {
> > + compatible = "rockchip,rv1126-pmucru";
> > + reg = <0xff480000 0x1000>;
> > + rockchip,grf = <&grf>;
> > + #clock-cells = <1>;
> > + #reset-cells = <1>;
> > + };
> > +
> > + cru: clock-controller at ff490000 {
> > + compatible = "rockchip,rv1126-cru";
> > + reg = <0xff490000 0x1000>;
> > + clocks = <&xin24m>;
> > + clock-names = "xin24m";
> > + rockchip,grf = <&grf>;
> > + #clock-cells = <1>;
> > + #reset-cells = <1>;
> > + };
> > +
> > + uart0: serial at ff560000 {
> > + compatible = "rockchip,rv1126-uart", "snps,dw-apb-uart";
> > + reg = <0xff560000 0x100>;
> > + interrupts = <GIC_SPI 12 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-frequency = <24000000>;
> > + clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
> > + clock-names = "baudclk", "apb_pclk";
> > + dmas = <&dmac 5>, <&dmac 4>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart0_xfer>;
> > + reg-shift = <2>;
> > + reg-io-width = <4>;
> > + status = "disabled";
> > + };
> > +
> > + uart2: serial at ff570000 {
> > + compatible = "rockchip,rv1126-uart", "snps,dw-apb-uart";
> > + reg = <0xff570000 0x100>;
> > + interrupts = <GIC_SPI 14 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-frequency = <24000000>;
> > + clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
> > + clock-names = "baudclk", "apb_pclk";
> > + dmas = <&dmac 9>, <&dmac 8>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart2m1_xfer>;
> > + reg-shift = <2>;
> > + reg-io-width = <4>;
> > + status = "disabled";
> > + };
> > +
> > + uart3: serial at ff580000 {
> > + compatible = "rockchip,rv1126-uart", "snps,dw-apb-uart";
> > + reg = <0xff580000 0x100>;
> > + interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-frequency = <24000000>;
> > + clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
> > + clock-names = "baudclk", "apb_pclk";
> > + dmas = <&dmac 11>, <&dmac 10>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart3m0_xfer>;
> > + reg-shift = <2>;
> > + reg-io-width = <4>;
> > + status = "disabled";
> > + };
> > +
> > + uart4: serial at ff590000 {
> > + compatible = "rockchip,rv1126-uart", "snps,dw-apb-uart";
> > + reg = <0xff590000 0x100>;
> > + interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-frequency = <24000000>;
> > + clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
> > + clock-names = "baudclk", "apb_pclk";
> > + dmas = <&dmac 13>, <&dmac 12>;
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart4m0_xfer>;
> > + reg-shift = <2>;
> > + reg-io-width = <4>;
> > + status = "disabled";
> > + };
> > +
> > + uart5: serial at ff5a0000 {
> > + compatible = "rockchip,rv1126-uart", "snps,dw-apb-uart";
> > + reg = <0xff5a0000 0x100>;
> > + interrupts = <GIC_SPI 17 IRQ_TYPE_LEVEL_HIGH>;
> > + clock-frequency = <24000000>;
> > + clocks = <&cru SCLK_UART5>, <&cru PCLK_UART5>;
> > + dmas = <&dmac 15>, <&dmac 14>;
> > + clock-names = "baudclk", "apb_pclk";
> > + pinctrl-names = "default";
> > + pinctrl-0 = <&uart5m0_xfer>;
> > + reg-shift = <2>;
> > + reg-io-width = <4>;
> > + status = "disabled";
> > + };
> > +
> > + saradc: saradc at ff5e0000 {
>
> > + compatible = "rockchip,rk3399-saradc";
>
> compatible = "rockchip,rv1126-saradc", "rockchip,rk3399-saradc";
>
> Add to document.
>
> > + reg = <0xff5e0000 0x100>;
> > + interrupts = <GIC_SPI 40 IRQ_TYPE_LEVEL_HIGH>;
> > + #io-channel-cells = <1>;
> > + clocks = <&cru CLK_SARADC>, <&cru PCLK_SARADC>;
> > + clock-names = "saradc", "apb_pclk";
> > + resets = <&cru SRST_SARADC_P>;
> > + reset-names = "saradc-apb";
> > + status = "disabled";
> > + };
> > +
> > + timer: timer at ff660000 {
>
> > + compatible = "rockchip,rk3288-timer";
>
> compatible = "rockchip,rv1126-timer", "rockchip,rk3288-timer";
>
> Add to document after my patch:
>
> [PATCH v2 2/4] dt-bindings: timer: rockchip: add rockchip,rk3128-timer
> https://lore.kernel.org/linux-rockchip/0e57f38f-bace-8556-7258-aa0b3c0ac103@gmail.com/T/#u
It is better to be on the upstream tree as the code base instead of
intermediate dependencies, Heiko might take care of these conflicts
while applying.
>
> > + reg = <0xff660000 0x20>;
> > + interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
> > + clocks = <&cru PCLK_TIMER>, <&cru CLK_TIMER0>;
> > + clock-names = "pclk", "timer";
> > + };
> > +
> > + emmc: mmc at ffc50000 {
> > + compatible = "rockchip,rv1126-dw-mshc", "rockchip,rk3288-dw-mshc";
> > + reg = <0xffc50000 0x4000>;
> > + interrupts = <GIC_SPI 78 IRQ_TYPE_LEVEL_HIGH>;
> > + clocks = <&cru HCLK_EMMC>, <&cru CLK_EMMC>,
> > + <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
> > + clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
> > + fifo-depth = <0x100>;
> > + max-frequency = <200000000>;
>
> > + power-domains = <&power RV1126_PD_NVM>;
>
> /arch/arm/boot/dts/rv1126-edgeble-neu2-io.dtb: mmc at ffc50000: Unevaluated properties are not allowed ('power-domains' was unexpected)
> From schema: /Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.yaml
>
> Add power-domains property to rockchip-dw-mshc.yaml.
Thanks, along with the rest of them will fix it in the next version.
Jagan.
More information about the Linux-rockchip
mailing list