Lines Matching refs:adapter

151 	struct mwifiex_adapter *adapter;  in mwifiex_sdio_resume()  local
157 if (!card || !card->adapter) { in mwifiex_sdio_resume()
166 adapter = card->adapter; in mwifiex_sdio_resume()
168 if (!adapter->is_suspended) { in mwifiex_sdio_resume()
169 dev_warn(adapter->dev, "device already resumed\n"); in mwifiex_sdio_resume()
173 adapter->is_suspended = false; in mwifiex_sdio_resume()
176 mwifiex_cancel_hs(mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_STA), in mwifiex_sdio_resume()
191 struct mwifiex_adapter *adapter; in mwifiex_sdio_remove() local
200 adapter = card->adapter; in mwifiex_sdio_remove()
201 if (!adapter || !adapter->priv_num) in mwifiex_sdio_remove()
205 if (adapter->is_suspended) in mwifiex_sdio_remove()
206 mwifiex_sdio_resume(adapter->dev); in mwifiex_sdio_remove()
208 mwifiex_deauthenticate_all(adapter); in mwifiex_sdio_remove()
210 priv = mwifiex_get_priv(adapter, MWIFIEX_BSS_ROLE_ANY); in mwifiex_sdio_remove()
215 mwifiex_remove_card(card->adapter, &add_remove_card_sem); in mwifiex_sdio_remove()
232 struct mwifiex_adapter *adapter; in mwifiex_sdio_suspend() local
247 if (!card || !card->adapter) { in mwifiex_sdio_suspend()
256 adapter = card->adapter; in mwifiex_sdio_suspend()
259 if (!mwifiex_enable_hs(adapter)) { in mwifiex_sdio_suspend()
260 dev_err(adapter->dev, "cmd: failed to suspend\n"); in mwifiex_sdio_suspend()
261 adapter->hs_enabling = false; in mwifiex_sdio_suspend()
265 dev_dbg(adapter->dev, "cmd: suspend with MMC_PM_KEEP_POWER\n"); in mwifiex_sdio_suspend()
269 adapter->is_suspended = true; in mwifiex_sdio_suspend()
270 adapter->hs_enabling = false; in mwifiex_sdio_suspend()
337 mwifiex_write_reg(struct mwifiex_adapter *adapter, u32 reg, u8 data) in mwifiex_write_reg() argument
339 struct sdio_mmc_card *card = adapter->card; in mwifiex_write_reg()
353 mwifiex_read_reg(struct mwifiex_adapter *adapter, u32 reg, u8 *data) in mwifiex_read_reg() argument
355 struct sdio_mmc_card *card = adapter->card; in mwifiex_read_reg()
374 mwifiex_write_data_sync(struct mwifiex_adapter *adapter, in mwifiex_write_data_sync() argument
377 struct sdio_mmc_card *card = adapter->card; in mwifiex_write_data_sync()
388 if (adapter->is_suspended) { in mwifiex_write_data_sync()
389 dev_err(adapter->dev, in mwifiex_write_data_sync()
406 static int mwifiex_read_data_sync(struct mwifiex_adapter *adapter, u8 *buffer, in mwifiex_read_data_sync() argument
409 struct sdio_mmc_card *card = adapter->card; in mwifiex_read_data_sync()
435 static int mwifiex_pm_wakeup_card(struct mwifiex_adapter *adapter) in mwifiex_pm_wakeup_card() argument
437 dev_dbg(adapter->dev, "event: wakeup device...\n"); in mwifiex_pm_wakeup_card()
439 return mwifiex_write_reg(adapter, CONFIGURATION_REG, HOST_POWER_UP); in mwifiex_pm_wakeup_card()
447 static int mwifiex_pm_wakeup_card_complete(struct mwifiex_adapter *adapter) in mwifiex_pm_wakeup_card_complete() argument
449 dev_dbg(adapter->dev, "cmd: wakeup device completed\n"); in mwifiex_pm_wakeup_card_complete()
451 return mwifiex_write_reg(adapter, CONFIGURATION_REG, 0); in mwifiex_pm_wakeup_card_complete()
458 static int mwifiex_init_sdio_new_mode(struct mwifiex_adapter *adapter) in mwifiex_init_sdio_new_mode() argument
461 struct sdio_mmc_card *card = adapter->card; in mwifiex_init_sdio_new_mode()
463 adapter->ioport = MEM_PORT; in mwifiex_init_sdio_new_mode()
466 if (mwifiex_read_reg(adapter, card->reg->card_cfg_2_1_reg, &reg)) in mwifiex_init_sdio_new_mode()
468 if (mwifiex_write_reg(adapter, card->reg->card_cfg_2_1_reg, in mwifiex_init_sdio_new_mode()
473 if (mwifiex_read_reg(adapter, card->reg->cmd_cfg_0, &reg)) in mwifiex_init_sdio_new_mode()
475 if (mwifiex_write_reg(adapter, card->reg->cmd_cfg_0, in mwifiex_init_sdio_new_mode()
482 if (mwifiex_read_reg(adapter, card->reg->cmd_cfg_1, &reg)) in mwifiex_init_sdio_new_mode()
484 if (mwifiex_write_reg(adapter, card->reg->cmd_cfg_1, in mwifiex_init_sdio_new_mode()
498 static int mwifiex_init_sdio_ioport(struct mwifiex_adapter *adapter) in mwifiex_init_sdio_ioport() argument
501 struct sdio_mmc_card *card = adapter->card; in mwifiex_init_sdio_ioport()
503 adapter->ioport = 0; in mwifiex_init_sdio_ioport()
506 if (mwifiex_init_sdio_new_mode(adapter)) in mwifiex_init_sdio_ioport()
512 if (!mwifiex_read_reg(adapter, card->reg->io_port_0_reg, &reg)) in mwifiex_init_sdio_ioport()
513 adapter->ioport |= (reg & 0xff); in mwifiex_init_sdio_ioport()
517 if (!mwifiex_read_reg(adapter, card->reg->io_port_1_reg, &reg)) in mwifiex_init_sdio_ioport()
518 adapter->ioport |= ((reg & 0xff) << 8); in mwifiex_init_sdio_ioport()
522 if (!mwifiex_read_reg(adapter, card->reg->io_port_2_reg, &reg)) in mwifiex_init_sdio_ioport()
523 adapter->ioport |= ((reg & 0xff) << 16); in mwifiex_init_sdio_ioport()
527 pr_debug("info: SDIO FUNC1 IO port: %#x\n", adapter->ioport); in mwifiex_init_sdio_ioport()
530 if (!mwifiex_read_reg(adapter, card->reg->host_int_rsr_reg, &reg)) in mwifiex_init_sdio_ioport()
531 mwifiex_write_reg(adapter, card->reg->host_int_rsr_reg, in mwifiex_init_sdio_ioport()
537 if (!mwifiex_read_reg(adapter, card->reg->card_misc_cfg_reg, &reg)) in mwifiex_init_sdio_ioport()
538 mwifiex_write_reg(adapter, card->reg->card_misc_cfg_reg, in mwifiex_init_sdio_ioport()
549 static int mwifiex_write_data_to_card(struct mwifiex_adapter *adapter, in mwifiex_write_data_to_card() argument
556 ret = mwifiex_write_data_sync(adapter, payload, pkt_len, port); in mwifiex_write_data_to_card()
559 dev_err(adapter->dev, "host_to_card, write iomem" in mwifiex_write_data_to_card()
561 if (mwifiex_write_reg(adapter, CONFIGURATION_REG, 0x04)) in mwifiex_write_data_to_card()
562 dev_err(adapter->dev, "write CFG reg failed\n"); in mwifiex_write_data_to_card()
581 static int mwifiex_get_rd_port(struct mwifiex_adapter *adapter, u8 *port) in mwifiex_get_rd_port() argument
583 struct sdio_mmc_card *card = adapter->card; in mwifiex_get_rd_port()
587 dev_dbg(adapter->dev, "data: mp_rd_bitmap=0x%08x\n", rd_bitmap); in mwifiex_get_rd_port()
601 dev_dbg(adapter->dev, "data: port=%d mp_rd_bitmap=0x%08x\n", in mwifiex_get_rd_port()
616 dev_dbg(adapter->dev, in mwifiex_get_rd_port()
630 static int mwifiex_get_wr_port_data(struct mwifiex_adapter *adapter, u32 *port) in mwifiex_get_wr_port_data() argument
632 struct sdio_mmc_card *card = adapter->card; in mwifiex_get_wr_port_data()
636 dev_dbg(adapter->dev, "data: mp_wr_bitmap=0x%08x\n", wr_bitmap); in mwifiex_get_wr_port_data()
639 adapter->data_sent = true; in mwifiex_get_wr_port_data()
649 adapter->data_sent = true; in mwifiex_get_wr_port_data()
654 dev_err(adapter->dev, in mwifiex_get_wr_port_data()
661 dev_dbg(adapter->dev, "data: port=%d mp_wr_bitmap=0x%08x -> 0x%08x\n", in mwifiex_get_wr_port_data()
671 mwifiex_sdio_poll_card_status(struct mwifiex_adapter *adapter, u8 bits) in mwifiex_sdio_poll_card_status() argument
673 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_poll_card_status()
678 if (mwifiex_read_reg(adapter, card->reg->poll_reg, &cs)) in mwifiex_sdio_poll_card_status()
686 dev_err(adapter->dev, "poll card status failed, tries = %d\n", tries); in mwifiex_sdio_poll_card_status()
695 mwifiex_sdio_read_fw_status(struct mwifiex_adapter *adapter, u16 *dat) in mwifiex_sdio_read_fw_status() argument
697 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_read_fw_status()
701 if (mwifiex_read_reg(adapter, reg->status_reg_0, &fws0)) in mwifiex_sdio_read_fw_status()
704 if (mwifiex_read_reg(adapter, reg->status_reg_1, &fws1)) in mwifiex_sdio_read_fw_status()
718 static void mwifiex_sdio_disable_host_int(struct mwifiex_adapter *adapter) in mwifiex_sdio_disable_host_int() argument
720 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_disable_host_int()
732 static void mwifiex_interrupt_status(struct mwifiex_adapter *adapter) in mwifiex_interrupt_status() argument
734 struct sdio_mmc_card *card = adapter->card; in mwifiex_interrupt_status()
738 if (mwifiex_read_data_sync(adapter, card->mp_regs, in mwifiex_interrupt_status()
741 dev_err(adapter->dev, "read mp_regs failed\n"); in mwifiex_interrupt_status()
754 dev_dbg(adapter->dev, "int: sdio_ireg = %#x\n", sdio_ireg); in mwifiex_interrupt_status()
755 spin_lock_irqsave(&adapter->int_lock, flags); in mwifiex_interrupt_status()
756 adapter->int_status |= sdio_ireg; in mwifiex_interrupt_status()
757 spin_unlock_irqrestore(&adapter->int_lock, flags); in mwifiex_interrupt_status()
770 struct mwifiex_adapter *adapter; in mwifiex_sdio_interrupt() local
774 if (!card || !card->adapter) { in mwifiex_sdio_interrupt()
776 func, card, card ? card->adapter : NULL); in mwifiex_sdio_interrupt()
779 adapter = card->adapter; in mwifiex_sdio_interrupt()
781 if (!adapter->pps_uapsd_mode && adapter->ps_state == PS_STATE_SLEEP) in mwifiex_sdio_interrupt()
782 adapter->ps_state = PS_STATE_AWAKE; in mwifiex_sdio_interrupt()
784 mwifiex_interrupt_status(adapter); in mwifiex_sdio_interrupt()
785 mwifiex_main_process(adapter); in mwifiex_sdio_interrupt()
794 static int mwifiex_sdio_enable_host_int(struct mwifiex_adapter *adapter) in mwifiex_sdio_enable_host_int() argument
796 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_enable_host_int()
805 dev_err(adapter->dev, "claim irq failed: ret=%d\n", ret); in mwifiex_sdio_enable_host_int()
813 dev_err(adapter->dev, "enable host interrupt failed\n"); in mwifiex_sdio_enable_host_int()
825 static int mwifiex_sdio_card_to_host(struct mwifiex_adapter *adapter, in mwifiex_sdio_card_to_host() argument
833 dev_err(adapter->dev, "%s: buffer is NULL\n", __func__); in mwifiex_sdio_card_to_host()
837 ret = mwifiex_read_data_sync(adapter, buffer, npayload, ioport, 1); in mwifiex_sdio_card_to_host()
840 dev_err(adapter->dev, "%s: read iomem failed: %d\n", __func__, in mwifiex_sdio_card_to_host()
847 dev_err(adapter->dev, "%s: invalid packet, nb=%d npayload=%d\n", in mwifiex_sdio_card_to_host()
864 static int mwifiex_prog_fw_w_helper(struct mwifiex_adapter *adapter, in mwifiex_prog_fw_w_helper() argument
867 struct sdio_mmc_card *card = adapter->card; in mwifiex_prog_fw_w_helper()
880 dev_err(adapter->dev, in mwifiex_prog_fw_w_helper()
885 dev_dbg(adapter->dev, "info: downloading FW image (%d bytes)\n", in mwifiex_prog_fw_w_helper()
897 ret = mwifiex_sdio_poll_card_status(adapter, CARD_IO_READY | in mwifiex_prog_fw_w_helper()
900 dev_err(adapter->dev, "FW download with helper:" in mwifiex_prog_fw_w_helper()
910 ret = mwifiex_read_reg(adapter, reg->base_0_reg, in mwifiex_prog_fw_w_helper()
913 dev_err(adapter->dev, in mwifiex_prog_fw_w_helper()
919 ret = mwifiex_read_reg(adapter, reg->base_1_reg, in mwifiex_prog_fw_w_helper()
922 dev_err(adapter->dev, in mwifiex_prog_fw_w_helper()
939 dev_err(adapter->dev, in mwifiex_prog_fw_w_helper()
951 dev_err(adapter->dev, in mwifiex_prog_fw_w_helper()
957 dev_err(adapter->dev, "CRC indicated by the helper:" in mwifiex_prog_fw_w_helper()
977 ret = mwifiex_write_data_sync(adapter, fwbuf, tx_blocks * in mwifiex_prog_fw_w_helper()
979 adapter->ioport); in mwifiex_prog_fw_w_helper()
981 dev_err(adapter->dev, in mwifiex_prog_fw_w_helper()
984 if (mwifiex_write_reg(adapter, CONFIGURATION_REG, 0x04)) in mwifiex_prog_fw_w_helper()
985 dev_err(adapter->dev, "write CFG reg failed\n"); in mwifiex_prog_fw_w_helper()
994 dev_notice(adapter->dev, in mwifiex_prog_fw_w_helper()
1008 static int mwifiex_check_fw_status(struct mwifiex_adapter *adapter, in mwifiex_check_fw_status() argument
1011 struct sdio_mmc_card *card = adapter->card; in mwifiex_check_fw_status()
1019 ret = mwifiex_sdio_read_fw_status(adapter, &firmware_stat); in mwifiex_check_fw_status()
1033 (adapter, card->reg->status_reg_0, &winner_status)) in mwifiex_check_fw_status()
1037 adapter->winner = 0; in mwifiex_check_fw_status()
1039 adapter->winner = 1; in mwifiex_check_fw_status()
1050 static void mwifiex_deaggr_sdio_pkt(struct mwifiex_adapter *adapter, in mwifiex_deaggr_sdio_pkt() argument
1064 if (total_pkt_len < adapter->sdio_rx_block_size) in mwifiex_deaggr_sdio_pkt()
1067 blk_size = adapter->sdio_rx_block_size * blk_num; in mwifiex_deaggr_sdio_pkt()
1069 dev_err(adapter->dev, "%s: error in pkt,\t" in mwifiex_deaggr_sdio_pkt()
1078 dev_err(adapter->dev, "%s: error in pkt,\t" in mwifiex_deaggr_sdio_pkt()
1091 mwifiex_handle_rx_packet(adapter, skb_deaggr); in mwifiex_deaggr_sdio_pkt()
1104 static int mwifiex_decode_rx_packet(struct mwifiex_adapter *adapter, in mwifiex_decode_rx_packet() argument
1119 dev_dbg(adapter->dev, "info: --- Rx: Aggr Data packet ---\n"); in mwifiex_decode_rx_packet()
1122 if (adapter->rx_work_enabled) { in mwifiex_decode_rx_packet()
1123 skb_queue_tail(&adapter->rx_data_q, skb); in mwifiex_decode_rx_packet()
1124 atomic_inc(&adapter->rx_pending); in mwifiex_decode_rx_packet()
1125 adapter->data_received = true; in mwifiex_decode_rx_packet()
1127 mwifiex_deaggr_sdio_pkt(adapter, skb); in mwifiex_decode_rx_packet()
1133 dev_dbg(adapter->dev, "info: --- Rx: Data packet ---\n"); in mwifiex_decode_rx_packet()
1134 if (adapter->rx_work_enabled) { in mwifiex_decode_rx_packet()
1135 skb_queue_tail(&adapter->rx_data_q, skb); in mwifiex_decode_rx_packet()
1136 adapter->data_received = true; in mwifiex_decode_rx_packet()
1137 atomic_inc(&adapter->rx_pending); in mwifiex_decode_rx_packet()
1139 mwifiex_handle_rx_packet(adapter, skb); in mwifiex_decode_rx_packet()
1144 dev_dbg(adapter->dev, "info: --- Rx: Cmd Response ---\n"); in mwifiex_decode_rx_packet()
1146 if (!adapter->curr_cmd) { in mwifiex_decode_rx_packet()
1147 cmd_buf = adapter->upld_buf; in mwifiex_decode_rx_packet()
1149 if (adapter->ps_state == PS_STATE_SLEEP_CFM) in mwifiex_decode_rx_packet()
1150 mwifiex_process_sleep_confirm_resp(adapter, in mwifiex_decode_rx_packet()
1160 adapter->cmd_resp_received = true; in mwifiex_decode_rx_packet()
1161 adapter->curr_cmd->resp_skb = skb; in mwifiex_decode_rx_packet()
1166 dev_dbg(adapter->dev, "info: --- Rx: Event ---\n"); in mwifiex_decode_rx_packet()
1167 adapter->event_cause = le32_to_cpu(*(__le32 *) skb->data); in mwifiex_decode_rx_packet()
1170 memcpy(adapter->event_body, in mwifiex_decode_rx_packet()
1175 adapter->event_received = true; in mwifiex_decode_rx_packet()
1176 adapter->event_skb = skb; in mwifiex_decode_rx_packet()
1181 dev_err(adapter->dev, "unknown upload type %#x\n", upld_typ); in mwifiex_decode_rx_packet()
1198 static int mwifiex_sdio_card_to_host_mp_aggr(struct mwifiex_adapter *adapter, in mwifiex_sdio_card_to_host_mp_aggr() argument
1201 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_card_to_host_mp_aggr()
1213 dev_dbg(adapter->dev, "info: %s: no aggregation for cmd " in mwifiex_sdio_card_to_host_mp_aggr()
1221 dev_dbg(adapter->dev, "info: %s: rx aggregation disabled\n", in mwifiex_sdio_card_to_host_mp_aggr()
1233 dev_dbg(adapter->dev, "info: %s: not last packet\n", __func__); in mwifiex_sdio_card_to_host_mp_aggr()
1250 dev_dbg(adapter->dev, "info: %s: last packet\n", __func__); in mwifiex_sdio_card_to_host_mp_aggr()
1265 dev_dbg(adapter->dev, "info: current packet aggregation\n"); in mwifiex_sdio_card_to_host_mp_aggr()
1271 dev_dbg(adapter->dev, "info: %s: aggregated packet " in mwifiex_sdio_card_to_host_mp_aggr()
1280 dev_dbg(adapter->dev, "info: do_rx_aggr: num of packets: %d\n", in mwifiex_sdio_card_to_host_mp_aggr()
1295 mport = (adapter->ioport | SDIO_MPA_ADDR_BASE | in mwifiex_sdio_card_to_host_mp_aggr()
1298 mport = (adapter->ioport | SDIO_MPA_ADDR_BASE | in mwifiex_sdio_card_to_host_mp_aggr()
1303 if (mwifiex_read_data_sync(adapter, card->mpa_rx.buf, in mwifiex_sdio_card_to_host_mp_aggr()
1321 dev_err(adapter->dev, "skb allocation failure drop pkt len=%d type=%d\n", in mwifiex_sdio_card_to_host_mp_aggr()
1331 adapter->sdio_rx_aggr_enable)) && in mwifiex_sdio_card_to_host_mp_aggr()
1339 mwifiex_decode_rx_packet(adapter, skb_deaggr, in mwifiex_sdio_card_to_host_mp_aggr()
1342 dev_err(adapter->dev, " drop wrong aggr pkt:\t" in mwifiex_sdio_card_to_host_mp_aggr()
1345 adapter->sdio_rx_aggr_enable, in mwifiex_sdio_card_to_host_mp_aggr()
1357 dev_dbg(adapter->dev, "info: RX: port: %d, rx_len: %d\n", in mwifiex_sdio_card_to_host_mp_aggr()
1362 dev_err(adapter->dev, "single skb allocated fail,\t" in mwifiex_sdio_card_to_host_mp_aggr()
1364 if (mwifiex_sdio_card_to_host(adapter, &pkt_type, in mwifiex_sdio_card_to_host_mp_aggr()
1366 adapter->ioport + port)) in mwifiex_sdio_card_to_host_mp_aggr()
1373 if (mwifiex_sdio_card_to_host(adapter, &pkt_type, in mwifiex_sdio_card_to_host_mp_aggr()
1375 adapter->ioport + port)) in mwifiex_sdio_card_to_host_mp_aggr()
1377 if (!adapter->sdio_rx_aggr_enable && in mwifiex_sdio_card_to_host_mp_aggr()
1379 dev_err(adapter->dev, "drop wrong pkt type %d\t" in mwifiex_sdio_card_to_host_mp_aggr()
1386 mwifiex_decode_rx_packet(adapter, skb, pkt_type); in mwifiex_sdio_card_to_host_mp_aggr()
1389 dev_dbg(adapter->dev, "info: current packet aggregation\n"); in mwifiex_sdio_card_to_host_mp_aggr()
1421 static int mwifiex_process_int_status(struct mwifiex_adapter *adapter) in mwifiex_process_int_status() argument
1423 struct sdio_mmc_card *card = adapter->card; in mwifiex_process_int_status()
1436 spin_lock_irqsave(&adapter->int_lock, flags); in mwifiex_process_int_status()
1437 sdio_ireg = adapter->int_status; in mwifiex_process_int_status()
1438 adapter->int_status = 0; in mwifiex_process_int_status()
1439 spin_unlock_irqrestore(&adapter->int_lock, flags); in mwifiex_process_int_status()
1445 if (sdio_ireg & DN_LD_CMD_PORT_HOST_INT_STATUS && adapter->cmd_sent) in mwifiex_process_int_status()
1446 adapter->cmd_sent = false; in mwifiex_process_int_status()
1461 dev_dbg(adapter->dev, "info: rx_len = %d\n", rx_len); in mwifiex_process_int_status()
1469 if (mwifiex_sdio_card_to_host(adapter, &pkt_type, skb->data, in mwifiex_process_int_status()
1470 skb->len, adapter->ioport | in mwifiex_process_int_status()
1472 dev_err(adapter->dev, in mwifiex_process_int_status()
1480 dev_err(adapter->dev, in mwifiex_process_int_status()
1484 mwifiex_decode_rx_packet(adapter, skb, pkt_type); in mwifiex_process_int_status()
1498 dev_dbg(adapter->dev, "int: DNLD: wr_bitmap=0x%x\n", in mwifiex_process_int_status()
1500 if (adapter->data_sent && in mwifiex_process_int_status()
1502 dev_dbg(adapter->dev, in mwifiex_process_int_status()
1504 adapter->data_sent = false; in mwifiex_process_int_status()
1511 if (card->has_control_mask && adapter->cmd_sent) { in mwifiex_process_int_status()
1517 adapter->cmd_sent = false; in mwifiex_process_int_status()
1520 dev_dbg(adapter->dev, "info: cmd_sent=%d data_sent=%d\n", in mwifiex_process_int_status()
1521 adapter->cmd_sent, adapter->data_sent); in mwifiex_process_int_status()
1532 dev_dbg(adapter->dev, "int: UPLD: rd_bitmap=0x%x\n", in mwifiex_process_int_status()
1536 ret = mwifiex_get_rd_port(adapter, &port); in mwifiex_process_int_status()
1538 dev_dbg(adapter->dev, in mwifiex_process_int_status()
1546 dev_dbg(adapter->dev, "info: RX: port=%d rx_len=%u\n", in mwifiex_process_int_status()
1554 dev_err(adapter->dev, "invalid rx_len=%d\n", in mwifiex_process_int_status()
1560 dev_dbg(adapter->dev, "info: rx_len = %d\n", rx_len); in mwifiex_process_int_status()
1562 if (mwifiex_sdio_card_to_host_mp_aggr(adapter, rx_len, in mwifiex_process_int_status()
1564 dev_err(adapter->dev, "card_to_host_mpa failed:" in mwifiex_process_int_status()
1575 if (mwifiex_read_reg(adapter, CONFIGURATION_REG, &cr)) in mwifiex_process_int_status()
1576 dev_err(adapter->dev, "read CFG reg failed\n"); in mwifiex_process_int_status()
1578 dev_dbg(adapter->dev, "info: CFG reg val = %d\n", cr); in mwifiex_process_int_status()
1580 if (mwifiex_write_reg(adapter, CONFIGURATION_REG, (cr | 0x04))) in mwifiex_process_int_status()
1581 dev_err(adapter->dev, "write CFG reg failed\n"); in mwifiex_process_int_status()
1583 dev_dbg(adapter->dev, "info: write success\n"); in mwifiex_process_int_status()
1585 if (mwifiex_read_reg(adapter, CONFIGURATION_REG, &cr)) in mwifiex_process_int_status()
1586 dev_err(adapter->dev, "read CFG reg failed\n"); in mwifiex_process_int_status()
1588 dev_dbg(adapter->dev, "info: CFG reg val =%x\n", cr); in mwifiex_process_int_status()
1607 static int mwifiex_host_to_card_mp_aggr(struct mwifiex_adapter *adapter, in mwifiex_host_to_card_mp_aggr() argument
1611 struct sdio_mmc_card *card = adapter->card; in mwifiex_host_to_card_mp_aggr()
1622 dev_dbg(adapter->dev, "info: %s: tx aggregation disabled\n", in mwifiex_host_to_card_mp_aggr()
1631 dev_dbg(adapter->dev, "info: %s: more packets in queue.\n", in mwifiex_host_to_card_mp_aggr()
1662 dev_dbg(adapter->dev, "info: %s: Last packet in Tx Queue.\n", in mwifiex_host_to_card_mp_aggr()
1680 dev_dbg(adapter->dev, "data: %s: precopy current buffer\n", in mwifiex_host_to_card_mp_aggr()
1691 dev_dbg(adapter->dev, "data: %s: send aggr buffer: %d %d\n", in mwifiex_host_to_card_mp_aggr()
1706 mport = (adapter->ioport | SDIO_MPA_ADDR_BASE | in mwifiex_host_to_card_mp_aggr()
1709 mport = (adapter->ioport | SDIO_MPA_ADDR_BASE | in mwifiex_host_to_card_mp_aggr()
1714 ret = mwifiex_write_data_to_card(adapter, card->mpa_tx.buf, in mwifiex_host_to_card_mp_aggr()
1722 dev_dbg(adapter->dev, "data: %s: send current buffer %d\n", in mwifiex_host_to_card_mp_aggr()
1724 ret = mwifiex_write_data_to_card(adapter, payload, pkt_len, in mwifiex_host_to_card_mp_aggr()
1725 adapter->ioport + port); in mwifiex_host_to_card_mp_aggr()
1729 dev_dbg(adapter->dev, "data: %s: postcopy current buffer\n", in mwifiex_host_to_card_mp_aggr()
1747 static int mwifiex_sdio_host_to_card(struct mwifiex_adapter *adapter, in mwifiex_sdio_host_to_card() argument
1751 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_host_to_card()
1772 ret = mwifiex_get_wr_port_data(adapter, &port); in mwifiex_sdio_host_to_card()
1774 dev_err(adapter->dev, "%s: no wr_port available\n", in mwifiex_sdio_host_to_card()
1779 adapter->cmd_sent = true; in mwifiex_sdio_host_to_card()
1784 dev_err(adapter->dev, "%s: payload=%p, nb=%d\n", in mwifiex_sdio_host_to_card()
1795 ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len, in mwifiex_sdio_host_to_card()
1799 ret = mwifiex_host_to_card_mp_aggr(adapter, payload, pkt_len, in mwifiex_sdio_host_to_card()
1804 adapter->cmd_sent = false; in mwifiex_sdio_host_to_card()
1806 adapter->data_sent = false; in mwifiex_sdio_host_to_card()
1814 adapter->data_sent = true; in mwifiex_sdio_host_to_card()
1816 adapter->data_sent = false; in mwifiex_sdio_host_to_card()
1826 static int mwifiex_alloc_sdio_mpa_buffers(struct mwifiex_adapter *adapter, in mwifiex_alloc_sdio_mpa_buffers() argument
1829 struct sdio_mmc_card *card = adapter->card; in mwifiex_alloc_sdio_mpa_buffers()
1867 mwifiex_unregister_dev(struct mwifiex_adapter *adapter) in mwifiex_unregister_dev() argument
1869 struct sdio_mmc_card *card = adapter->card; in mwifiex_unregister_dev()
1871 if (adapter->card) { in mwifiex_unregister_dev()
1883 static int mwifiex_register_dev(struct mwifiex_adapter *adapter) in mwifiex_register_dev() argument
1886 struct sdio_mmc_card *card = adapter->card; in mwifiex_register_dev()
1890 card->adapter = adapter; in mwifiex_register_dev()
1891 adapter->tx_buf_size = card->tx_buf_size; in mwifiex_register_dev()
1904 adapter->dev = &func->dev; in mwifiex_register_dev()
1906 strcpy(adapter->fw_name, card->firmware); in mwifiex_register_dev()
1907 adapter->mem_type_mapping_tbl = mem_type_mapping_tbl; in mwifiex_register_dev()
1908 adapter->num_mem_types = ARRAY_SIZE(mem_type_mapping_tbl); in mwifiex_register_dev()
1925 static int mwifiex_init_sdio(struct mwifiex_adapter *adapter) in mwifiex_init_sdio() argument
1927 struct sdio_mmc_card *card = adapter->card; in mwifiex_init_sdio()
1939 mwifiex_read_reg(adapter, card->reg->host_int_status_reg, &sdio_ireg); in mwifiex_init_sdio()
1942 mwifiex_init_sdio_ioport(adapter); in mwifiex_init_sdio()
1976 ret = mwifiex_alloc_sdio_mpa_buffers(adapter, in mwifiex_init_sdio()
1980 dev_err(adapter->dev, "failed to alloc sdio mp-a buffers\n"); in mwifiex_init_sdio()
1985 adapter->auto_tdls = card->can_auto_tdls; in mwifiex_init_sdio()
1986 adapter->ext_scan = card->can_ext_scan; in mwifiex_init_sdio()
1993 static void mwifiex_cleanup_mpa_buf(struct mwifiex_adapter *adapter) in mwifiex_cleanup_mpa_buf() argument
1995 struct sdio_mmc_card *card = adapter->card; in mwifiex_cleanup_mpa_buf()
2009 static void mwifiex_cleanup_sdio(struct mwifiex_adapter *adapter) in mwifiex_cleanup_sdio() argument
2011 struct sdio_mmc_card *card = adapter->card; in mwifiex_cleanup_sdio()
2026 mwifiex_update_mp_end_port(struct mwifiex_adapter *adapter, u16 port) in mwifiex_update_mp_end_port() argument
2028 struct sdio_mmc_card *card = adapter->card; in mwifiex_update_mp_end_port()
2044 dev_dbg(adapter->dev, "cmd: mp_end_port %d, data port mask 0x%x\n", in mwifiex_update_mp_end_port()
2049 static void mwifiex_sdio_card_reset_work(struct mwifiex_adapter *adapter) in mwifiex_sdio_card_reset_work() argument
2051 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_card_reset_work()
2072 rdwr_status mwifiex_sdio_rdwr_firmware(struct mwifiex_adapter *adapter, in mwifiex_sdio_rdwr_firmware() argument
2075 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_rdwr_firmware()
2082 dev_err(adapter->dev, "SDIO Write ERR\n"); in mwifiex_sdio_rdwr_firmware()
2089 dev_err(adapter->dev, "SDIO read err\n"); in mwifiex_sdio_rdwr_firmware()
2097 dev_info(adapter->dev, in mwifiex_sdio_rdwr_firmware()
2102 dev_err(adapter->dev, "SDIO write err\n"); in mwifiex_sdio_rdwr_firmware()
2109 dev_err(adapter->dev, "Fail to pull ctrl_data\n"); in mwifiex_sdio_rdwr_firmware()
2117 static void mwifiex_sdio_fw_dump_work(struct mwifiex_adapter *adapter) in mwifiex_sdio_fw_dump_work() argument
2119 struct sdio_mmc_card *card = adapter->card; in mwifiex_sdio_fw_dump_work()
2127 mwifiex_dump_drv_info(adapter); in mwifiex_sdio_fw_dump_work()
2142 mwifiex_pm_wakeup_card(adapter); in mwifiex_sdio_fw_dump_work()
2145 dev_info(adapter->dev, "== mwifiex firmware dump start ==\n"); in mwifiex_sdio_fw_dump_work()
2147 stat = mwifiex_sdio_rdwr_firmware(adapter, doneflag); in mwifiex_sdio_fw_dump_work()
2155 dev_err(adapter->dev, "SDIO read memory length err\n"); in mwifiex_sdio_fw_dump_work()
2163 stat = mwifiex_sdio_rdwr_firmware(adapter, doneflag); in mwifiex_sdio_fw_dump_work()
2172 dev_err(adapter->dev, "SDIO read err\n"); in mwifiex_sdio_fw_dump_work()
2180 dev_info(adapter->dev, "Firmware dump Finished!\n"); in mwifiex_sdio_fw_dump_work()
2184 dev_info(adapter->dev, in mwifiex_sdio_fw_dump_work()
2189 dev_err(adapter->dev, "Vmalloc %s failed\n", in mwifiex_sdio_fw_dump_work()
2197 dev_info(adapter->dev, "Start %s output, please wait...\n", in mwifiex_sdio_fw_dump_work()
2201 stat = mwifiex_sdio_rdwr_firmware(adapter, doneflag); in mwifiex_sdio_fw_dump_work()
2210 dev_err(adapter->dev, in mwifiex_sdio_fw_dump_work()
2217 dev_err(adapter->dev, in mwifiex_sdio_fw_dump_work()
2224 dev_info(adapter->dev, "%s done: size=0x%tx\n", in mwifiex_sdio_fw_dump_work()
2229 dev_info(adapter->dev, "== mwifiex firmware dump end ==\n"); in mwifiex_sdio_fw_dump_work()
2231 kobject_uevent_env(&adapter->wiphy->dev.kobj, KOBJ_CHANGE, env); in mwifiex_sdio_fw_dump_work()
2235 adapter->curr_mem_idx = 0; in mwifiex_sdio_fw_dump_work()
2250 static void mwifiex_sdio_card_reset(struct mwifiex_adapter *adapter) in mwifiex_sdio_card_reset() argument
2252 save_adapter = adapter; in mwifiex_sdio_card_reset()
2262 static void mwifiex_sdio_fw_dump(struct mwifiex_adapter *adapter) in mwifiex_sdio_fw_dump() argument
2264 save_adapter = adapter; in mwifiex_sdio_fw_dump()
2276 mwifiex_sdio_reg_dump(struct mwifiex_adapter *adapter, char *drv_buf) in mwifiex_sdio_reg_dump() argument
2279 struct sdio_mmc_card *cardp = adapter->card; in mwifiex_sdio_reg_dump()
2288 dev_info(adapter->dev, "SDIO register DUMP START\n"); in mwifiex_sdio_reg_dump()
2290 mwifiex_pm_wakeup_card(adapter); in mwifiex_sdio_reg_dump()
2354 dev_info(adapter->dev, "%s\n", buf); in mwifiex_sdio_reg_dump()
2360 dev_info(adapter->dev, "SDIO register DUMP END\n"); in mwifiex_sdio_reg_dump()