WIFI AP6256 HT clk超时问题

说明

LPO脚休眠时钟脚,一直以为是不休眠就不需要的。不接入32.768Khz结果会报错:

[   25.887632] [dhd] dhd_os_get_img_fwreq: request_firmware /config.txt err: -2
[   25.887641] [dhd] dhd_os_get_img(Request Firmware API) error : -30
[   25.887649] [dhd] dhd_conf_read_config : Ignore config file /config.txt
[   25.888702] [dhd] dhd_os_get_img_fwreq: /fw_bcm43456c5_ag.bin (628872 bytes) open success
[   25.924129] [dhd] dhd_os_get_img_fwreq: /nvram_ap6256.txt (2732 bytes) open success
[   25.924188] [dhd] #AP6256_NVRAM_V1.4_06112021
[   25.924512] [dhd] dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
[   26.722553] [dhd] dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50
[   26.722610] [dhd] dhd_bus_init: clock state is wrong. state = 1
[   27.542557] [dhd] dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50
[   27.542787] [dhd] dhd_bus_stop: making DHD_BUS_DOWN
[   27.542820] [dhd] dhd_net_bus_devreset: dhd_bus_devreset: -1
[   27.542830] [dhd] wl_android_wifi_on: failed to power up wifi chip, retry again (0 left) **
[   27.542839] [dhd] dhd_net_bus_devreset: dhd_bus_devreset: -35
[   27.542880] [dhd] wifi_platform_set_power = 0, delay: 10 msec

里面主要的一句是:

[dhd] dhdsdio_htclk: HT Avail timeout (1000000): clkctl 0x50

排查

之前没想到是这个的问题,但是回忆了下之前应该发现了,没有记录下来,导致现在有个大坑。

是网上发现其他模块手册上明说了这个sleep clk 是必须的我才反应过来的。

alt text

alt text

链接:

https://www.ezurio.com/documentation/datasheet-sterling-lwb5-0

https://www.ezurio.com/support/faqs/why-and-i-getting-an-error-in-dmesg-brcmfmac-brcmf-sdio-htclk-ht-avail-timeout-1000000-clkctl-0x50-when-trying-to-start-my-sterling-lwb-radio

手册

alt text

没有明说是必须要,但是上电时序上有这个。

链接:

https://www.ampak.com.tw/uploads/files/shares/DataSheet/Stamp_Type_1T1R/AP6256 datasheet_EN.pdf

硬件

alt text

详细说明报错

clkctl 0x50 意思:

SBSDIO_FUNC1_CHIPCLKCSR 的位定义(include/sbsdio.h:118-133):

位 名称 含义
0x10 SBSDIO_HT_AVAIL_REQ 主机请求 HT —— 注释原文 "Make HT ready (power up PLL)"
0x40 SBSDIO_ALP_AVAIL 状态:ALP 时钟已就绪
0x80 SBSDIO_HT_AVAIL 状态:HT 时钟已就绪

0x50 = 0x40 | 0x10 → 我们要的 HT(0x80)一直没有置起来,只有 ALP(0x40)就绪。

驱动的判定是 SBSDIO_CLKAV = ALPAV && HTAV,也就是两个 avail 位都得置上(0xC0)。

现在只有 0x40 → 不满足 → 轮询到 PMU_MAX_TRANSITION_DLY 超时。

直白翻译:ALP(常开低功耗)时钟起来了,但 HT(PLL)时钟起不来。

常开时钟源ALP 选择了LPO(32.768kHz)
↓
芯片常开时钟域 / PMU 状态机
↓
把 PLL 拉起来(PLL 参考 = 主 XTAL 37.4MHz)
↓
HT 时钟可用 → ARM 固件才能正常工作

常开时钟的源(ALP)默认配成了 LPO,要改的是这个"源选择",它由 module 的 OTP/strap 决定 —— 不在 kernel/nvram 能改的范围内(对 AP6256 这颗)。所以内核源码是改不了的。

或者找 AMPAK 确认这颗 module 的 OTP 能不能配成内部 LPO(如果能,才算真的"不用 LPO 脚")。

记录操作

# WIFI连接
insmod /lib/modules/bcmdhd.ko
nmcli dev wifi connect QYWIFI password QY@2019.com wep-key-type key ifname wlan0
# 蓝牙扫描
hcitool scan
posted @ 2026-09-23 10:17  杨旭0324  阅读(17)  评论(0)    收藏  举报