Lines Matching +full:mt8173 +full:- +full:disp

1 // SPDX-License-Identifier: GPL-2.0-only
12 #include <linux/soc/mediatek/mtk-cmdq.h>
49 #define RDMA_FIFO_SIZE(rdma) ((rdma)->data->fifo_size)
59 * struct mtk_disp_rdma - DISP_RDMA driver structure
77 writel(0x0, priv->regs + DISP_REG_RDMA_INT_STATUS); in mtk_disp_rdma_irq_handler()
79 if (!priv->vblank_cb) in mtk_disp_rdma_irq_handler()
82 priv->vblank_cb(priv->vblank_cb_data); in mtk_disp_rdma_irq_handler()
91 unsigned int tmp = readl(rdma->regs + reg); in rdma_update_bits()
94 writel(tmp, rdma->regs + reg); in rdma_update_bits()
103 rdma->vblank_cb = vblank_cb; in mtk_rdma_enable_vblank()
104 rdma->vblank_cb_data = vblank_cb_data; in mtk_rdma_enable_vblank()
113 rdma->vblank_cb = NULL; in mtk_rdma_disable_vblank()
114 rdma->vblank_cb_data = NULL; in mtk_rdma_disable_vblank()
122 return clk_prepare_enable(rdma->clk); in mtk_rdma_clk_enable()
129 clk_disable_unprepare(rdma->clk); in mtk_rdma_clk_disable()
152 mtk_ddp_write_mask(cmdq_pkt, width, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_config()
154 mtk_ddp_write_mask(cmdq_pkt, height, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_config()
157 if (rdma->fifo_size) in mtk_rdma_config()
158 rdma_fifo_size = rdma->fifo_size; in mtk_rdma_config()
172 mtk_ddp_write(cmdq_pkt, reg, &rdma->cmdq_reg, rdma->regs, DISP_REG_RDMA_FIFO_CON); in mtk_rdma_config()
222 struct mtk_plane_pending_state *pending = &state->pending; in mtk_rdma_layer_config()
223 unsigned int addr = pending->addr; in mtk_rdma_layer_config()
224 unsigned int pitch = pending->pitch & 0xffff; in mtk_rdma_layer_config()
225 unsigned int fmt = pending->format; in mtk_rdma_layer_config()
229 mtk_ddp_write_relaxed(cmdq_pkt, con, &rdma->cmdq_reg, rdma->regs, DISP_RDMA_MEM_CON); in mtk_rdma_layer_config()
232 mtk_ddp_write_mask(cmdq_pkt, RDMA_MATRIX_ENABLE, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
236 &rdma->cmdq_reg, rdma->regs, DISP_REG_RDMA_SIZE_CON_0, in mtk_rdma_layer_config()
239 mtk_ddp_write_mask(cmdq_pkt, 0, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
243 mtk_ddp_write_relaxed(cmdq_pkt, addr, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
245 mtk_ddp_write_relaxed(cmdq_pkt, pitch, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
247 mtk_ddp_write(cmdq_pkt, RDMA_MEM_GMC, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
249 mtk_ddp_write_mask(cmdq_pkt, RDMA_MODE_MEMORY, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
273 struct device *dev = &pdev->dev; in mtk_disp_rdma_probe()
281 return -ENOMEM; in mtk_disp_rdma_probe()
287 priv->clk = devm_clk_get(dev, NULL); in mtk_disp_rdma_probe()
288 if (IS_ERR(priv->clk)) { in mtk_disp_rdma_probe()
290 return PTR_ERR(priv->clk); in mtk_disp_rdma_probe()
294 priv->regs = devm_ioremap_resource(dev, res); in mtk_disp_rdma_probe()
295 if (IS_ERR(priv->regs)) { in mtk_disp_rdma_probe()
297 return PTR_ERR(priv->regs); in mtk_disp_rdma_probe()
300 ret = cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0); in mtk_disp_rdma_probe()
302 dev_dbg(dev, "get mediatek,gce-client-reg fail!\n"); in mtk_disp_rdma_probe()
305 if (of_find_property(dev->of_node, "mediatek,rdma-fifo-size", &ret)) { in mtk_disp_rdma_probe()
306 ret = of_property_read_u32(dev->of_node, in mtk_disp_rdma_probe()
307 "mediatek,rdma-fifo-size", in mtk_disp_rdma_probe()
308 &priv->fifo_size); in mtk_disp_rdma_probe()
316 writel(0x0, priv->regs + DISP_REG_RDMA_INT_ENABLE); in mtk_disp_rdma_probe()
317 writel(0x0, priv->regs + DISP_REG_RDMA_INT_STATUS); in mtk_disp_rdma_probe()
326 priv->data = of_device_get_match_data(dev); in mtk_disp_rdma_probe()
339 component_del(&pdev->dev, &mtk_disp_rdma_component_ops); in mtk_disp_rdma_remove()
357 { .compatible = "mediatek,mt2701-disp-rdma",
359 { .compatible = "mediatek,mt8173-disp-rdma",
361 { .compatible = "mediatek,mt8183-disp-rdma",
371 .name = "mediatek-disp-rdma",