rk3568_linux5.10 调试6275p pcie wifi

a : config 部分必须选择

Device Drivers ---> Network device support ---> Wireless LAN ---> Rockchip Wireless LAN support --->

[*] build wifi ko modules

[*] Broadcom Wireless Device Driver Support --->

选择好路径:

(/system/etc/firmware/fw_bcm43752a2_pcie_ag.bin) Firmware path

(/system/etc/firmware/nvram_ap6275p.txt) NVRAM path

Enable Chip Interface (PCIe bus interface support) --->

选择好pcie 接口

(X) PCIe bus interface support

b:检查内核Wi-Fi配置,打开如下几个配置:

CONFIG_WL_ROCKCHIP=y

CONFIG_WIFI_BUILD_MODULE=y

CONFIG_BCMDHD=y

CONFIG_AP6XXX=m

CONFIG_BCMDHD_PCIE=y #PCIE接口,与SDIO互斥,不是PCIE可不配

CONFIG_BCMDHD_SDIO=y

c:确认6275p的几个需要的文件:

wifi:

clm_bcm43752a2_pcie_ag.blob

fw_bcm43752a2_pcie_ag.bin

fw_bcm43752a2_pcie_ag_apsta.bin

nvram_AP6275P.txt

BT:

BCM4362A2.hcd

fw_path=/system/etc/firmware/fw_bcm43752a2_pcie_ag.bin

nv_path=/system/etc/firmware/nvram_AP6275P.txt

clm_path=/system/etc/firmware/clm_bcm43752a2_pcie_ag.blob

conf_path=/system/etc/firmware/config.txt

确认以上文件在系统中

d:DTS 中配置:

vcc3v3_pcie: gpio-regulator {

compatible = "regulator-fixed";

regulator-name = "vcc3v3_pcie";

regulator-min-microvolt = <3300000>;

regulator-max-microvolt = <3300000>;

enable-active-high;

gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;

startup-delay-us = <5000>;

vin-supply = <&dc_12v>;

};

&pcie2x1 {

reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;

vpcie3v3-supply = <&vcc3v3_pcie>;

status = "okay";

};

&combphy1_usq {

status = "okay";

};

&combphy2_psq {

status = "okay";

};

&csi2_dphy_hw {

status = "okay";

};

&csi2_dphy0 {

status = "disabled";

ports {

#address-cells = <1>;

#size-cells = <0>;

port@0 {

reg = <0>;

#address-cells = <1>;

#size-cells = <0>;

mipi_in_ucam0: endpoint@1 {

reg = <1>;

data-lanes = <1 2>;

};

mipi_in_ucam1: endpoint@2 {

reg = <2>;

data-lanes = <1 2 3 4>;

};

};

port@1 {

reg = <1>;

#address-cells = <1>;

#size-cells = <0>;

csidphy_out: endpoint@1 {

reg = <1>;

remote-endpoint = <&isp0_in>;

};

};

};

};

其中 :

gpio = <&gpio0 RK_PB5 GPIO_ACTIVE_HIGH>;

reset-gpios = <&gpio0 RK_PB6 GPIO_ACTIVE_HIGH>;

对应原理图中:

注意:此io不能配置错误会导致一下问题:其中红色就是因为resetIO 无法获取导致无法使能PCIE设备无法工作 出现PCIE 获取不到任何设备信息dhdpcie_dongle_attach : failed to read PCI configuration space!,导致无法load fireware

[ 558.123677] [dhd] _dhd_module_init: in Dongle Host Driver, version 101.10.361.20 (wlan=r892223-20220701-3)

[ 558.123677] drivers/net/wireless/rockchip_wlan/rkwifi/bcmdhd compiled on Mar 17 2023 at 11:55:16

[ 558.123677]

[ 558.123787] [dhd] ANDROID_VERSION = 12

[ 558.123802] [dhd] ======== dhd_wlan_init_plat_data ========

[ 558.123810] [dhd] dhd_wlan_init_gpio: WL_REG_ON=-1

[ 558.123818] [dhd] dhd_wifi_platform_load: Enter

[ 558.124112] pcieh 0000:01:00.0: of_irq_parse_pci: failed with rc=134

