From: Dang Huynh <[email protected]> Add SDMMC1 and 2 controllers for the RDA8810PL platform and enable it on the Orange Pi i96 and 2G-IOT.
Signed-off-by: Dang Huynh <[email protected]> --- .../boot/dts/unisoc/rda8810pl-orangepi-2g-iot.dts | 20 +++++++++ .../arm/boot/dts/unisoc/rda8810pl-orangepi-i96.dts | 20 +++++++++ arch/arm/boot/dts/unisoc/rda8810pl.dtsi | 47 ++++++++++++++++++++-- 3 files changed, 83 insertions(+), 4 deletions(-) diff --git a/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-2g-iot.dts b/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-2g-iot.dts index 98e34248ae80b1fcd673ff01fe045db412d5bcc9..b462057ec0d1eb1877eb770afa6aced99efd84b7 100644 --- a/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-2g-iot.dts +++ b/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-2g-iot.dts @@ -6,6 +6,7 @@ /dts-v1/; +#include <dt-bindings/gpio/gpio.h> #include "rda8810pl.dtsi" / { @@ -27,6 +28,13 @@ memory@80000000 { reg = <0x80000000 0x10000000>; }; + vdd_sdmmc: regulator-fixed { + compatible = "regulator-fixed"; + regulator-name = "vdd_sdmmc"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + uart_clk: uart-clk { compatible = "fixed-clock"; clock-frequency = <921600>; @@ -34,6 +42,18 @@ uart_clk: uart-clk { }; }; +&mmc1 { + status = "okay"; + no-sdio; + no-mmc; + bus-width = <4>; + max-frequency = <30000000>; + cd-gpios = <&gpiob 4 GPIO_ACTIVE_LOW>; + vmmc-supply = <&vdd_sdmmc>; + rda,mclk-adj = /bits/ 8 <1>; + rda,mclk-inv; +}; + &uart1 { status = "okay"; clocks = <&uart_clk>; diff --git a/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-i96.dts b/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-i96.dts index 728f76931b995fdfc036b586f899b15a7f07528b..cf4b75f114b33b27fad0ead4951b15abb1f5cabd 100644 --- a/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-i96.dts +++ b/arch/arm/boot/dts/unisoc/rda8810pl-orangepi-i96.dts @@ -6,6 +6,7 @@ /dts-v1/; +#include <dt-bindings/gpio/gpio.h> #include "rda8810pl.dtsi" / { @@ -27,6 +28,13 @@ memory@80000000 { reg = <0x80000000 0x10000000>; }; + vdd_sdmmc: regulator-fixed { + compatible = "regulator-fixed"; + regulator-name = "vdd_sdmmc"; + regulator-min-microvolt = <2800000>; + regulator-max-microvolt = <2800000>; + }; + uart_clk: uart-clk { compatible = "fixed-clock"; clock-frequency = <921600>; @@ -34,6 +42,18 @@ uart_clk: uart-clk { }; }; +&mmc1 { + status = "okay"; + no-sdio; + no-mmc; + bus-width = <4>; + max-frequency = <30000000>; + cd-gpios = <&gpiob 4 GPIO_ACTIVE_LOW>; + vmmc-supply = <&vdd_sdmmc>; + rda,mclk-adj = /bits/ 8 <1>; + rda,mclk-inv; +}; + &uart1 { status = "okay"; clocks = <&uart_clk>; diff --git a/arch/arm/boot/dts/unisoc/rda8810pl.dtsi b/arch/arm/boot/dts/unisoc/rda8810pl.dtsi index f30d6ece49fb33d9c5c3ad9522c83bb8e4f8b488..438be79a89060655e4a12edc6d3c42574748108b 100644 --- a/arch/arm/boot/dts/unisoc/rda8810pl.dtsi +++ b/arch/arm/boot/dts/unisoc/rda8810pl.dtsi @@ -7,6 +7,8 @@ */ #include <dt-bindings/interrupt-controller/irq.h> +#include <dt-bindings/clock/rda,8810pl-apclk.h> +#include <dt-bindings/dma/rda-ifc.h> / { compatible = "rda,8810pl"; @@ -39,7 +41,7 @@ modem@10000000 { #size-cells = <1>; ranges = <0x0 0x10000000 0xfffffff>; - gpioc@1a08000 { + gpioc: gpioc@1a08000 { compatible = "rda,8810pl-gpio"; reg = <0x1a08000 0x1000>; gpio-controller; @@ -68,6 +70,13 @@ apb@20900000 { #size-cells = <1>; ranges = <0x0 0x20900000 0x100000>; + ap_syscon: syscon@0 { + compatible = "rda,8810pl-apsyscon", "syscon"; + reg = <0x0 0x1000>; + #clock-cells = <1>; + #reset-cells = <1>; + }; + timer@10000 { compatible = "rda,8810pl-timer"; reg = <0x10000 0x1000>; @@ -76,7 +85,7 @@ timer@10000 { interrupt-names = "hwtimer", "ostimer"; }; - gpioa@30000 { + gpioa: gpioa@30000 { compatible = "rda,8810pl-gpio"; reg = <0x30000 0x1000>; gpio-controller; @@ -87,7 +96,7 @@ gpioa@30000 { interrupts = <12 IRQ_TYPE_LEVEL_HIGH>; }; - gpiob@31000 { + gpiob: gpiob@31000 { compatible = "rda,8810pl-gpio"; reg = <0x31000 0x1000>; gpio-controller; @@ -98,7 +107,7 @@ gpiob@31000 { interrupts = <13 IRQ_TYPE_LEVEL_HIGH>; }; - gpiod@32000 { + gpiod: gpiod@32000 { compatible = "rda,8810pl-gpio"; reg = <0x32000 0x1000>; gpio-controller; @@ -123,6 +132,30 @@ uart1: serial@0 { status = "disabled"; }; + mmc1: mmc@50000 { + compatible = "rda,8810pl-mmc", "rda,mmc"; + reg = <0x50000 0x1000>; + interrupts = <3 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&ap_syscon CLK_APB2>; + clock-names = "mclk"; + resets = <&ap_syscon RST_APB2_SDMMC1>; + dmas = <&ifc IFC_SDMMC1_TX>, <&ifc IFC_SDMMC1_RX>; + dma-names = "tx", "rx"; + status = "disabled"; + }; + + mmc2: mmc@60000 { + compatible = "rda,8810pl-mmc", "rda,mmc"; + reg = <0x60000 0x1000>; + interrupts = <4 IRQ_TYPE_LEVEL_HIGH>; + clocks = <&ap_syscon CLK_APB2>; + clock-names = "mclk"; + resets = <&ap_syscon RST_APB2_SDMMC2>; + dmas = <&ifc IFC_SDMMC2_TX>, <&ifc IFC_SDMMC2_RX>; + dma-names = "tx", "rx"; + status = "disabled"; + }; + uart2: serial@10000 { compatible = "rda,8810pl-uart"; reg = <0x10000 0x1000>; @@ -136,6 +169,12 @@ uart3: serial@90000 { interrupts = <11 IRQ_TYPE_LEVEL_HIGH>; status = "disabled"; }; + + ifc: dma-controller@f0000 { + compatible = "rda,8810pl-ifc", "rda,ifc"; + reg = <0xf0000 0x1000>; + #dma-cells = <1>; + }; }; l2: cache-controller@21100000 { -- 2.51.0
