4.0 RTL8723DU驱动(wifi+蓝牙)
rtl8723dureboot不正常 断电重启正常 移植过程
·
文章目录
写在前面
公司使用px30 + rtl8723du驱动来使能蓝牙和wifi功能,目前蓝牙需要厂家提供固件,调通再更新。记录一下wifi移植的时候一个奇怪的现象:rtl8723du wifi 断电重启正常,但是reboot软重启,wifi不正常。具体表现为ifconfig 看不到wlan的信息,使用ifconfig wlan0 up 显示 找不到节点,将调试构成记录一下。
wifi驱动涉及代码
目录 | 内容 |
---|---|
drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd | 系统接口 |
net/rfkill/rfkill-wlan.c | 设备驱动 |
drivers/net/wireless/rockchip_wlan/rtl8723du | 厂家驱动 |
wifi驱动设备树修改
wireless-wlan {
compatible = "wlan-platdata";//和rfkill-wlan.c电源驱动匹配
wifi_chip_type = "8723du";//用它来判断使用哪个硬件模块,加载对应的wifi驱动,配置。
keep_wifi_power_on;//打开后表示开机过程后就直接上电,并且一直保持上电状态,后续的电源操作会失效。
//有些WiFi模组可能是WiFi和BT共用电源,这时需要一直保持上电状态
WIFI,poweren_gpio = <&gpio1 RK_PC0 GPIO_ACTIVE_HIGH>; //电源口,有复位功能
status = "okay";
};
wifi驱动修改px30_linux_defconfig
CONFIG_RTL8723DU=y
wifi驱动修改Kconfig
vi drivers/net/wireless/rockchip_wlan/Kconfig
source "drivers/net/wireless/rockchip_wlan/rtl8723du/Kconfig"
wifi驱动修改Makefile
vi drivers/net/wireless/rockchip_wlan/Makefile
obj-$(CONFIG_RTL8723DU) += rtl8723du/
wifi驱动遇到问题
第一次烧写之后 ,重启识别不到wifi设备,多次测试发现,断电重启,wifi正常,但是reboot重启,wifi就不能正常,具体表现为ifconfig 看不到wlan的信息,怀疑有时候这个驱动的引脚拉高拉低的 操作有点问题,复位一下WIFI_PWR_EN_H 这个引脚,目前有两种解决方法
1 内核里面就是给这个函数加一下延时
int rockchip_wifi_power(int on)
{
struct rfkill_wlan_data *mrfkill = g_rfkill;
struct rksdmmc_gpio *poweron, *reset;
struct regulator *ldo = NULL;
int power = 0;
bool toggle = false;
//txr 20220421 okay
msleep(100);
LOG("%s: %d\n", __func__, on);
if (!on && primary_sdio_host)
mmc_pwrseq_power_off(primary_sdio_host);
if (mrfkill == NULL) {
LOG("%s: rfkill-wlan driver has not Successful initialized\n", __func__);
return -1;
}
2 在启动脚本里手动重启
vi /etc/init/rcS
#在脚本末尾加一下就行 0xFF250000 这个得是原理图电源叫对应的寄存器地址
io -4 -w 0xFF250000 0x00010000
io -4 -w 0xFF250000 0x00000000
io -4 -w 0xFF250000 0x00010000
更多推荐
所有评论(0)
您需要登录才能发言
加载更多