[ 558.124root@linaro-alip:~# 133] [dhd] dhdpcie_pci_probe : no mutex held

[ 558.124140] [dhd] dhdpcie_pci_probe : set mutex lock

[ 558.124151] [dhd] PCI_PROBE: bus 1, slot 0,vendor 14E4, device 449D(good PCI location)

[ 558.124165] [dhd] dhdpcie_init: found adapter info 'DHD generic adapter'

[ 558.124175] [dhd] STATIC-MSG) dhd_wlan_mem_prealloc : sectoin 3, size 139264

[ 558.124277] [dhd] succeed to alloc static buf

[ 558.124284] [dhd] STATIC-MSG) dhd_wlan_mem_prealloc : sectoin 4, size 0

[ 558.124318] pcieh 0000:01:00.0: can't change power state from D3cold to D0 (config space inaccessible)

[ 558.124428] [dhd] Disable CTO

[ 558.124445] [dhd] dhdpcie_dongle_attach : failed to read PCI configuration space!

[ 558.124493] [dhd] status_cmd(0x4)=0xffffffff, pmcsr(0x4c)=0xffffffff base_addr0(0x10)=0xffffffff base_addr1(0x18)=0xffffffff linkctl(0xbc)=0xffffffff l1ssctrl(0x248)=0xffffffff devctl(0xb4)=0xffffffff devctl2(0xd4)=0xffffffff

[ 558.124506] [dhd] dhdpcie_bus_attach: dhdpcie_probe_attach failed

[ 558.124515] [dhd] dhdpcie_init:dhdpcie_bus_attach() failed

[ 558.124529] [dhd] dhdpcie_pci_probe: PCIe Enumeration failed

[ 558.124537] [dhd] dhdpcie_pci_probe : mutex is released.

[ 558.124759] [dhd] dhdpcie_bus_register: dhdpcie initialize failed.

[ 558.124817] [dhd] dhd_wifi_platform_load_pcie: pcie_register_driver failed

[ 558.124830] [dhd] unregister wifi platform drivers

[ 558.124840] [dhd] wifi_platform_bus_enumerate device present 0

[ 558.124850] [dhd] ======== Card detection to remove PCIE card! ========

[ 558.124857] [dhd] ======== dhd_wlan_deinit_plat_data ========

[ 558.124867] [dhd] _dhd_module_init: Failed to load the driver, try cnt 0

[ 558.124926] [dhd] _dhd_module_init: Failed to load driver max retry reached**

[ 558.124937] [dhd] _dhd_module_init: Exit err=-1

[ 918.408538] rockchip-vop2 fe040000.vop: [drm:vop2_crtc_atomic_disable] Crtc atomic disable vp0

[ 921.005166] rockchip-vop2 fe040000.vop: [drm:vop2_crtc_atomic_enable] Update mode to 1366x768p60, type: 11(if:800) for vp0 dclk: 85500000

任何无法开启wifi 的问题应该先测试以下IO 要均为高

另外linux 5.10的版本buildroot使用的Z:\linux-arm\rk3568_linux5.10\external\rkwifibt\drivers\bcmdhd 下的驱动,和kernel 驱动无关系

external/rkwifibt/

firmware目录:包含各个厂家WiFiBT的firmware文件

drivers目录:包含各个厂家的WiFiBT驱动

bin目录:主要是原厂预置的一些二进制文件

sh目录:主要是开机的WIFIBT的加载脚本,及测试脚本等

S36load_*: WiFiBT开机ko加载及初始化脚本

标准配置:

device/rockchip/rk3xxx/BoardConfig-xxxxxx.mk

export RK_WIFIBT_CHIP=AP6275_PCIE

# Define BT ttySX

export RK_WIFIBT_TTY=ttyS8

单独编译

./build.sh rootfs && ./build.sh firmware

开机自动加载WIFI KO 重要

# 原始文件位置如下,它经过./build.sh 或者make rkwifibt-rebuild编译后会被拷贝

到/etc/init.d/目录下(每次修改后需要重新编译打包)

catexternal/rkwifibt/SXXload_wifi_xxx_modules

