Lines Matching refs:rtwsdio

28 static bool rtw_sdio_bus_claim_needed(struct rtw_sdio *rtwsdio)  in rtw_sdio_bus_claim_needed()  argument
30 return !rtwsdio->irq_thread || in rtw_sdio_bus_claim_needed()
31 rtwsdio->irq_thread != current; in rtw_sdio_bus_claim_needed()
65 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_writel() local
70 sdio_writel(rtwsdio->sdio_func, val, addr, err_ret); in rtw_sdio_writel()
77 sdio_writeb(rtwsdio->sdio_func, buf[i], addr + i, err_ret); in rtw_sdio_writel()
86 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_writew() local
93 sdio_writeb(rtwsdio->sdio_func, buf[i], addr + i, err_ret); in rtw_sdio_writew()
101 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_readl() local
106 return sdio_readl(rtwsdio->sdio_func, addr, err_ret); in rtw_sdio_readl()
109 buf[i] = sdio_readb(rtwsdio->sdio_func, addr + i, err_ret); in rtw_sdio_readl()
119 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_readw() local
124 buf[i] = sdio_readb(rtwsdio->sdio_func, addr + i, err_ret); in rtw_sdio_readw()
152 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_indirect_reg_cfg() local
166 tmp = sdio_readb(rtwsdio->sdio_func, reg_cfg + 2, &ret); in rtw_sdio_indirect_reg_cfg()
177 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_indirect_read8() local
186 return sdio_readb(rtwsdio->sdio_func, reg_data, err_ret); in rtw_sdio_indirect_read8()
251 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_read8() local
258 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_read8()
261 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_read8()
264 val = sdio_readb(rtwsdio->sdio_func, addr, &ret); in rtw_sdio_read8()
269 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_read8()
279 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_read16() local
286 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_read16()
289 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_read16()
297 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_read16()
307 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_read32() local
314 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_read32()
317 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_read32()
325 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_read32()
336 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_indirect_write8() local
340 sdio_writeb(rtwsdio->sdio_func, val, reg_data, err_ret); in rtw_sdio_indirect_write8()
390 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_write8() local
396 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_write8()
399 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_write8()
402 sdio_writeb(rtwsdio->sdio_func, val, addr, &ret); in rtw_sdio_write8()
407 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_write8()
415 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_write16() local
421 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_write16()
424 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_write16()
432 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_write16()
440 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_write32() local
446 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_write32()
449 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_write32()
457 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_write32()
502 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_read_port() local
503 struct mmc_host *host = rtwsdio->sdio_func->card->host; in rtw_sdio_read_port()
504 bool bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_read_port()
505 u32 rxaddr = rtwsdio->rx_addr++; in rtw_sdio_read_port()
510 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_read_port()
515 err = sdio_memcpy_fromio(rtwsdio->sdio_func, buf, in rtw_sdio_read_port()
539 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_read_port()
631 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_write_port() local
641 txsize = sdio_align_size(rtwsdio->sdio_func, skb->len); in rtw_sdio_write_port()
651 bus_claim = rtw_sdio_bus_claim_needed(rtwsdio); in rtw_sdio_write_port()
654 sdio_claim_host(rtwsdio->sdio_func); in rtw_sdio_write_port()
656 ret = sdio_memcpy_toio(rtwsdio->sdio_func, txaddr, skb->data, txsize); in rtw_sdio_write_port()
659 sdio_release_host(rtwsdio->sdio_func); in rtw_sdio_write_port()
671 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_init() local
673 rtwsdio->irq_mask = REG_SDIO_HIMR_RX_REQUEST | REG_SDIO_HIMR_CPWM1; in rtw_sdio_init()
702 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_enable_interrupt() local
704 rtw_write32(rtwdev, REG_SDIO_HIMR, rtwsdio->irq_mask); in rtw_sdio_enable_interrupt()
753 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_deep_ps_enter() local
768 if (skb_queue_len(&rtwsdio->tx_queue[queue])) { in rtw_sdio_deep_ps_enter()
802 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_tx_kick_off() local
804 queue_work(rtwsdio->txwq, &rtwsdio->tx_handler_data->work); in rtw_sdio_tx_kick_off()
915 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_tx_write() local
924 skb_queue_tail(&rtwsdio->tx_queue[queue], skb); in rtw_sdio_tx_write()
958 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_rxfifo_recv() local
969 bufsz = sdio_align_size(rtwsdio->sdio_func, rx_len); in rtw_sdio_rxfifo_recv()
1060 struct rtw_sdio *rtwsdio; in rtw_sdio_handle_interrupt() local
1065 rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_handle_interrupt()
1067 rtwsdio->irq_thread = current; in rtw_sdio_handle_interrupt()
1080 rtwsdio->irq_thread = NULL; in rtw_sdio_handle_interrupt()
1107 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_claim() local
1124 rtwsdio->sdio_func = sdio_func; in rtw_sdio_claim()
1126 rtwsdio->sdio3_bus_mode = mmc_card_uhs(sdio_func->card); in rtw_sdio_claim()
1213 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_process_tx_queue() local
1217 skb = skb_dequeue(&rtwsdio->tx_queue[queue]); in rtw_sdio_process_tx_queue()
1223 skb_queue_head(&rtwsdio->tx_queue[queue], skb); in rtw_sdio_process_tx_queue()
1237 struct rtw_sdio *rtwsdio; in rtw_sdio_tx_handler() local
1242 rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_tx_handler()
1251 if (skb_queue_empty(&rtwsdio->tx_queue[queue])) in rtw_sdio_tx_handler()
1267 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_init_tx() local
1270 rtwsdio->txwq = create_singlethread_workqueue("rtw88_sdio: tx wq"); in rtw_sdio_init_tx()
1271 if (!rtwsdio->txwq) { in rtw_sdio_init_tx()
1277 skb_queue_head_init(&rtwsdio->tx_queue[i]); in rtw_sdio_init_tx()
1278 rtwsdio->tx_handler_data = kmalloc(sizeof(*rtwsdio->tx_handler_data), in rtw_sdio_init_tx()
1280 if (!rtwsdio->tx_handler_data) in rtw_sdio_init_tx()
1283 rtwsdio->tx_handler_data->rtwdev = rtwdev; in rtw_sdio_init_tx()
1284 INIT_WORK(&rtwsdio->tx_handler_data->work, rtw_sdio_tx_handler); in rtw_sdio_init_tx()
1289 destroy_workqueue(rtwsdio->txwq); in rtw_sdio_init_tx()
1295 struct rtw_sdio *rtwsdio = (struct rtw_sdio *)rtwdev->priv; in rtw_sdio_deinit_tx() local
1298 flush_workqueue(rtwsdio->txwq); in rtw_sdio_deinit_tx()
1299 destroy_workqueue(rtwsdio->txwq); in rtw_sdio_deinit_tx()
1300 kfree(rtwsdio->tx_handler_data); in rtw_sdio_deinit_tx()
1303 ieee80211_purge_tx_queue(rtwdev->hw, &rtwsdio->tx_queue[i]); in rtw_sdio_deinit_tx()