Rockchip RK3588 kernel dts解析之MMC

Rockchip RK3588 kernel dts解析之MMC

RK3588的MMC分为3中模式:

  • SDMMC
  • SDIO
  • SDHCI

下面针对每种模式的DTS配置进行说明

SDMMC

SDMMC用于SD卡通信
DTS配置参考rk3588s.dtsirk3588-evb2-lp4.dtsi
SDMMC的主要配置在rk3588s.dtsi 中,如下:

sdmmc: mmc@fe2c0000 {
                compatible = "rockchip,rk3588-dw-mshc", "rockchip,rk3288-dw-mshc";
                reg = <0x0 0xfe2c0000 0x0 0x4000>;
                interrupts = <GIC_SPI 203 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&scmi_clk SCMI_HCLK_SD>, <&scmi_clk SCMI_CCLK_SD>,
                         <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
                clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
                fifo-depth = <0x100>;
                max-frequency = <200000000>; //设置 SD 卡的运行频率,虽然设置为 150M,但是还要根据 SD 卡的不同模式进行调整
                pinctrl-names = "default";
                pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_det &sdmmc_bus4>;
                power-domains = <&power RK3588_PD_SDMMC>;
                status = "disabled";
        };

rk3588s.dtsi默认的sdmmc节点默认是disabled状态,需要在需要使用的产品dts中去enable,比如rk3588-evb2-lp4.dtsi,如下:

&sdmmc {
        status = "okay";
        vmmc-supply = <&vcc_3v3_sd_s0>; \\配置 SD 卡设备的 3V3 电源
};

sdmmc其他dts配置说明:

  1. vmmc-supply = <&vcc_3v3_sd_s0>; 配置 SD 卡设备的 3V3 电源,rk3588-evb2-lp4.dtsi中SD卡的3v3电源是直接从PMIC RK806的LDO4提供。如果是有GPIO来控制这路电源可以参考rk3588-evb7-lp4.dtsi增加一个gpio模拟regulator的配置:
vcc_3v3_sd_s0: vcc-3v3-sd-s0-regulator {
                compatible = "regulator-fixed";
                gpio = <&gpio0 RK_PB7 GPIO_ACTIVE_HIGH>;
                pinctrl-names = "default";
                pinctrl-0 = <&sd_s0_pwr>;
                regulator-name = "vcc_3v3_sd_s0";
                enable-active-high;
        };
  1. cap-mmc-highspeed; cap-sd-highspeed; 此配置为标识此卡槽支持 highspeed 的 SD 卡。 如果不配置,表示不支持 highspeed 的 SD 卡。
  2. 配置使用 SD3.0
sd-uhs-sdr12: 时钟频率不超过24M
sd-uhs-sdr25: 时钟频率不超过50M
sd-uhs-sdr50: 时钟频率不超过100M
sd-uhs-ddr50: 时钟频率不超过50M,并且采用双沿采样
sd-uhs-sdr104: 时钟频率不超过208M
  1. 配置 SD 卡热拔插检测脚
    如果检测脚是直接连接到芯片的 SDMMC 控制器的 sdmmc_cd 脚,则请直接将该脚位配置为功能脚,并在 sdmmc 节点的 default 的 pinctrl 内进行引用即可。

如果检测脚是使用其他 GPIO,则需要在 sdmmc 节点内使用 cd-gpios 来进配置,例如

cd-gpios = <&gpio4 24 GPIO_ACTIVE_LOW>;

如果使用 GPIO 的检测脚,但是又要求反向检测方式(即 SD 卡插入时检测脚为高电平),则需要追加

cd-inverted;

SDIO

sdio用于wifi等外设通信
sdio的DTS配置参考rk3588s.dtsirk3588-evb2-lp4.dtsi
rk3588s.dtsi中是芯片级的配置,无需修改

sdio: mmc@fe2d0000 {
                compatible = "rockchip,rk3588-dw-mshc", "rockchip,rk3288-dw-mshc";
                reg = <0x0 0xfe2d0000 0x0 0x4000>;
                interrupts = <GIC_SPI 204 IRQ_TYPE_LEVEL_HIGH>;
                clocks = <&cru HCLK_SDIO>, <&cru CCLK_SRC_SDIO>,
                         <&cru SCLK_SDIO_DRV>, <&cru SCLK_SDIO_SAMPLE>;
                clock-names = "biu", "ciu", "ciu-drive", "ciu-sample";
                fifo-depth = <0x100>;
                max-frequency = <200000000>;
                pinctrl-names = "default";
                pinctrl-0 = <&sdiom1_pins>;
                power-domains = <&power RK3588_PD_SDIO>;
                status = "disabled";
        };

rk3588-evb2-lp4.dtsi中主要是板级相关的配置,可以根据实际需求修改

