iMX31 and 88W8686 SDIO module
claud_yu
claud_yu at yahoo.com.tw
Tue Apr 29 05:13:04 EDT 2008
Hi Holger,
After a couple days study , I modify the IO route of if_sdio.c to force the driver use fixed size of block to send command and receive the response.
The moblin 88w8686 driver use this approach to negotiate. And I get correct response like moblin 88w8686 driver.
For example the function if_sdio_card_to_host from if_sdio.c
----------------------------------------------
//if ((chunk > card->func->cur_blksize) || (chunk > 512)) {
chunk = (chunk + card->func->cur_blksize - 1) /
card->func->cur_blksize * card->func->cur_blksize;
//}
----------------------------------------------
The command CMD_GET_HW_SPEC get correct response. But the next command get other error.
The command CMD_GET_HW_SPEC show the firmware release is 9.70.3p18. And the driver package is "SD-8686-FEDORA26FC6-SYSKT-GPL-9.70.3.p18-26409.P39_GPL.zip".
And the next Command CMD_MAC_CONTROL still success.
I think the IO routine should be ok but the driver show other error at following command CMD_802_11_DATA_RATE. Does anyone have success experiment with this version firmware ?
----------------------------------------------
libertas enter: libertas_process_rx_command():725
libertas host: CMD_RESP: response 0x8003, size 46, jiffies 16311
libertas CMD_RESP: 03 80 2e 00 02 00 00 00 02 00 11 00 08 00 40 00
libertas CMD_RESP: 00 19 88 05 39 58 40 00 01 00 03 46 09 12 00 00
libertas CMD_RESP: 00 00 00 00 00 00 00 00 00 00 03 03 00 00
libertas enter: handle_cmd_response():547
libertas enter: wlan_ret_get_hw_spec():164
libertas cmd: GET_HW_SPEC: firmware release 9.70.3p18
libertas cmd: GET_HW_SPEC: MAC addr 00:19:88:05:39:58
libertas cmd: GET_HW_SPEC: hardware interface 0x2, hardware spec 0x0011
libertas enter: libertas_set_regiontable():1443
libertas enter: libertas_get_region_cfp_table():1416
libertas main: region_cfp_table[i].region=16
libertas main: region_cfp_table[i].region=32
libertas main: region_cfp_table[i].region=48
libertas main: region_cfp_table[i].region=49
libertas main: region_cfp_table[i].region=50
libertas main: region_cfp_table[i].region=64
libertas leave: libertas_get_region_cfp_table():1425
libertas leave: libertas_set_regiontable():1464, ret 0
libertas 11d: BG-band nrcfp 14
libertas enter: wlan_ret_get_hw_spec(ret 0):215
libertas leave: handle_cmd_response():712
libertas enter: cleanup_cmdnode():1585
libertas leave: cleanup_cmdnode():1599
libertas leave: libertas_process_rx_command():865, ret 0
libertas enter: libertas_execute_next_command():1647
libertas leave: libertas_execute_next_command():1780
libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread sleeping... Conn=1 IntC=0 PS_mode=0 PS_State=0
libertas leave: libertas_prepare_and_send_command():1439, ret 0
libertas enter: libertas_set_mac_packet_filter():1105
libertas enter: libertas_prepare_and_send_command():1137
libertas enter: libertas_get_free_cmd_ctrl_node():1553
libertas enter: cleanup_cmdnode():1585
libertas leave: cleanup_cmdnode():1599
libertas leave: libertas_get_free_cmd_ctrl_node():1573
libertas enter: libertas_set_cmd_ctrl_node():1616
libertas leave: libertas_set_cmd_ctrl_node():1625
libertas host: PREP_CMD: command 0x0028
libertas enter: wlan_cmd_mac_control():1046
libertas cmd: MAC_CONTROL: action 0x3, size 12
libertas leave: wlan_cmd_mac_control():1055
libertas enter: libertas_queue_cmd():924
libertas host: QUEUE_CMD: inserted command 0x0028 into cmdpendingq
libertas leave: libertas_queue_cmd():961
libertas thread: main-thread 222 (waking up): intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread 333: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas enter: libertas_execute_next_command():1647
libertas host: EXEC_NEXT_CMD: sending command 0x0028
libertas enter: DownloadcommandToStation():981
libertas host: DNLD_CMD: command 0x0028, size 12, jiffies 16335
libertas DNLD_CMD: 28 00 0c 00 03 00 00 00 03 00 00 00
libertas enter: if_sdio_host_to_card(type 1, bytes 12):713
libertas leave: if_sdio_host_to_card():781, ret 0
libertas cmd: DNLD_CMD: sent command 0x0028, jiffies 16337
libertas enter: if_sdio_host_to_card_worker():366
libertas leave: DownloadcommandToStation():1037, ret 0
libertas leave: libertas_execute_next_command():1780
libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=2
libertas thread: main-thread sleeping... Conn=1 IntC=0 PS_mode=0 PS_State=0
libertas leave: if_sdio_host_to_card_worker():406
libertas enter: if_sdio_interrupt():827
libertas thread: interrupt: 0x2
libertas leave: if_sdio_interrupt():861, ret 0
libertas leave: libertas_prepare_and_send_command():1439, ret 0
libertas leave: libertas_set_mac_packet_filter():1111, ret 0
libertas enter: if_sdio_interrupt():827
libertas enter: libertas_prepare_and_send_command():1137
libertas thread: interrupt: 0x1
libertas enter: libertas_get_free_cmd_ctrl_node():1553
libertas enter: if_sdio_card_to_host():260
libertas enter: cleanup_cmdnode():1585
libertas thread: packet size (16 bytes) from firmware
libertas leave: cleanup_cmdnode():1599
libertas leave: libertas_get_free_cmd_ctrl_node():1573
libertas CARD_BUF: 10 00 01 00 28 80 0c 00 03 00 00 00 03 00 00 00
libertas thread: packet of type 1 and size 16 bytes
libertas enter: if_sdio_handle_cmd():137
libertas enter: libertas_interrupt():1480
libertas thread: libertas_interrupt: intcounter=0
libertas leave: libertas_interrupt():1496
libertas leave: if_sdio_handle_cmd():166, ret 0
libertas leave: if_sdio_card_to_host():352, ret 0
libertas leave: if_sdio_interrupt():861, ret 0
libertas thread: main-thread 222 (waking up): intcounter=1 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread 333: intcounter=1 currenttxskb=00000000 dnld_sent=0
libertas enter: if_sdio_get_int_status():790
libertas leave: if_sdio_get_int_status():797
libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread: cmd response ready
libertas enter: libertas_process_rx_command():725
libertas host: CMD_RESP: response 0x8028, size 12, jiffies 16355
libertas CMD_RESP: 28 80 0c 00 03 00 00 00 03 00 00 00
libertas enter: handle_cmd_response():547
libertas leave: handle_cmd_response():712
libertas enter: cleanup_cmdnode():1585
libertas leave: cleanup_cmdnode():1599
libertas leave: libertas_process_rx_command():865, ret 0
libertas enter: libertas_execute_next_command():1647
libertas leave: libertas_execute_next_command():1780
libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread sleeping... Conn=1 IntC=0 PS_mode=0 PS_State=0
libertas enter: libertas_set_cmd_ctrl_node():1616
libertas leave: libertas_set_cmd_ctrl_node():1625
libertas host: PREP_CMD: command 0x0022
libertas enter: wlan_cmd_802_11_data_rate():615
libertas leave: wlan_cmd_802_11_data_rate():631
libertas enter: libertas_queue_cmd():924
libertas host: QUEUE_CMD: inserted command 0x0022 into cmdpendingq
libertas leave: libertas_queue_cmd():961
libertas thread: main-thread 222 (waking up): intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread 333: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas enter: libertas_execute_next_command():1647
libertas host: EXEC_NEXT_CMD: sending command 0x0022
libertas enter: DownloadcommandToStation():981
libertas host: DNLD_CMD: command 0x0022, size 26, jiffies 16367
libertas DNLD_CMD: 22 00 1a 00 04 00 00 00 02 00 00 00 00 00 00 00
libertas DNLD_CMD: 00 00 00 00 00 00 00 00 00 00
libertas enter: if_sdio_host_to_card(type 1, bytes 26):713
libertas enter: if_sdio_host_to_card_worker():366
libertas leave: if_sdio_host_to_card():781, ret 0
libertas cmd: DNLD_CMD: sent command 0x0022, jiffies 16370
libertas leave: DownloadcommandToStation():1037, ret 0
libertas leave: libertas_execute_next_command():1780
libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=2
libertas thread: main-thread sleeping... Conn=1 IntC=0 PS_mode=0 PS_State=0
libertas host: PREP_CMD: wait for response
libertas leave: if_sdio_host_to_card_worker():406
libertas enter: if_sdio_interrupt():827
libertas thread: interrupt: 0x2
libertas leave: if_sdio_interrupt():861, ret 0
libertas enter: if_sdio_interrupt():827
libertas thread: interrupt: 0x1
libertas enter: if_sdio_card_to_host():260
libertas thread: packet size (30 bytes) from firmware
libertas CARD_BUF: 1e 00 01 00 22 80 1a 00 04 00 02 00 02 00 00 00
libertas CARD_BUF: 00 00 00 00 00 00 00 00 00 00 00 00 00 00
libertas thread: packet of type 1 and size 30 bytes
libertas enter: if_sdio_handle_cmd():137
libertas enter: libertas_interrupt():1480
libertas thread: libertas_interrupt: intcounter=0
libertas leave: libertas_interrupt():1496
libertas leave: if_sdio_handle_cmd():166, ret 0
libertas leave: if_sdio_card_to_host():352, ret 0
libertas leave: if_sdio_interrupt():861, ret 0
libertas thread: main-thread 222 (waking up): intcounter=1 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread 333: intcounter=1 currenttxskb=00000000 dnld_sent=0
libertas enter: if_sdio_get_int_status():790
libertas leave: if_sdio_get_int_status():797
libertas thread: main-thread 444: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread: cmd response ready
libertas enter: libertas_process_rx_command():725
libertas host: CMD_RESP: response 0x8022, size 26, jiffies 16385
libertas CMD_RESP: 22 80 1a 00 04 00 02 00 02 00 00 00 00 00 00 00
libertas CMD_RESP: 00 00 00 00 00 00 00 00 00 00
libertas host: CMD_RESP: error 0x0002 in command reply 0x8022
libertas enter: cleanup_cmdnode():1585
libertas leave: cleanup_cmdnode():1599
libertas leave: libertas_process_rx_command():865, ret -1
libertas enter: libertas_execute_next_command():1647
libertas leave: libertas_execute_next_command():1780
libertas thread: main-thread 111: intcounter=0 currenttxskb=00000000 dnld_sent=0
libertas thread: main-thread sleeping... Conn=1 IntC=0 PS_mode=0 PS_State=0
libertas host: PREP_CMD: command failed with return code 2
libertas leave: libertas_prepare_and_send_command():1439, ret -1
libertas leave: wlan_setup_firmware():979, ret -1
libertas leave: libertas_start_card():1278, ret -1
libertas leave: if_sdio_probe():997, ret -1
libertas_sdio: probe of mmc0:0001:1 failed with error -1
libertas leave: if_sdio_init_module():1080, ret 0
----------------------------------------------
Claud Yu
_________________________________________________________________________________________________________
蚊子吵得整晚睡不著,一直叮我,誰能救救我? http://ksk.search.yahoo.net/index.asp?WT.mc_id=023
More information about the libertas-dev
mailing list