Lines Matching full:sdio
18 #include "sdio.h"
37 struct mt76_sdio *sdio = &dev->sdio; in mt76s_refill_sched_quota() local
48 sdio->sched.pse_mcu_quota += pse_mcu_quota; in mt76s_refill_sched_quota()
49 if (sdio->pse_mcu_quota_max && in mt76s_refill_sched_quota()
50 sdio->sched.pse_mcu_quota > sdio->pse_mcu_quota_max) { in mt76s_refill_sched_quota()
51 sdio->sched.pse_mcu_quota = sdio->pse_mcu_quota_max; in mt76s_refill_sched_quota()
53 sdio->sched.pse_data_quota += pse_data_quota; in mt76s_refill_sched_quota()
54 sdio->sched.ple_data_quota += ple_data_quota; in mt76s_refill_sched_quota()
89 struct mt76_sdio *sdio = &dev->sdio; in mt76s_rx_run_queue() local
100 if (len > sdio->func->cur_blksize) in mt76s_rx_run_queue()
101 len = roundup(len, sdio->func->cur_blksize); in mt76s_rx_run_queue()
109 sdio_claim_host(sdio->func); in mt76s_rx_run_queue()
110 err = sdio_readsb(sdio->func, buf, MCR_WRDR(qid), len); in mt76s_rx_run_queue()
111 sdio_release_host(sdio->func); in mt76s_rx_run_queue()
114 dev_err(dev->dev, "sdio read data failed:%d\n", err); in mt76s_rx_run_queue()
156 struct mt76_sdio *sdio = &dev->sdio; in mt76s_rx_handler() local
160 ret = sdio->parse_irq(dev, &intr); in mt76s_rx_handler()
169 mt76_worker_schedule(&sdio->net_worker); in mt76s_rx_handler()
177 mt76_worker_schedule(&sdio->net_worker); in mt76s_rx_handler()
188 mt76s_tx_pick_quota(struct mt76_sdio *sdio, bool mcu, int buf_sz, in mt76s_tx_pick_quota() argument
193 pse_sz = DIV_ROUND_UP(buf_sz + sdio->sched.deficit, in mt76s_tx_pick_quota()
194 sdio->sched.pse_page_size); in mt76s_tx_pick_quota()
196 if (mcu && sdio->hw_ver == MT76_CONNAC2_SDIO) in mt76s_tx_pick_quota()
200 if (sdio->sched.pse_mcu_quota < *pse_size + pse_sz) in mt76s_tx_pick_quota()
203 if (sdio->sched.pse_data_quota < *pse_size + pse_sz || in mt76s_tx_pick_quota()
204 sdio->sched.ple_data_quota < *ple_size + 1) in mt76s_tx_pick_quota()
215 mt76s_tx_update_quota(struct mt76_sdio *sdio, bool mcu, int pse_size, in mt76s_tx_update_quota() argument
219 sdio->sched.pse_mcu_quota -= pse_size; in mt76s_tx_update_quota()
221 sdio->sched.pse_data_quota -= pse_size; in mt76s_tx_update_quota()
222 sdio->sched.ple_data_quota -= ple_size; in mt76s_tx_update_quota()
228 struct mt76_sdio *sdio = &dev->sdio; in __mt76s_xmit_queue() local
231 if (len > sdio->func->cur_blksize) in __mt76s_xmit_queue()
232 len = roundup(len, sdio->func->cur_blksize); in __mt76s_xmit_queue()
234 sdio_claim_host(sdio->func); in __mt76s_xmit_queue()
235 err = sdio_writesb(sdio->func, MCR_WTDR1, data, len); in __mt76s_xmit_queue()
236 sdio_release_host(sdio->func); in __mt76s_xmit_queue()
239 dev_err(dev->dev, "sdio write failed: %d\n", err); in __mt76s_xmit_queue()
249 struct mt76_sdio *sdio = &dev->sdio; in mt76s_tx_run_queue() local
264 sdio->func->cur_blksize)); in mt76s_tx_run_queue()
276 if (len + e->skb->len + pad + 4 > dev->sdio.xmit_buf_sz) in mt76s_tx_run_queue()
279 if (mt76s_tx_pick_quota(sdio, mcu, e->buf_sz, &pse_sz, in mt76s_tx_run_queue()
283 memcpy(sdio->xmit_buf + len, e->skb->data, skb_headlen(e->skb)); in mt76s_tx_run_queue()
288 memcpy(sdio->xmit_buf + len, iter->data, iter->len); in mt76s_tx_run_queue()
294 memset(sdio->xmit_buf + len, 0, pad); in mt76s_tx_run_queue()
303 memset(sdio->xmit_buf + len, 0, 4); in mt76s_tx_run_queue()
304 err = __mt76s_xmit_queue(dev, sdio->xmit_buf, len + 4); in mt76s_tx_run_queue()
308 mt76s_tx_update_quota(sdio, mcu, pse_sz, ple_sz); in mt76s_tx_run_queue()
310 mt76_worker_schedule(&sdio->status_worker); in mt76s_tx_run_queue()
315 void mt76s_txrx_worker(struct mt76_sdio *sdio) in mt76s_txrx_worker() argument
317 struct mt76_dev *dev = container_of(sdio, struct mt76_dev, sdio); in mt76s_txrx_worker()
321 sdio_claim_host(sdio->func); in mt76s_txrx_worker()
322 sdio_writel(sdio->func, WHLPCR_INT_EN_CLR, MCR_WHLPCR, NULL); in mt76s_txrx_worker()
323 sdio_release_host(sdio->func); in mt76s_txrx_worker()
348 wake_up(&sdio->wait); in mt76s_txrx_worker()
353 sdio_claim_host(sdio->func); in mt76s_txrx_worker()
354 sdio_writel(sdio->func, WHLPCR_INT_EN_SET, MCR_WHLPCR, NULL); in mt76s_txrx_worker()
355 sdio_release_host(sdio->func); in mt76s_txrx_worker()
362 struct mt76_sdio *sdio = &dev->sdio; in mt76s_sdio_irq() local
368 sdio_writel(sdio->func, WHLPCR_INT_EN_CLR, MCR_WHLPCR, NULL); in mt76s_sdio_irq()
369 mt76_worker_schedule(&sdio->txrx_worker); in mt76s_sdio_irq()