sd8686 missing SDIO interrupts

237 Rumjantsev Egor (PROG) rumjantsev at papillon.ru
Tue Jun 15 00:48:34 EDT 2010


Hello.
I have problems with WiFi modem WLRG-DP601 based on SD8686 and PXA270.
We connect on MMC bus of PXA270 SDIO memory card and WiFi modem. The bus 
pins is switches by analog multiplexers.
In most cases switching of devices works correctly but sometimes modem 
fails to start up. It loads its firmware successfully but fails to 
activate SDIO interrupt mode so CMD_GET_HW_SPEC fails with timeout.
I don't have documentation enough to understand why this could happen so 
may be someone has the same problems and can help to solve it


libertas leave: lbs_allocate_cmd_buffer(), ret 0
libertas leave: lbs_init_adapter(), ret 0
libertas leave: lbs_add_card(), priv c5c20200
if_sdio_probe(): enable sdio irq
mmc0: starting CMD52 arg 9000080f flags 00000195
PXAMCI:pxamci_start_cmd(): cmddat: 0x901
PXAMCI:pxamci_enable_irq(): I_MASK: 0x17FB
PXAMCI:pxamci_irq() irq 00000004 stat 00002140
mmc0: req done (CMD52): 0: 0000100f 5f5983bd edb7ff9f 96400034
libertas enter: lbs_start_card()
libertas enter: lbs_setup_firmware()
lbs_update_hw_spec(): send req command
libertas enter: __lbs_cmd()
libertas enter: __lbs_cmd_async()
libertas enter: lbs_get_cmd_ctrl_node()
libertas leave: lbs_get_cmd_ctrl_node()
libertas host: __lbs_cmd_async(): PREP_CMD: command 0x0003
PREP_CMD: size 0x002e
PREP_CMD: seqnum 0x0001
PREP_CMD: in_cmd_cmd 0x0000
PREP_CMD: in_cmd_size 0x002e
PREP_CMD: in_cmd_seqnum 0x0000
libertas enter: lbs_queue_cmd()
libertas host: QUEUE_CMD: inserted command 0x0003 into cmdpendingq
libertas leave: lbs_queue_cmd()
libertas host: EXEC_NEXT_CMD: sending command 0x0003
libertas leave: __lbs_cmd_async(), ret c5c41800
libertas enter: lbs_submit_command()
libertas enter: if_sdio_host_to_card(type 1, bytes 46)
libertas enter: if_sdio_host_to_card_worker()
mmc0: starting CMD52 arg 10004000 flags 00000195
libertas leave: if_sdio_host_to_card(), ret 0
libertas leave: lbs_submit_command()
PXAMCI:pxamci_start_cmd(): cmddat: 0x901
PXAMCI:pxamci_enable_irq(): I_MASK: 0x17FB
PXAMCI:pxamci_irq() irq 00000004 stat 00002140
mmc0: req done (CMD52): 0: 00001009 5f5983bd edb7ff9f 96400034
mmc0: starting CMD53 arg 92000034 flags 000001b5
mmc0:     blksz 52 blocks 1 flags 00000100 tsac 1000 ms nsac 0
PXAMCI:pxamci_start_cmd(): cmddat: 0x98D
PXAMCI:pxamci_enable_irq(): I_MASK: 0x17FB
PXAMCI:pxamci_irq() irq 00000004 stat 00002040
PXAMCI:pxamci_enable_irq(): I_MASK: 0x17FE
PXAMCI:pxamci_irq() irq 00000001 stat 00003940
mmc0: req done (CMD53): 0: 00002000 5f5983bd edb7ff9f 96400035
mmc0:     52 bytes transferred: 0

/* Missed SDIO interrupt here
  (this line i got from correct boot up sequence)
*/
PXAMCI:pxamci_irq() irq 00000800 stat 0000b940
/*
*/

libertas leave: if_sdio_host_to_card_worker()
libertas: command 0x0003 timed out
libertas: Timeout submitting command 0x0003
libertas: PREP_CMD: command 0x0003 failed: -110
libertas enter: __lbs_cleanup_and_insert_cmd()
libertas leave: __lbs_cleanup_and_insert_cmd()
libertas enter: __lbs_cleanup_and_insert_cmd()
libertas leave: __lbs_cleanup_and_insert_cmd()
libertas leave: __lbs_cmd(), ret -110
lbs_update_hw_spec(): error to get response: -110
libertas leave: lbs_setup_firmware(), ret -110
libertas leave: lbs_start_card(), ret -110
libertas enter: lbs_remove_card()
libertas enter: lbs_remove_rtap()
libertas leave: lbs_remove_rtap()
libertas main: destroying worker thread
libertas main: done destroying worker thread
libertas enter: lbs_free_adapter()
libertas enter: lbs_free_cmd_buffer()
libertas leave: lbs_free_cmd_buffer()
libertas leave: lbs_free_adapter()
libertas leave: lbs_remove_card()
SDIO: Disabling IRQ for mmc0:0001:1...
mmc0: IRQ thread exiting with code 0
mmc0: starting CMD52 arg 00000800 flags 00000195
PXAMCI:pxamci_start_cmd(): cmddat: 0x901
PXAMCI:pxamci_enable_irq(): I_MASK: 0x1FFB
PXAMCI:pxamci_irq() irq 00000004 stat 00002140
mmc0: req done (CMD52): 0: 00001003 5f5983bd edb7ff9f 96400034
mmc0: starting CMD52 arg 80000800 flags 00000195
PXAMCI:pxamci_start_cmd(): cmddat: 0x901
PXAMCI:pxamci_enable_irq(): I_MASK: 0x1FFB
PXAMCI:pxamci_irq() irq 00000004 stat 00002140
mmc0: req done (CMD52): 0: 00001000 5f5983bd edb7ff9f 96400034
SDIO: Disabling device mmc0:0001:1...
mmc0: starting CMD52 arg 00000400 flags 00000195
PXAMCI:pxamci_start_cmd(): cmddat: 0x901
PXAMCI:pxamci_enable_irq(): I_MASK: 0x1FFB
PXAMCI:pxamci_irq() irq 00000004 stat 00002140
mmc0: req done (CMD52): 0: 00001002 5f5983bd edb7ff9f 96400034
mmc0: starting CMD52 arg 80000400 flags 00000195
PXAMCI:pxamci_start_cmd(): cmddat: 0x901
PXAMCI:pxamci_enable_irq(): I_MASK: 0x1FFB
PXAMCI:pxamci_irq() irq 00000004 stat 00002140
mmc0: req done (CMD52): 0: 00001000 5f5983bd edb7ff9f 96400034
SDIO: Disabled device mmc0:0001:1
libertas leave: if_sdio_probe(), ret -110
libertas_sdio: probe of mmc0:0001:1 failed with error -110


WBR,
-- 
Rumjantsev Egor



More information about the libertas-dev mailing list