Project

General

Profile

Overview

This project is closed and read-only.

问题:
低端芯片搭配博通的WiFi,比如RK312X/RK3036/RK3188 + broadcom,驱动异常报错:
CMD53 TIMEOUT并有如下DMA错误:
dma-pl330 20078000.pdma: fill_queue:2452 Bad Desc(5838)
dma-pl330 20078000.pdma: fill_queue:2452 Bad Desc(5839)

分析:
broadcom WiFi有使用dma sg模式(可以让多个不连续的内存块通过一次cmd53发出),但是
必须有个要求:每个块的数据长度必须是32字节对齐,低端芯片目前配置的64,所以有异常;

两种改法:
改sdio驱动:

+++ b/drivers/mmc/host/rk_sdmmc.c
@@ -629,7 +629,9 @@ static int dw_mci_edmac_start_dma(struct dw_mci *host, unsigned int sg_len)
        else
                burst_limit = 16;

+       if (host->mmc->restrict_caps & RESTRICT_CARD_TYPE_SDIO)
+               burst_limit = 8;
+
        if (mburst > burst_limit) {
                mburst = burst_limit;
                idx = (ilog2(mburst) > 0) ? (ilog2(mburst) - 1) : 0;

改broadcom驱动:
可以在dhd_config.c裡面修改為如下紅色部份即可。

int
dhd_conf_preinit(dhd_pub_t *dhd)
{
…
        conf->txglom_mode = SDPCM_TXGLOM_CPY;