기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.

bcm4329 driver를 install하는 과정에서 Error가 발생합니다.

해결할 수 있는 방법에 대하여 조언을 부탁드립니다.

 

정상적으로 Firmware와 nvram을 download하고

reset과정에서

dhdsdio_htclk: HT Avail request error: -35

가 발생합니다.

 

# insmod bcm4329.ko
dhd_module_init: Enter
dhd_customer_gpio_wlan_ctrl: Enter
[WIFI] Device powering ON
sdhci_s3c_force_presence_change : Enter
mmc_detect_change : Enter
mmc_schedule_delayed_work : Enter
mmc_schedule_delayed_work : Enter
[WIFI] Device powering ON exit
dhd_bus_register: Enter

Starting memory Physical address for WIFI : 0x43400000
BRCM WIFI VIRTUAL ADDRESS 3 : ed78e000
dhdsdio_probe: Enter
dhdsdio_probe: venid 0x14e4 devid 0x0000
dhdsdio_probe: allow device id 0, will check chip internals
F1 signature read @0x18000000=0x9934329
Found chip type SB (0x09934329)
_sb_scan: scan bus 0x18000000 assume 1 cores
_sb_scan: there are 9 cores in the chip
_sb_scan: scan bus 0x18010000 assume 4 cores
_sb_scan: found 4 cores on bus 0x18010000
_sb_scan: found 5 cores on bus 0x18000000
Chipc: rev 29, caps 0x3048010a, chipst 0x2f2 pmurev 6, pmucaps 0x21cc3606
CORE[0]: id 0x800 rev 29 base 0x18000000 regs 0x18000000
CORE[1]: id 0x812 rev 20 base 0x18001000 regs 0x18001000
CORE[2]: id 0x82a rev 0 base 0x18002000 regs 0x18002000
CORE[3]: id 0x80e rev 4 base 0x18003000 regs 0x18003000
CORE[4]: id 0x830 rev 1 base 0x18004000 regs 0x18004000
CORE[5]: id 0x830 rev 1 base 0x18010000 regs 0x18010000
CORE[6]: id 0x829 rev 1 base 0x18011000 regs 0x18011000
CORE[7]: id 0x831 rev 0 base 0x18012000 regs 0x18012000
CORE[8]: id 0x832 rev 0 base 0x18013000 regs 0x18013000
Buscore id/type/rev 6/0x829/1
si_attach end
(3) memsize 0x40000
(4) memsize 0x48000
(5) memsize 0x48000
DHD: dongle ram size is set to 294912(orig 294912)
dhd_attach: Enter
dhd_add_if: idx 0, handle->ea38ac00
BRCM WIFI VIRTUAL ADDRESS 0 : ed780000
dhdsdio_probe_malloc: Enter
BRCM WIFI VIRTUAL ADDRESS 1 : ed783000
BRCM WIFI VIRTUAL ADDRESS 2 : ed786000
dhdsdio_probe_init: Enter
dhdsdio_probe_init: Initial value for sd_divisor is 2
dhdsdio_probe_init: Initial value for sd_mode is 2
dhdsdio_probe_init: Initial value for sd_blocksize is 512
dhdsdio_probe_init: bus module (through bcmsdh API) does not support chaining
dhdsdio_probe: disable SDIO interrupts (not interested yet)
dhdsdio_probe: registered SDIO interrupt function ok
dhdsdio_probe: completed!!
dhd_bus_start:
dhdsdio_clkctl: Enter
dhdsdio_htclk: Enter
Check Clock: 8
CLKCTL: turned ON
dhdsdio_clkctl: 1 -> 3
fw_path : ./4329rtecdc.bin
dhdsdio_membytes: write 4 bytes at offset 0x00007ffc in window 0x00040000
dhdsdio_download_code_file: download firmware ./4329rtecdc.bin
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00000000
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00008000
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00010000
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00018000
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00020000
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00028000
dhdsdio_membytes: write 2048 bytes at offset 0x00000000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00000800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00001000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00001800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00002000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00002800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00003000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00003800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00004000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00004800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00005000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00005800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00006000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00006800 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00007000 in window 0x00030000
dhdsdio_membytes: write 2048 bytes at offset 0x00007800 in window 0x00030000
dhdsdio_membytes: write 196 bytes at offset 0x00000000 in window 0x00038000
nv_path : ./4329nvram.txt
dhdsdio_downloadvars: Enter
dhdsdio_membytes: write 612 bytes at offset 0x00007d98 in window 0x00040000
Compare NVRAM dl & ul; varsize=612
dhdsdio_membytes: read 612 bytes at offset 0x00007d98 in window 0x00040000
dhdsdio_write_vars: Download, Upload and compare of NVRAM succeeded.
Physical memory size: 294912, usable memory size: 294912
Vars are at 294296, orig varsize is 612
New varsize is 612, length token=0xff660099
dhdsdio_membytes: write 4 bytes at offset 0x00007ffc in window 0x00040000
dhdsdio_clkctl: Enter
dhdsdio_htclk: Enter
CLKCTL: turned OFF
dhdsdio_clkctl: 3 -> 1
dhd_bus_init: Enter
dhdsdio_clkctl: Enter
dhdsdio_htclk: Enter
dhd_bus_watchdog: Enter
Check Clock: 16
dhdsdio_htclk: HT Avail request error: -35
dhdsdio_clkctl: 1 -> 1
dhd_bus_init: Error End
dhd_bus_init: End
dhd_bus_start failed bus is not ready
dhdsdio_probe: failed
dhdsdio_release: Enter
dhdsdio_release_dongle: Enter
dhdsdio_clkctl: Enter
dhdsdio_htclk: Enter
Check Clock: 16
dhdsdio_htclk: HT Avail request error: -35
dhdsdio_clkctl: 1 -> 1
dhdsdio_clkctl: Enter
dhdsdio_sdclk: Enter
dhdsdio_clkctl: 1 -> 0
dhdsdio_release_dongle: Disconnected
dhd_detach: Enter
dhd_bus_detach: Enter
dhd_bus_stop: Enter
dhdsdio_clkctl: Enter
dhdsdio_sdclk: Enter
dhdsdio_htclk: Enter
Check Clock: 16
dhdsdio_htclk: HT Avail request error: -35
dhdsdio_clkctl: 0 -> 1
dhd_bus_stop: Failed to force clock for F2: err -35
dhd_bus_stop: disable SDIO interrupts
dhdsdio_clkctl: Enter
dhdsdio_release_malloc: Enter
dhdsdio_release: Disconnected
bcmsdh_sdmmc: probe of mmc1:0001:3 failed with error -110