...

insmod WIFI_KO # 内容为通用的名字,在编译期间会根据rkwifibt的配置进行替换

...

# 通过menuconfig的配置及buildroot/package/rockchip/rkwifibt/Config.in & rkwifibt.mk

的编译规则.

# rkwifibt.mk 内容节选如下,WIFI_KO被替换成实际配置的ko名字

$(SED)'s/WIFI_KO/\/$(FIRMWARE_DIR)\/lib\/modules\ ... ...

# 查看编译后的文件内容

catbuildroot/output/rockchip_rk3xxxx/target/etc/init.d/SXXload_wifi_xxx_modules

... ...

#可以看到Wi-Fi KO被替换成实际配置的ko,

正常的加载log:

no interfaces have a carrier

[ 6.403580] rk_gmac-dwmac fe010000.ethernet eth0: PHY [stmmac-1:00] driver [Generic PHY] (irq=POLL)

[ 6.413599] dwmac4: Master AXI performs any burst length

[ 6.413722] rk_gmac-dwmac fe010000.ethernet eth0: No Safety Features support found

[ 6.413792] rk_gmac-dwmac fe010000.ethernet eth0: IEEE 1588-2008 Advanced Timestamp supported

[ 6.414423] rk_gmac-dwmac fe010000.ethernet eth0: registered PTP clock

[ 6.416619] rk_gmac-dwmac fe010000.ethernet eth0: configuring for phy/rgmii link mode

[ 6.419100] [dhd] dhd_pri_open : no mutex held

[ 6.419142] [dhd] dhd_pri_open : set mutex lock

[ 6.419151] [dhd] [wlan0] dhd_open : Enter

[ 6.419159] [dhd] Dongle Host Driver, version 101.10.361.25 (wlan=r892223-20220929-2)

[ 6.419159] /home/malei/work/rk/external/rkwifibt/drivers/bcmdhd compiled on Mar 20 2023 at 10:45:56

[ 6.419159]

[ 6S.t4a1r9t1i7n4g] n[tpd: hd] dhd_open: ######### called for ifidx=0 #########

[ 6.419193] [dhd] [wlan0] wl_android_wifi_on : in g_wifi_on=0

[ 6.419202] [dhd] wifi_platform_set_power = 1, delay: 200 msec

[ 6.419209] [dhd] ======== PULL WL_REG_ON(-1) HIGH! ========

[ 6.419217] [WLAN_RFKILL]: rockchip_wifi_power: 1

[ 6.419225] [WLAN_RFKILL]: rockchip_wifi_power: toggle = false

[ 6.419233] [WLAN_RFKILL]: wifi turn on power [GPIO-1-0]

[ 6.725684] [dhd] dhd_bus_devreset: == Power ON ==

[ 6.725799] [dhd] dhd_bus_devreset: dhdpcie_bus_start_host_dev OK

[ 6.726774] [dhd] Disable CTO

[ 6.728136] [dhd] DHD: dongle ram size is set to 1310720(orig 1310720) at 0x170000

[ 6.728193] [dhd] dhdpcie_bar1_window_switch_enab: bar1_switch_enab=0 ramstart=0x170000 ramend=0x2affff bar1_size=0x400000

[ 6.728381] [dhd] dhdpcie_request_irq: INTx enabled, irq=80

[ 6.728507] [dhd] dhd_bus_download_firmware: firmware path=/system/etc/firmware/fw_bcm43752a2_pcie_ag.bin, nvram path=/system/etc/firmware/nvram_ap6275p.txt

[ 6.728552] [dhd] dhdpcie_dump_resource: BAR0(VA): 0x00000000850dbe7a, BAR0(PA): 0x00000000f4200000, SIZE: 32768

[ 6.728578] [dhd] dhdpcie_dump_resource: BAR1(VA): 0x00000000daafc15e, BAR1(PA): 0x00000000f4400000, SIZE: 4194304

[ 6.728654] [dhd] dhd_conf_set_path_params : Final fw_path=/system/etc/firmware/fw_bcm43752a2_pcie_ag.bin

