Lines Matching refs:mtkd
139 struct mtk_uart_apdmadev *mtkd = in mtk_uart_apdma_start_tx() local
152 if (mtkd->support_33bits) in mtk_uart_apdma_start_tx()
182 struct mtk_uart_apdmadev *mtkd = in mtk_uart_apdma_start_rx() local
195 if (mtkd->support_33bits) in mtk_uart_apdma_start_rx()
272 struct mtk_uart_apdmadev *mtkd = to_mtk_uart_apdma_dev(chan->device); in mtk_uart_apdma_alloc_chan_resources() local
277 ret = pm_runtime_resume_and_get(mtkd->ddev.dev); in mtk_uart_apdma_alloc_chan_resources()
301 if (mtkd->support_33bits) in mtk_uart_apdma_alloc_chan_resources()
305 pm_runtime_put_noidle(mtkd->ddev.dev); in mtk_uart_apdma_alloc_chan_resources()
311 struct mtk_uart_apdmadev *mtkd = to_mtk_uart_apdma_dev(chan->device); in mtk_uart_apdma_free_chan_resources() local
320 pm_runtime_put_sync(mtkd->ddev.dev); in mtk_uart_apdma_free_chan_resources()
461 static void mtk_uart_apdma_free(struct mtk_uart_apdmadev *mtkd) in mtk_uart_apdma_free() argument
463 while (!list_empty(&mtkd->ddev.channels)) { in mtk_uart_apdma_free()
464 struct mtk_chan *c = list_first_entry(&mtkd->ddev.channels, in mtk_uart_apdma_free()
481 struct mtk_uart_apdmadev *mtkd; in mtk_uart_apdma_probe() local
486 mtkd = devm_kzalloc(&pdev->dev, sizeof(*mtkd), GFP_KERNEL); in mtk_uart_apdma_probe()
487 if (!mtkd) in mtk_uart_apdma_probe()
490 mtkd->clk = devm_clk_get(&pdev->dev, NULL); in mtk_uart_apdma_probe()
491 if (IS_ERR(mtkd->clk)) { in mtk_uart_apdma_probe()
493 rc = PTR_ERR(mtkd->clk); in mtk_uart_apdma_probe()
498 mtkd->support_33bits = true; in mtk_uart_apdma_probe()
500 if (mtkd->support_33bits) in mtk_uart_apdma_probe()
507 dma_cap_set(DMA_SLAVE, mtkd->ddev.cap_mask); in mtk_uart_apdma_probe()
508 mtkd->ddev.device_alloc_chan_resources = in mtk_uart_apdma_probe()
510 mtkd->ddev.device_free_chan_resources = in mtk_uart_apdma_probe()
512 mtkd->ddev.device_tx_status = mtk_uart_apdma_tx_status; in mtk_uart_apdma_probe()
513 mtkd->ddev.device_issue_pending = mtk_uart_apdma_issue_pending; in mtk_uart_apdma_probe()
514 mtkd->ddev.device_prep_slave_sg = mtk_uart_apdma_prep_slave_sg; in mtk_uart_apdma_probe()
515 mtkd->ddev.device_config = mtk_uart_apdma_slave_config; in mtk_uart_apdma_probe()
516 mtkd->ddev.device_pause = mtk_uart_apdma_device_pause; in mtk_uart_apdma_probe()
517 mtkd->ddev.device_terminate_all = mtk_uart_apdma_terminate_all; in mtk_uart_apdma_probe()
518 mtkd->ddev.src_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE); in mtk_uart_apdma_probe()
519 mtkd->ddev.dst_addr_widths = BIT(DMA_SLAVE_BUSWIDTH_1_BYTE); in mtk_uart_apdma_probe()
520 mtkd->ddev.directions = BIT(DMA_DEV_TO_MEM) | BIT(DMA_MEM_TO_DEV); in mtk_uart_apdma_probe()
521 mtkd->ddev.residue_granularity = DMA_RESIDUE_GRANULARITY_SEGMENT; in mtk_uart_apdma_probe()
522 mtkd->ddev.dev = &pdev->dev; in mtk_uart_apdma_probe()
523 INIT_LIST_HEAD(&mtkd->ddev.channels); in mtk_uart_apdma_probe()
525 mtkd->dma_requests = MTK_UART_APDMA_NR_VCHANS; in mtk_uart_apdma_probe()
526 if (of_property_read_u32(np, "dma-requests", &mtkd->dma_requests)) { in mtk_uart_apdma_probe()
532 for (i = 0; i < mtkd->dma_requests; i++) { in mtk_uart_apdma_probe()
533 c = devm_kzalloc(mtkd->ddev.dev, sizeof(*c), GFP_KERNEL); in mtk_uart_apdma_probe()
545 vchan_init(&c->vc, &mtkd->ddev); in mtk_uart_apdma_probe()
556 rc = dma_async_device_register(&mtkd->ddev); in mtk_uart_apdma_probe()
560 platform_set_drvdata(pdev, mtkd); in mtk_uart_apdma_probe()
563 rc = of_dma_controller_register(np, of_dma_xlate_by_chan_id, mtkd); in mtk_uart_apdma_probe()
570 dma_async_device_unregister(&mtkd->ddev); in mtk_uart_apdma_probe()
574 mtk_uart_apdma_free(mtkd); in mtk_uart_apdma_probe()
580 struct mtk_uart_apdmadev *mtkd = platform_get_drvdata(pdev); in mtk_uart_apdma_remove() local
584 mtk_uart_apdma_free(mtkd); in mtk_uart_apdma_remove()
586 dma_async_device_unregister(&mtkd->ddev); in mtk_uart_apdma_remove()
596 struct mtk_uart_apdmadev *mtkd = dev_get_drvdata(dev); in mtk_uart_apdma_suspend() local
599 clk_disable_unprepare(mtkd->clk); in mtk_uart_apdma_suspend()
607 struct mtk_uart_apdmadev *mtkd = dev_get_drvdata(dev); in mtk_uart_apdma_resume() local
610 ret = clk_prepare_enable(mtkd->clk); in mtk_uart_apdma_resume()
622 struct mtk_uart_apdmadev *mtkd = dev_get_drvdata(dev); in mtk_uart_apdma_runtime_suspend() local
624 clk_disable_unprepare(mtkd->clk); in mtk_uart_apdma_runtime_suspend()
631 struct mtk_uart_apdmadev *mtkd = dev_get_drvdata(dev); in mtk_uart_apdma_runtime_resume() local
633 return clk_prepare_enable(mtkd->clk); in mtk_uart_apdma_runtime_resume()