介绍
简单来说,sdio起源自sd标准,顾名思义就是sd的IO接口(interface)的意思,更具体的说明,sd本来是记忆卡的标准,但是现在也可以把SD卡拿来插上一些外围设备接口使用,这个就是就叫做sdio。
而且sdio本身是一种相当单纯的技术,通过sd的IO引脚来连接外部外围,并且通过sd的IO数据接位与外围传输数据,而且sd协会也推出很完整的sdio stack 驱动程序,使得sdio外围得开发与应用变得非常热门
这里我们要移植的是RTL8822cs的sdio WiFi 模块,将其移植到rk3308的板子上去。
设备树得修改
我们使用的是sdio接口的,所以我们需要先在设备树内支持相关配置,在自己板子相关的dts中引用sdio和wireless
wireless-wlan {
compatible = "wlan-platdata";
rockchip,grf = <&grf>;
wifi_chip_type = "rtl8822cs";
sdio_vref = <1800>;
WIFI,host_wake_irq = <&gpio4 RK_PB4 GPIO_ACTIVE_HIGH>;
status = "okay";
};
&sdio {
clock-frequency = <100000000>;
clock-freq-min-max = <200000 100000000>;
bus-width = <4>;
max-frequency = <150000000>;
cap-sd-highspeed;
cap-sdio-irq;
keep-power-in-suspend;
supports-sdio;
non-removable;
mmc-pwrseq = <&sdio_pwrseq>;
//sd-uhs-sdr104; //这句话需要屏蔽,不然会出错不上去
num-slots = <1>;
status = "okay";
};
rtl8822cs源码移植
移植源码包我们需要做以下步骤
(1)拷贝源码包到内核
将厂商提供的源码包放入内核内合适的地方,这里我放在kernel/drivers/net/wireless/rockchip_wlan/ 目录下并将其重命名为rtl8822cs
(2)修改kernel/drivers/net/wireless/rockchip_wlan/Makefile 将rtl8822cs加入
# SPDX-License-Identifier: GPL-2.0
obj-$(CONFIG_AP6XXX) += rkwifi/
obj-$(CONFIG_RTL8188EU) += rtl8188eu/
obj-$(CONFIG_RTL8188FU) += rtl8188fu/
obj-$(CONFIG_RTL8189ES) += rtl8189es/
o

本文详细介绍了如何将RTL8822cs SDIO WiFi模块移植到rk3308板子上,包括设备树的修改、内核源码的移植步骤、Kconfig配置以及解决启动时的错误。重点讨论了mmc的配置和sdio设备的检测,确保驱动能够正确加载。

1万+

被折叠的 条评论
为什么被折叠?



