Lines Matching refs:mtu

38 #define GPD_RX_BUF_LEN(mtu, x)	\
41 ((mtu)->gen2cp) ? GPD_RX_BUF_LEN_EL(x_) : GPD_RX_BUF_LEN_OG(x_); \
46 #define GPD_DATA_LEN(mtu, x) \
49 ((mtu)->gen2cp) ? GPD_DATA_LEN_EL(x_) : GPD_DATA_LEN_OG(x_); \
57 #define GPD_EXT_NGP(mtu, x) \
60 ((mtu)->gen2cp) ? GPD_EXT_NGP_EL(x_) : GPD_EXT_NGP_OG(x_); \
63 #define GPD_EXT_BUF(mtu, x) \
66 ((mtu)->gen2cp) ? GPD_EXT_BUF_EL(x_) : GPD_EXT_BUF_OG(x_); \
171 gpd = dma_pool_zalloc(mep->mtu->qmu_gpd_pool, GFP_ATOMIC, &ring->dma);
184 dma_pool_free(mep->mtu->qmu_gpd_pool,
191 struct mtu3 *mtu = mep->mtu;
192 void __iomem *mbase = mtu->mac_base;
250 struct mtu3 *mtu = mep->mtu;
256 ext_addr = GPD_EXT_BUF(mtu, upper_32_bits(req->dma));
257 gpd->dw3_info = cpu_to_le32(GPD_DATA_LEN(mtu, req->length));
262 dev_dbg(mep->mtu->dev, "TX-EP%d queue gpd=%p, enq=%p, qdma=%pad\n",
267 ext_addr |= GPD_EXT_NGP(mtu, upper_32_bits(enq_dma));
271 if (mtu->gen2cp)
293 struct mtu3 *mtu = mep->mtu;
299 ext_addr = GPD_EXT_BUF(mtu, upper_32_bits(req->dma));
300 gpd->dw0_info = cpu_to_le32(GPD_RX_BUF_LEN(mtu, req->length));
305 dev_dbg(mep->mtu->dev, "RX-EP%d queue gpd=%p, enq=%p, qdma=%pad\n",
310 ext_addr |= GPD_EXT_NGP(mtu, upper_32_bits(enq_dma));
333 struct mtu3 *mtu = mep->mtu;
334 void __iomem *mbase = mtu->mac_base;
348 dev_warn(mtu->dev, "Tx %d Active Now!\n", epnum);
365 dev_warn(mtu->dev, "Rx %d Active Now!\n", epnum);
377 struct mtu3 *mtu = mep->mtu;
378 void __iomem *mbase = mtu->mac_base;
387 dev_dbg(mtu->dev, "%s's qmu is inactive now!\n", mep->name);
398 dev_err(mtu->dev, "stop %s's qmu failed\n", mep->name);
406 dev_dbg(mtu->dev, "%s's qmu stop now!\n", mep->name);
412 dev_dbg(mep->mtu->dev, "%s flush QMU %s\n", __func__,
425 static void qmu_tx_zlp_error_handler(struct mtu3 *mtu, u8 epnum)
427 struct mtu3_ep *mep = mtu->in_eps + epnum;
429 void __iomem *mbase = mtu->mac_base;
443 if (GPD_DATA_LEN(mtu, le32_to_cpu(gpd_current->dw3_info)) != 0) {
444 dev_err(mtu->dev, "TX EP%d buffer length error(!=0)\n", epnum);
448 dev_dbg(mtu->dev, "%s send ZLP for req=%p\n", __func__, mreq);
456 dev_err(mtu->dev, "%s wait for fifo empty fail\n", __func__);
474 static void qmu_error_rx(struct mtu3 *mtu, u8 epnum)
476 struct mtu3_ep *mep = mtu->out_eps + epnum;
482 cur_gpd_dma = read_rxq_cur_addr(mtu->mac_base, epnum);
487 dev_err(mtu->dev, "no correct RX req is found\n");
497 dev_dbg(mtu->dev, "%s EP%d, current=%p, req=%p\n",
508 static void qmu_done_tx(struct mtu3 *mtu, u8 epnum)
510 struct mtu3_ep *mep = mtu->in_eps + epnum;
512 void __iomem *mbase = mtu->mac_base;
523 dev_dbg(mtu->dev, "%s EP%d, last=%p, current=%p, enq=%p\n",
531 dev_err(mtu->dev, "no correct TX req is found\n");
536 request->actual = GPD_DATA_LEN(mtu, le32_to_cpu(gpd->dw3_info));
543 dev_dbg(mtu->dev, "%s EP%d, deq=%p, enq=%p, complete\n",
548 static void qmu_done_rx(struct mtu3 *mtu, u8 epnum)
550 struct mtu3_ep *mep = mtu->out_eps + epnum;
552 void __iomem *mbase = mtu->mac_base;
562 dev_dbg(mtu->dev, "%s EP%d, last=%p, current=%p, enq=%p\n",
570 dev_err(mtu->dev, "no correct RX req is found\n");
575 req->actual = GPD_DATA_LEN(mtu, le32_to_cpu(gpd->dw3_info));
582 dev_dbg(mtu->dev, "%s EP%d, deq=%p, enq=%p, complete\n",
586 static void qmu_done_isr(struct mtu3 *mtu, u32 done_status)
590 for (i = 1; i < mtu->num_eps; i++) {
592 qmu_done_rx(mtu, i);
594 qmu_done_tx(mtu, i);
598 static void qmu_exception_isr(struct mtu3 *mtu, u32 qmu_status)
600 void __iomem *mbase = mtu->mac_base;
608 for (i = 1; i < mtu->num_eps; i++) {
610 dev_err(mtu->dev, "Rx %d CS error!\n", i);
613 dev_err(mtu->dev, "RX %d Length error\n", i);
616 qmu_error_rx(mtu, i);
622 for (i = 1; i < mtu->num_eps; i++) {
624 dev_dbg(mtu->dev, "RX EP%d Recv ZLP\n", i);
631 for (i = 1; i < mtu->num_eps; i++) {
633 dev_err(mtu->dev, "Tx %d checksum error!\n", i);
636 qmu_tx_zlp_error_handler(mtu, i);
642 irqreturn_t mtu3_qmu_isr(struct mtu3 *mtu)
644 void __iomem *mbase = mtu->mac_base;
655 dev_dbg(mtu->dev, "=== QMUdone[tx=%x, rx=%x] QMUexp[%x] ===\n",
661 qmu_done_isr(mtu, qmu_done_status);
664 qmu_exception_isr(mtu, qmu_status);
669 int mtu3_qmu_init(struct mtu3 *mtu)
674 mtu->qmu_gpd_pool = dma_pool_create("QMU_GPD", mtu->dev,
677 if (!mtu->qmu_gpd_pool)
683 void mtu3_qmu_exit(struct mtu3 *mtu)
685 dma_pool_destroy(mtu->qmu_gpd_pool);