[ 6.728677] [dhd] dhd_conf_set_path_params : Final nv_path=/system/etc/firmware/nvram_AP6275P.txt

[ 6.728697] [dhd] dhd_conf_set_path_params : Final clm_path=/system/etc/firmware/clm_bcm43752a2_pcie_ag.blob

[ 6.728717] [dhd] dhd_conf_set_path_params : Final conf_path=/system/etc/firmware/config.txt

[ 6.728900] [dhd] dhd_get_download_buffer: Open image file failed /system/etc/firmware/config.txt

[ 6.728941] [dhd] dhd_conf_read_config : Ignore config file /system/etc/firmware/config.txt

[ 6.728988] [dhd] d2h_intr_method -> PCIE_INTX(0); d2h_intr_control -> D2H_INTMASK(0)

[ 6.729258] [dhd] dhdpcie_download_code_file: dhd_tcm_test_enable 0

[ 6.729283] [dhd] dhdpcie_download_code_file: download firmware /system/etc/firmware/fw_bcm43752a2_pcie_ag.bin

[ 6.729424] [dhd] dhd_os_open_image1: /system/etc/firmware/fw_bcm43752a2_pcie_ag.bin (936074 bytes) open success

[ 6.797091] [dhd] dhd_os_open_image1: /system/etc/firmware/nvram_AP6275P.txt (7458 bytes) open success

[ 6.797202] [dhd] dhdpcie_download_nvram: dhd_get_download_buffer len 7458

[ 6.797213] [dhd] # AP6275P_NVRAM_V1.2_20210918A

[ 6.797277] [dhd] dhdpcie_download_nvram: process_nvram_vars len 6036

[ 6.811836] [dhd] dhdpcie_bus_write_vars: Download, Upload and compare of NVRAM succeeded.

[ 6.812040] [dhd] dhd_bus_aer_config: Configure AER registers for EP

[ 6.812091] [dhd] dhd_bus_aer_config: Configure AER registers for RC

[ 6.914142] [dhd] ### Total time ARM OOR to Readshared pass took 102143 usec ###

[ 6.914185] [dhd] dhdpcie_readshared: PCIe shared addr (0x0020a584) read took 100000 usec before dongle is ready

[ 6.914728] [dhd] H2D DMA WR INDX : array size 172 = 4 * 43

[ 6.914742] [dhd] D2H DMA RD INDX : array size 16 = 4 * 4

[ 6.914754] [dhd] D2H DMA WR INDX : array size 16 = 4 * 4

[ 6.914766] [dhd] H2D DMA RD INDX : array size 172 = 4 * 43

[ 6.914780] [dhd] dhdpcie_readshared: max H2D queues 40

[ 6.914790] [dhd] FW supports debug buf dest ? N

[ 6.914964] [dhd] dhd_bus_init: Enabling bus->intr_enabled

[ 6.914981] [dhd] dhdpcie_oob_intr_register OOB irq=112 flags=0x4

[ 6.915064] [dhd] dhdpcie_oob_intr_register: enable_irq_wake

[ 6.915088] [dhd] dhd_bus_start: Initializing 43 h2drings

[ 6.915141] [dhd] STATIC-MSG) dhd_wlan_mem_prealloc : section 9, size 32896

[ 6.915176] [dhd] dhd_prot_init:3921: h2d_max_txpost = 512

[ 6.915311] [dhd] dhd_prot_init:3936: MAX_RXBUFPOST = 511

[ 6.915327] [dhd] ENABLING DW:0

[ 6.915338] [dhd] IDMA inited

[ 6.915348] [dhd] IFRM not enabled in FW !!

[ 6.915358] [dhd] DAR not enabled in FW !!

[ 6.915368] [dhd] Enable hostcap: EXTD TXS in txcpl

[ 6.915712] [dhd] dhd_prot_d2h_sync_init(): D2H sync mechanism is NONE

[ 6.915751] [dhd] dhd_bus_hostready : Read PCICMD Reg: 0x00100006

[ 6.915789] [dhd] dhd_bus_dump_dar_registers: dar_clk_ctrl(0xa08:0x10b0040) dar_pwr_ctrl(0xa0c:0x30000) dar_intstat(0xa10:0x0)

