From 0000000000000000000000000000000000000000 Mon Sep 17 00:00:00 2001 From: ssp97 Date: Fri, 11 Apr 2025 23:35:49 +0800 Subject: rk3308: fix uart dma. Signed-off-by: ssp97 --- arch/arm64/boot/dts/rockchip/rk3308.dtsi | 10 +++++++ drivers/soc/rockchip/grf.c | 14 ++++++++++ 2 files changed, 24 insertions(+) diff --git a/arch/arm64/boot/dts/rockchip/rk3308.dtsi b/arch/arm64/boot/dts/rockchip/rk3308.dtsi index 111111111111..222222222222 100644 --- a/arch/arm64/boot/dts/rockchip/rk3308.dtsi +++ b/arch/arm64/boot/dts/rockchip/rk3308.dtsi @@ -323,6 +323,8 @@ uart0: serial@ff0a0000 { clock-names = "baudclk", "apb_pclk"; reg-shift = <2>; reg-io-width = <4>; + dmas = <&dmac0 4>, <&dmac0 5>; + dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>; status = "disabled"; @@ -336,6 +338,8 @@ uart1: serial@ff0b0000 { clock-names = "baudclk", "apb_pclk"; reg-shift = <2>; reg-io-width = <4>; + dmas = <&dmac0 6>, <&dmac0 7>; + dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&uart1_xfer &uart1_cts &uart1_rts>; status = "disabled"; @@ -349,6 +353,8 @@ uart2: serial@ff0c0000 { clock-names = "baudclk", "apb_pclk"; reg-shift = <2>; reg-io-width = <4>; + dmas = <&dmac0 8>, <&dmac0 9>; + dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&uart2m0_xfer>; status = "disabled"; @@ -362,6 +368,8 @@ uart3: serial@ff0d0000 { clock-names = "baudclk", "apb_pclk"; reg-shift = <2>; reg-io-width = <4>; + dmas = <&dmac0 10>, <&dmac0 11>; + dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&uart3_xfer>; status = "disabled"; @@ -375,6 +383,8 @@ uart4: serial@ff0e0000 { clock-names = "baudclk", "apb_pclk"; reg-shift = <2>; reg-io-width = <4>; + dmas = <&dmac1 18>, <&dmac1 19>; + dma-names = "tx", "rx"; pinctrl-names = "default"; pinctrl-0 = <&uart4_xfer &uart4_cts &uart4_rts>; status = "disabled"; diff --git a/drivers/soc/rockchip/grf.c b/drivers/soc/rockchip/grf.c index 111111111111..222222222222 100644 --- a/drivers/soc/rockchip/grf.c +++ b/drivers/soc/rockchip/grf.c @@ -88,6 +88,17 @@ static const struct rockchip_grf_info rk3328_grf __initconst = { .num_values = ARRAY_SIZE(rk3328_defaults), }; +#define RK3308_GRF_SOC_CON3 0x30c + +static const struct rockchip_grf_value rk3308_defaults[] __initconst = { + { "uart dma mask", RK3308_GRF_SOC_CON3, HIWORD_UPDATE(0, 0x1f, 10) }, +}; + +static const struct rockchip_grf_info rk3308_grf __initconst = { + .values = rk3308_defaults, + .num_values = ARRAY_SIZE(rk3308_defaults), +}; + #define RK3368_GRF_SOC_CON15 0x43c static const struct rockchip_grf_value rk3368_defaults[] __initconst = { @@ -173,6 +184,9 @@ static const struct of_device_id rockchip_grf_dt_match[] __initconst = { }, { .compatible = "rockchip,rk3328-grf", .data = (void *)&rk3328_grf, + }, { + .compatible = "rockchip,rk3308-grf", + .data = (void *)&rk3308_grf, }, { .compatible = "rockchip,rk3368-grf", .data = (void *)&rk3368_grf, -- Armbian