Dongle Host Driver, version 4.218.239.0
Compiled in drivers/net/wireless/bcm4329 on Apr 15 2011 at 04:48:04


이제현

2011.04.20 02:36:05
*.90.137.102

아래 링크에 공개된 ODROID-7 소스 코드를 참고하세요. BCM4329가 탑재되어 있으니, 많은 참고가 될것 같습니다.

2.6.32커널에 Froyo 2.2.2 기준입니다.


리눅스 커널 소스

http://dev.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&bid=17


안드로이드 소스

http://dev.odroid.com/sigong/nf_file_board/nfile_board_view.php?keyword=&bid=15


전성진

2011.04.20 18:02:00
*.98.222.217

로그를 보니 아래 함수를 실행하다가 에러가 발생하는 것 같고


-35는 SDIO_ERROR 인것으로 봐서 SDIO H/W 관련해서 문제가 있는 것은 아닐지 의심이 됩니다.


bcmsdh_cfg_write(sdh, SDIO_FUNC_1, SBSDIO_FUNC1_CHIPCLKCSR, clkreq, &err);

if (err) {

     DHD_ERROR(("%s: HT Avail request error: %dn", __FUNCTION__, err));

     return BCME_ERROR;

}


#define BCME_SDIO_ERROR         -35

전승관

2011.04.21 04:02:26
*.91.120.53

SDIO H/W적인 문제라면

MCU_SDIO의 전압레벨과 BCM4329_SDIO의 전압레벨이 동일한지 확인하시는게 좋을듯합니다.

이솝보드와 같은 부트로더와 커널일 경우

MCU_SDIO의 전압레벨은 2.8V이고 GB8632_SDIO의 경우는 3.3V 여서

전압레벨이 달라 에러가 발생할 수 있습니다.

List of Articles
번호 제목 글쓴이 날짜 조회 수sort

사용자 로그인