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