Lines Matching full:sdio

19 #include "sdio.h"
38 struct mt76_sdio *sdio = &dev->sdio; in mt7663s_refill_sched_quota() local
49 mutex_lock(&sdio->sched.lock); in mt7663s_refill_sched_quota()
50 sdio->sched.pse_mcu_quota += pse_mcu_quota; in mt7663s_refill_sched_quota()
51 sdio->sched.pse_data_quota += pse_data_quota; in mt7663s_refill_sched_quota()
52 sdio->sched.ple_data_quota += ple_data_quota; in mt7663s_refill_sched_quota()
53 mutex_unlock(&sdio->sched.lock); in mt7663s_refill_sched_quota()
87 struct mt76_sdio *sdio = &dev->sdio; in mt7663s_rx_run_queue() local
98 if (len > sdio->func->cur_blksize) in mt7663s_rx_run_queue()
99 len = roundup(len, sdio->func->cur_blksize); in mt7663s_rx_run_queue()
108 sdio_claim_host(sdio->func); in mt7663s_rx_run_queue()
109 err = sdio_readsb(sdio->func, buf, MCR_WRDR(qid), len); in mt7663s_rx_run_queue()
110 sdio_release_host(sdio->func); in mt7663s_rx_run_queue()
113 dev_err(dev->dev, "sdio read data failed:%d\n", err); in mt7663s_rx_run_queue()
141 static int mt7663s_tx_pick_quota(struct mt76_sdio *sdio, enum mt76_txq_id qid, in mt7663s_tx_pick_quota() argument
146 pse_sz = DIV_ROUND_UP(buf_sz + sdio->sched.deficit, MT_PSE_PAGE_SZ); in mt7663s_tx_pick_quota()
149 if (sdio->sched.pse_mcu_quota < *pse_size + pse_sz) in mt7663s_tx_pick_quota()
152 if (sdio->sched.pse_data_quota < *pse_size + pse_sz || in mt7663s_tx_pick_quota()
153 sdio->sched.ple_data_quota < *ple_size) in mt7663s_tx_pick_quota()
163 static void mt7663s_tx_update_quota(struct mt76_sdio *sdio, enum mt76_txq_id qid, in mt7663s_tx_update_quota() argument
166 mutex_lock(&sdio->sched.lock); in mt7663s_tx_update_quota()
168 sdio->sched.pse_mcu_quota -= pse_size; in mt7663s_tx_update_quota()
170 sdio->sched.pse_data_quota -= pse_size; in mt7663s_tx_update_quota()
171 sdio->sched.ple_data_quota -= ple_size; in mt7663s_tx_update_quota()
173 mutex_unlock(&sdio->sched.lock); in mt7663s_tx_update_quota()
178 struct mt76_sdio *sdio = &dev->sdio; in __mt7663s_xmit_queue() local
181 if (len > sdio->func->cur_blksize) in __mt7663s_xmit_queue()
182 len = roundup(len, sdio->func->cur_blksize); in __mt7663s_xmit_queue()
184 sdio_claim_host(sdio->func); in __mt7663s_xmit_queue()
185 err = sdio_writesb(sdio->func, MCR_WTDR1, data, len); in __mt7663s_xmit_queue()
186 sdio_release_host(sdio->func); in __mt7663s_xmit_queue()
189 dev_err(dev->dev, "sdio write failed: %d\n", err); in __mt7663s_xmit_queue()
198 struct mt76_sdio *sdio = &dev->sdio; in mt7663s_tx_run_queue() local
217 if (mt7663s_tx_pick_quota(sdio, qid, e->buf_sz, &pse_sz, in mt7663s_tx_run_queue()
221 memcpy(sdio->xmit_buf[qid] + len, e->skb->data, in mt7663s_tx_run_queue()
227 memcpy(sdio->xmit_buf[qid] + len, iter->data, in mt7663s_tx_run_queue()
238 memset(sdio->xmit_buf[qid] + len, 0, 4); in mt7663s_tx_run_queue()
239 err = __mt7663s_xmit_queue(dev, sdio->xmit_buf[qid], len + 4); in mt7663s_tx_run_queue()
243 mt7663s_tx_update_quota(sdio, qid, pse_sz, ple_sz); in mt7663s_tx_run_queue()
250 struct mt76_sdio *sdio = container_of(work, struct mt76_sdio, in mt7663s_tx_work() local
252 struct mt76_dev *dev = container_of(sdio, struct mt76_dev, sdio); in mt7663s_tx_work()
265 queue_work(sdio->txrx_wq, &sdio->tx.xmit_work); in mt7663s_tx_work()
267 queue_work(sdio->txrx_wq, &sdio->tx.status_work); in mt7663s_tx_work()
272 struct mt76_sdio *sdio = container_of(work, struct mt76_sdio, in mt7663s_rx_work() local
274 struct mt76_dev *dev = container_of(sdio, struct mt76_dev, sdio); in mt7663s_rx_work()
275 struct mt76s_intr *intr = sdio->intr_data; in mt7663s_rx_work()
279 sdio_claim_host(sdio->func); in mt7663s_rx_work()
280 sdio_writel(sdio->func, WHLPCR_INT_EN_CLR, MCR_WHLPCR, NULL); in mt7663s_rx_work()
281 ret = sdio_readsb(sdio->func, intr, MCR_WHISR, sizeof(*intr)); in mt7663s_rx_work()
282 sdio_release_host(sdio->func); in mt7663s_rx_work()
292 queue_work(sdio->txrx_wq, &sdio->rx.net_work); in mt7663s_rx_work()
300 queue_work(sdio->txrx_wq, &sdio->rx.net_work); in mt7663s_rx_work()
306 queue_work(sdio->txrx_wq, &sdio->tx.xmit_work); in mt7663s_rx_work()
309 queue_work(sdio->txrx_wq, &sdio->rx.recv_work); in mt7663s_rx_work()
314 sdio_claim_host(sdio->func); in mt7663s_rx_work()
315 sdio_writel(sdio->func, WHLPCR_INT_EN_SET, MCR_WHLPCR, NULL); in mt7663s_rx_work()
316 sdio_release_host(sdio->func); in mt7663s_rx_work()
322 struct mt76_sdio *sdio = &dev->mt76.sdio; in mt7663s_sdio_irq() local
327 queue_work(sdio->txrx_wq, &sdio->rx.recv_work); in mt7663s_sdio_irq()