&sdio {
        max-frequency = <150000000>; //设置最大的频率,可以根据硬件设计改小
        no-sd;
        no-mmc;
        bus-width = <4>; 
        disable-wp;
        cap-sd-highspeed; //此配置同 SD 卡功能,作为 SDIO 外设,也有区分是否为 highspeed 的 SDIO 外设
        cap-sdio-irq; //此配置标识该 SDIO 外设(通常是 Wifi)是否支持 sdio 中断,如果你的外设是 OOB 中断,请不要加入此项。支持哪种类型的中断请联系 Wifi 原厂确定。
        keep-power-in-suspend; //此配置表示是否支持睡眠不断电,请默认加入该选项。Wifi 一般都有深度唤醒的要求。
        mmc-pwrseq = <&sdio_pwrseq>; //此项是 SDIO 外设(一般是 Wifi)的电源控制。为必须项,否则 Wifi 无法上电工作。请参考下面的例子,晶振时钟和复位-使能的 GPIO 的选择按照实际板级硬件要求进行配置。
        non-removable; //此项表示该插槽为不可移动设备且此项为 SDIO 设备必须添加项。
        pinctrl-names = "default";
        pinctrl-0 = <&sdiom0_pins>;
        sd-uhs-sdr104; //此项配置决定该 SDIO 设备是否支持 SDIO3.0 模式。前提是需要 Wifi 的 IO 电压为 1.8v。同SDMMC配置
        status = "okay";
}

SDHCI

sdhci用于EMMC通信
sdhci的dts配置参考:rk3588s.dtsirk3588-evb.dtsi
其中rk3588s.dtsi 主要是芯片级的配置无需修改,如下

sdhci: mmc@fe2e0000 {
                compatible = "rockchip,rk3588-dwcmshc", "rockchip,dwcmshc-sdhci";
                reg = <0x0 0xfe2e0000 0x0 0x10000>;
                interrupts = <GIC_SPI 205 IRQ_TYPE_LEVEL_HIGH>;
                assigned-clocks = <&cru BCLK_EMMC>, <&cru TMCLK_EMMC>, <&cru CCLK_EMMC>;
                assigned-clock-rates = <200000000>, <24000000>, <200000000>;
                clocks = <&cru CCLK_EMMC>, <&cru HCLK_EMMC>,
                         <&cru ACLK_EMMC>, <&cru BCLK_EMMC>,
                         <&cru TMCLK_EMMC>;
                clock-names = "core", "bus", "axi", "block", "timer";
                resets = <&cru SRST_C_EMMC>, <&cru SRST_H_EMMC>,
                         <&cru SRST_A_EMMC>, <&cru SRST_B_EMMC>,
                         <&cru SRST_T_EMMC>;
                reset-names = "core", "bus", "axi", "block", "timer";
                max-frequency = <200000000>;
                status = "disabled";
        };

rk3588-evb.dtsi是板级相关配置,可以根据实际需求进行配置

&sdhci {
        bus-width = <8>;
        no-sdio;
        no-sd;
        non-removable;
        max-frequency = <200000000>;//配置最大频率,根据实际需求可以减少
        mmc-hs400-1_8v;   //此两项配置表示支持 HS400 模式以及 HS400ES 模式
        mmc-hs400-enhanced-strobe; //此两项配置表示支持 HS400 模式以及 HS400ES 模式
        status = "okay";
};

SDHCI还支持:

  • 50MDDR 模式:mmc-ddr-1_8v;
  • HS200 模式:mmc-hs200-1_8v;
  • 6
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
Rockchip RK3588是一款高性能的芯片,主要用于移动设备和嵌入式系统。它支持USB接口,可以用于连接外部设备,并进行数据传输和通信。 关于Rockchip RK3588 USB开发指南,以下是一些建议和指导: 1. 创建USB连接:首先,需要在嵌入式系统中创建一个USB连接。这可以通过配置硬件和软件来完成。硬件方面,需要确保RK3588芯片和USB接口的正确连接。软件方面,可以使用相应的驱动程序和库来管理和控制USB连接。 2. USB驱动程序开发:为了实现与外部设备的数据交换,需要编写USB驱动程序。这些驱动程序可以通过使用底层的USB协议和API来完成。可以选择使用已有的USB驱动程序框架,如libusb等,也可以根据具体需求自行编写驱动程序。 3. 数据传输和通信:一旦USB连接建立并配置完毕,就可以通过USB接口进行数据传输和通信。可以使用USB的各种传输模式,如批量传输、中断传输或等时传输,根据实际需求选择合适的模式。 4. USB设备接口开发:如果需要将RK3588芯片作为USB设备使用,还需要进行USB设备接口开发。可以根据设备规范和需求,设计并实现相应的USB接口。 5. 软件开发工具:为了更便捷地进行Rockchip RK3588 USB开发,可以使用相应的软件开发工具。Rockchip提供了开发工具包(SDK)和调试工具,可以加快开发过程,并提供调试和优化的功能。 总之,Rockchip RK3588 USB开发指南涵盖了创建USB连接、USB驱动程序开发、数据传输和通信、USB设备接口开发等内容。通过合理的设计和开发,可以充分利用RK3588的强大性能和USB接口的灵活性,实现丰富的移动设备和嵌入式系统功能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

loitawu

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值