[ 6.915814] [dhd] dhd_bus_dump_dar_registers: dar_errlog(0xa60:0x0) dar_erraddr(0xa64:0x0) dar_pcie_mbint(0xa68:0x0)

[ 6.915958] [dhd] dhd_bus_hostready: Ring Hostready:1

[ 6.915971] [dhd] iDMA enabled PCIEControl = 00000001

[ 6.918382] [dhd] dhd_send_d2h_ringcreate ringid: 3 idx: 46 max_h2d: 43

[ 6.918655] [dhd] dhd_prot_process_d2h_ring_create_complete ring create Response status = 0 ring 3, id 0xfffc

[ 6.918700] [dhd] info buffer post after ring create

[ 6.920647] [dhd] wlc_ver_major 12, wlc_ver_minor 1

[ 6.923447] [dhd] dhd_sync_with_dongle: GET_REVINFO device 0x449d, vendor 0x14e4, chipnum 0xaae8

[ 6.926218] [dhd] dhd_sync_with_dongle: RxBuf Post : 2048

[ 6.933888] [dhd] dhd_preinit_ioctls: preinit_status IOVAR not supported, use legacy preinit

[ 6.933988] [dhd] dhd_tcpack_suppress_set: TCP ACK Suppress mode 0 -> mode 3

[ 6.934015] [dhd] dhd_tcpack_suppress_set: TCPACK_INFO_MAXNUM=10, TCPDATA_INFO_MAXNUM=10

[ 6.937791] [dhd] dhd_legacy_preinit_ioctls: hostwake_oob enabled

[ 6.940590] [dhd] dhd_legacy_preinit_ioctls: use firmware generated mac_address d4:9c:dd:dd:07:30

[ 6.940771] [dhd] dhd_os_open_image1: /system/etc/firmware/clm_bcm43752a2_pcie_ag.blob (30993 bytes) open success

[ 6.943428] [dhd] dhd_check_current_clm_data: ----- This FW is not included CLM data -----

[ 7.013696] [dhd] dhd_check_current_clm_data: ----- This FW is included CLM data -----

[ 7.024996] [dhd] Firmware up: op_mode=0x0005, MAC=d4:9c:dd:dd:07:30

[ 7.067872] [dhd] dhd_legacy_preinit_ioctls: event_log_max_sets: 26 ret: 0

[ 7.075547] [dhd] arp_enable:1 arp_ol:0

[ 7.083064] [dhd] Driver: 101.10.361.25 (wlan=r892223-20220929-2)

[ 7.083064] [dhd] Firmware: wl0: Jul 12 2022 18:54:54 version 18.35.387.23.146 (g412cc5ec) FWID 01-93c53be6

[ 7.083064] [dhd] CLM: 9.9.12_SS (2021-10-12 17:03:28)

[ 7.083895] [dhd] dhd_pno_init: Support Android Location Service

[ 7.101059] [dhd] [INIT] logset:8 is preserve/chatty

[ 7.103542] [dhd] [INIT] logset:10 is preserve/chatty

[ 7.124429] [dhd] dhd_ecounter_autoconfig Ecounter autoconfig in FW not supported

[ 7.129060] [dhd] dhd_rx_frame: net device is NOT registered. drop event packet

[ 7.130291] [dhd] dhd_conf_country : country code = CN/0 is already configured

[ 7.146307] [dhd] dhd_bus_devreset: WLAN Power On Done

[ 7.146377] [dhd] [wlan0] wl_android_wifi_on : Success

[ 7.178876] [dhd] dhd_rx_frame: net device is NOT registered. drop event packet

[ 7.196127] [dhd] [wlan0] wl_cfg80211_up : Roam channel cache enabled

[ 7.198039] [dhd] [wlan0] dhd_open : Exit ret=0

[ 7.198072] [dhd] [wlan0] dhd_pri_open : tx queue started

[ 7.198118] [dhd] [wlan0] custom_xps_map_set : Done. mapping cpu

[ 7.198131] [dhd] dhd_pri_open : mutex is released.

猜你喜欢

转载自blog.csdn.net/m0_56343264/article/details/129673684