Lines Matching +full:wi +full:- +full:fi
28 "1[Wi-Fi], 4[BT], 8[BT LE], 5[Wi-Fi STA + BT classic]\n"
29 "9[Wi-Fi STA + BT LE], 13[Wi-Fi STA + BT classic + BT LE]\n"
33 * rsi_sdio_set_cmd52_arg() - This function prepares cmd 52 read/write arg.
55 * rsi_cmd52writebyte() - This function issues cmd52 byte write onto the card.
75 return mmc_wait_for_cmd(card->host, &io_cmd, 0); in rsi_cmd52writebyte()
79 * rsi_cmd52readbyte() - This function issues cmd52 byte read onto the card.
100 err = mmc_wait_for_cmd(card->host, &io_cmd, 0); in rsi_cmd52readbyte()
107 * rsi_issue_sdiocommand() - This function issues sdio commands.
114 * Return: err: command status as 0 or -1.
126 host = func->card->host; in rsi_issue_sdiocommand()
141 * rsi_handle_interrupt() - This function is called upon the occurrence
151 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_handle_interrupt()
153 if (adapter->priv->fsm_state == FSM_FW_NOT_LOADED) in rsi_handle_interrupt()
156 rsi_set_event(&dev->rx_thread.event); in rsi_handle_interrupt()
160 * rsi_reset_card() - This function resets and re-initializes the card.
169 struct mmc_card *card = pfunction->card; in rsi_reset_card()
170 struct mmc_host *host = card->host; in rsi_reset_card()
176 ret = rsi_cmd52writebyte(pfunction->card, in rsi_reset_card()
183 if (ret != -ETIMEDOUT) in rsi_reset_card()
190 host->ios.chip_select = MMC_CS_DONTCARE; in rsi_reset_card()
191 host->ios.bus_mode = MMC_BUSMODE_OPENDRAIN; in rsi_reset_card()
192 host->ios.power_mode = MMC_POWER_UP; in rsi_reset_card()
193 host->ios.bus_width = MMC_BUS_WIDTH_1; in rsi_reset_card()
194 host->ios.timing = MMC_TIMING_LEGACY; in rsi_reset_card()
195 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
203 host->ios.clock = host->f_min; in rsi_reset_card()
204 host->ios.power_mode = MMC_POWER_ON; in rsi_reset_card()
205 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
214 host->ios.chip_select = MMC_CS_HIGH; in rsi_reset_card()
215 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
222 host->ios.chip_select = MMC_CS_DONTCARE; in rsi_reset_card()
223 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
225 host->use_spi_crc = 0; in rsi_reset_card()
236 card->ocr = resp; in rsi_reset_card()
240 card->ocr, in rsi_reset_card()
270 host->ios.bus_mode = MMC_BUSMODE_PUSHPULL; in rsi_reset_card()
271 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
285 if (card->host->caps & MMC_CAP_SD_HIGHSPEED) { in rsi_reset_card()
301 host->ios.timing = MMC_TIMING_SD_HS; in rsi_reset_card()
302 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
310 clock = card->cis.max_dtr; in rsi_reset_card()
312 if (clock > host->f_max) in rsi_reset_card()
313 clock = host->f_max; in rsi_reset_card()
315 host->ios.clock = clock; in rsi_reset_card()
316 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
318 if (card->host->caps & MMC_CAP_4_BIT_DATA) { in rsi_reset_card()
329 host->ios.bus_width = MMC_BUS_WIDTH_4; in rsi_reset_card()
330 host->ops->set_ios(host, &host->ios); in rsi_reset_card()
335 * rsi_setclock() - This function sets the clock frequency.
344 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_setclock()
345 struct mmc_host *host = dev->pfunction->card->host; in rsi_setclock()
349 if (clock > host->f_max) in rsi_setclock()
350 clock = host->f_max; in rsi_setclock()
351 host->ios.clock = clock; in rsi_setclock()
352 host->ops->set_ios(host, &host->ios); in rsi_setclock()
356 * rsi_setblocklength() - This function sets the host block length.
360 * Return: status: 0 on success, -1 on failure.
365 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_setblocklength()
369 status = sdio_set_block_size(dev->pfunction, length); in rsi_setblocklength()
370 dev->pfunction->max_blksize = 256; in rsi_setblocklength()
371 adapter->block_size = dev->pfunction->max_blksize; in rsi_setblocklength()
379 * rsi_setupcard() - This function queries and sets the card's features.
382 * Return: status: 0 on success, -1 on failure.
387 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_setupcard()
392 dev->tx_blk_size = 256; in rsi_setupcard()
393 status = rsi_setblocklength(adapter, dev->tx_blk_size); in rsi_setupcard()
401 * rsi_sdio_read_register() - This function reads one byte of information
407 * Return: 0 on success, -1 on failure.
414 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_read_register()
418 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_read_register()
419 sdio_claim_host(dev->pfunction); in rsi_sdio_read_register()
422 *data = sdio_f0_readb(dev->pfunction, addr, &status); in rsi_sdio_read_register()
424 *data = sdio_readb(dev->pfunction, addr, &status); in rsi_sdio_read_register()
426 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_read_register()
427 sdio_release_host(dev->pfunction); in rsi_sdio_read_register()
433 * rsi_sdio_write_register() - This function writes one byte of information
440 * Return: 0 on success, -1 on failure.
448 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_write_register()
451 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_write_register()
452 sdio_claim_host(dev->pfunction); in rsi_sdio_write_register()
455 sdio_f0_writeb(dev->pfunction, *data, addr, &status); in rsi_sdio_write_register()
457 sdio_writeb(dev->pfunction, *data, addr, &status); in rsi_sdio_write_register()
459 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_write_register()
460 sdio_release_host(dev->pfunction); in rsi_sdio_write_register()
466 * rsi_sdio_ack_intr() - This function acks the interrupt received.
487 * rsi_sdio_read_register_multiple() - This function read multiple bytes of
494 * Return: 0 on success, -1 on failure.
502 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_read_register_multiple()
505 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_read_register_multiple()
506 sdio_claim_host(dev->pfunction); in rsi_sdio_read_register_multiple()
508 status = sdio_readsb(dev->pfunction, data, addr, count); in rsi_sdio_read_register_multiple()
510 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_read_register_multiple()
511 sdio_release_host(dev->pfunction); in rsi_sdio_read_register_multiple()
519 * rsi_sdio_write_register_multiple() - This function writes multiple bytes of
526 * Return: 0 on success, -1 on failure.
534 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_write_register_multiple()
537 if (dev->write_fail > 1) { in rsi_sdio_write_register_multiple()
540 } else if (dev->write_fail == 1) { in rsi_sdio_write_register_multiple()
546 dev->write_fail++; in rsi_sdio_write_register_multiple()
549 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_write_register_multiple()
550 sdio_claim_host(dev->pfunction); in rsi_sdio_write_register_multiple()
552 status = sdio_writesb(dev->pfunction, addr, data, count); in rsi_sdio_write_register_multiple()
554 if (likely(dev->sdio_irq_task != current)) in rsi_sdio_write_register_multiple()
555 sdio_release_host(dev->pfunction); in rsi_sdio_write_register_multiple()
560 dev->write_fail = 2; in rsi_sdio_write_register_multiple()
562 memcpy(dev->prev_desc, data, FRAME_DESC_SZ); in rsi_sdio_write_register_multiple()
586 return -ENOMEM; in rsi_sdio_load_data_master_write()
657 return -ENOMEM; in rsi_sdio_master_reg_read()
719 return -ENOMEM; in rsi_sdio_master_reg_write()
739 return -EIO; in rsi_sdio_master_reg_write()
757 * rsi_sdio_host_intf_write_pkt() - This function writes the packet to device.
762 * Return: 0 on success, -1 on failure.
769 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_sdio_host_intf_write_pkt()
770 u32 block_size = dev->tx_blk_size; in rsi_sdio_host_intf_write_pkt()
799 * rsi_sdio_host_intf_read_pkt() - This function reads the packet
805 * Return: 0 on success, -1 on failure.
811 int status = -EINVAL; in rsi_sdio_host_intf_read_pkt()
830 * rsi_init_sdio_interface() - This function does init specific to SDIO.
835 * Return: 0 on success, -1 on failure.
845 return -ENOMEM; in rsi_init_sdio_interface()
847 adapter->rsi_dev = rsi_91x_dev; in rsi_init_sdio_interface()
851 pfunction->enable_timeout = 100; in rsi_init_sdio_interface()
861 rsi_91x_dev->pfunction = pfunction; in rsi_init_sdio_interface()
862 adapter->device = &pfunction->dev; in rsi_init_sdio_interface()
881 adapter->determine_event_timeout = rsi_sdio_determine_event_timeout; in rsi_init_sdio_interface()
882 adapter->check_hw_queue_status = rsi_sdio_check_buffer_status; in rsi_init_sdio_interface()
885 adapter->num_debugfs_entries = MAX_DEBUGFS_ENTRIES; in rsi_init_sdio_interface()
896 struct rsi_91x_sdiodev *sdev = adapter->rsi_dev; in rsi_sdio_reinit_device()
897 struct sdio_func *pfunction = sdev->pfunction; in rsi_sdio_reinit_device()
901 skb_queue_purge(&adapter->priv->tx_queue[ii]); in rsi_sdio_reinit_device()
928 return -ENOMEM; in rsi_sdio_ta_reset()
965 status = -EINVAL; in rsi_sdio_ta_reset()
1005 * rsi_probe() - This function is called by kernel when the driver provided
1018 int status = -EINVAL; in rsi_probe()
1026 return -EINVAL; in rsi_probe()
1028 adapter->rsi_host_intf = RSI_HOST_INTF_SDIO; in rsi_probe()
1029 adapter->host_intf_ops = &sdio_host_intf_ops; in rsi_probe()
1034 status = -EIO; in rsi_probe()
1038 if (pfunction->device == SDIO_DEVICE_ID_RSI_9113) { in rsi_probe()
1040 adapter->device_model = RSI_DEV_9113; in rsi_probe()
1041 } else if (pfunction->device == SDIO_DEVICE_ID_RSI_9116) { in rsi_probe()
1043 adapter->device_model = RSI_DEV_9116; in rsi_probe()
1047 pfunction->device); in rsi_probe()
1051 sdev = (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_probe()
1052 rsi_init_event(&sdev->rx_thread.event); in rsi_probe()
1053 status = rsi_create_kthread(adapter->priv, &sdev->rx_thread, in rsi_probe()
1054 rsi_sdio_rx_thread, "SDIO-RX-Thread"); in rsi_probe()
1064 status = -EIO; in rsi_probe()
1072 status = -EINVAL; in rsi_probe()
1079 status = -EIO; in rsi_probe()
1083 adapter->priv->hibernate_resume = false; in rsi_probe()
1084 adapter->priv->reinit_hw = false; in rsi_probe()
1092 rsi_kill_thread(&sdev->rx_thread); in rsi_probe()
1113 ((len_in_bits - 1) | RSI_GSPI_TRIG), 2); in ulp_read_write()
1117 /*This function resets and re-initializes the chip.*/
1147 /* Put Thread-Arch processor on hold */ in rsi_reset_chip()
1160 "%s: Unable to hold Thread-Arch processor threads\n", in rsi_reset_chip()
1165 /* This msleep will ensure Thread-Arch processor to go to hold in rsi_reset_chip()
1169 if (adapter->device_model != RSI_DEV_9116) { in rsi_reset_chip()
1214 * rsi_disconnect() - This function performs the reverse of the probe function.
1227 dev = (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_disconnect()
1229 rsi_kill_thread(&dev->rx_thread); in rsi_disconnect()
1238 if (IS_ENABLED(CONFIG_RSI_COEX) && adapter->priv->coex_mode > 1 && in rsi_disconnect()
1239 adapter->priv->bt_adapter) { in rsi_disconnect()
1240 rsi_bt_ops.detach(adapter->priv->bt_adapter); in rsi_disconnect()
1241 adapter->priv->bt_adapter = NULL; in rsi_disconnect()
1247 /* Resetting to take care of the case, where-in driver is re-loaded */ in rsi_disconnect()
1252 dev->write_fail = 2; in rsi_disconnect()
1262 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_set_sdio_pm_caps()
1263 struct sdio_func *func = dev->pfunction; in rsi_set_sdio_pm_caps()
1286 } while ((isr_status) && (jiffies_to_msecs(jiffies - t1) < 20)); in rsi_sdio_disable_interrupts()
1290 ret = rsi_cmd52readbyte(pfunc->card, RSI_INT_ENABLE_REGISTER, &data); in rsi_sdio_disable_interrupts()
1299 ret = rsi_cmd52writebyte(pfunc->card, RSI_INT_ENABLE_REGISTER, data); in rsi_sdio_disable_interrupts()
1306 ret = rsi_cmd52readbyte(pfunc->card, RSI_INT_ENABLE_REGISTER, &data); in rsi_sdio_disable_interrupts()
1325 struct rsi_common *common = adapter->priv; in rsi_sdio_enable_interrupts()
1328 ret = rsi_cmd52readbyte(pfunc->card, RSI_INT_ENABLE_REGISTER, &data); in rsi_sdio_enable_interrupts()
1337 ret = rsi_cmd52writebyte(pfunc->card, RSI_INT_ENABLE_REGISTER, data); in rsi_sdio_enable_interrupts()
1345 if ((common->wow_flags & RSI_WOW_ENABLED) && in rsi_sdio_enable_interrupts()
1346 (common->wow_flags & RSI_WOW_NO_CONNECTION)) in rsi_sdio_enable_interrupts()
1350 ret = rsi_cmd52readbyte(pfunc->card, RSI_INT_ENABLE_REGISTER, &data); in rsi_sdio_enable_interrupts()
1372 return -ENODEV; in rsi_suspend()
1374 common = adapter->priv; in rsi_suspend()
1381 common->fsm_state = FSM_CARD_NOT_READY; in rsi_suspend()
1390 struct rsi_common *common = adapter->priv; in rsi_resume()
1392 common->fsm_state = FSM_MAC_INIT_DONE; in rsi_resume()
1410 return -ENODEV; in rsi_freeze()
1412 common = adapter->priv; in rsi_freeze()
1413 sdev = (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_freeze()
1415 if ((common->wow_flags & RSI_WOW_ENABLED) && in rsi_freeze()
1416 (common->wow_flags & RSI_WOW_NO_CONNECTION)) in rsi_freeze()
1420 if (IS_ENABLED(CONFIG_RSI_COEX) && common->coex_mode > 1 && in rsi_freeze()
1421 common->bt_adapter) { in rsi_freeze()
1422 rsi_bt_ops.detach(common->bt_adapter); in rsi_freeze()
1423 common->bt_adapter = NULL; in rsi_freeze()
1428 if (sdev->write_fail) in rsi_freeze()
1444 struct rsi_common *common = adapter->priv; in rsi_thaw()
1448 common->hibernate_resume = true; in rsi_thaw()
1449 common->fsm_state = FSM_CARD_NOT_READY; in rsi_thaw()
1450 common->iface_down = true; in rsi_thaw()
1464 (struct rsi_91x_sdiodev *)adapter->rsi_dev; in rsi_shutdown()
1465 struct ieee80211_hw *hw = adapter->hw; in rsi_shutdown()
1470 struct cfg80211_wowlan *wowlan = hw->wiphy->wowlan_config; in rsi_shutdown()
1476 if (IS_ENABLED(CONFIG_RSI_COEX) && adapter->priv->coex_mode > 1 && in rsi_shutdown()
1477 adapter->priv->bt_adapter) { in rsi_shutdown()
1478 rsi_bt_ops.detach(adapter->priv->bt_adapter); in rsi_shutdown()
1479 adapter->priv->bt_adapter = NULL; in rsi_shutdown()
1482 rsi_sdio_disable_interrupts(sdev->pfunction); in rsi_shutdown()
1484 if (sdev->write_fail) in rsi_shutdown()
1497 struct rsi_common *common = adapter->priv; in rsi_restore()
1500 common->hibernate_resume = true; in rsi_restore()
1501 common->fsm_state = FSM_FW_NOT_LOADED; in rsi_restore()
1502 common->iface_down = true; in rsi_restore()
1504 adapter->sc_nvifs = 0; in rsi_restore()
1505 adapter->ps_state = PS_NONE; in rsi_restore()
1507 common->wow_flags = 0; in rsi_restore()
1508 common->iface_down = false; in rsi_restore()
1530 .name = "RSI-SDIO WLAN",
1543 * rsi_module_init() - This function registers the sdio module.
1558 * rsi_module_exit() - This function unregisters the sdio module.