Lines Matching +full:mt8183 +full:- +full:dsi

1 // SPDX-License-Identifier: GPL-2.0-only
14 #include <linux/soc/mediatek/mtk-cmdq.h>
52 #define RDMA_FIFO_SIZE(rdma) ((rdma)->data->fifo_size)
78 * struct mtk_disp_rdma - DISP_RDMA driver structure
96 writel(0x0, priv->regs + DISP_REG_RDMA_INT_STATUS); in mtk_disp_rdma_irq_handler()
98 if (!priv->vblank_cb) in mtk_disp_rdma_irq_handler()
101 priv->vblank_cb(priv->vblank_cb_data); in mtk_disp_rdma_irq_handler()
110 unsigned int tmp = readl(rdma->regs + reg); in rdma_update_bits()
113 writel(tmp, rdma->regs + reg); in rdma_update_bits()
122 rdma->vblank_cb = vblank_cb; in mtk_rdma_register_vblank_cb()
123 rdma->vblank_cb_data = vblank_cb_data; in mtk_rdma_register_vblank_cb()
130 rdma->vblank_cb = NULL; in mtk_rdma_unregister_vblank_cb()
131 rdma->vblank_cb_data = NULL; in mtk_rdma_unregister_vblank_cb()
149 return rdma->data->formats; in mtk_rdma_get_formats()
156 return rdma->data->num_formats; in mtk_rdma_get_num_formats()
163 return clk_prepare_enable(rdma->clk); in mtk_rdma_clk_enable()
170 clk_disable_unprepare(rdma->clk); in mtk_rdma_clk_disable()
193 mtk_ddp_write_mask(cmdq_pkt, width, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_config()
195 mtk_ddp_write_mask(cmdq_pkt, height, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_config()
198 if (rdma->fifo_size) in mtk_rdma_config()
199 rdma_fifo_size = rdma->fifo_size; in mtk_rdma_config()
204 * Enable FIFO underflow since DSI and DPI can't be blocked. in mtk_rdma_config()
213 mtk_ddp_write(cmdq_pkt, reg, &rdma->cmdq_reg, rdma->regs, DISP_REG_RDMA_FIFO_CON); in mtk_rdma_config()
263 struct mtk_plane_pending_state *pending = &state->pending; in mtk_rdma_layer_config()
264 unsigned int addr = pending->addr; in mtk_rdma_layer_config()
265 unsigned int pitch = pending->pitch & 0xffff; in mtk_rdma_layer_config()
266 unsigned int fmt = pending->format; in mtk_rdma_layer_config()
270 mtk_ddp_write_relaxed(cmdq_pkt, con, &rdma->cmdq_reg, rdma->regs, DISP_RDMA_MEM_CON); in mtk_rdma_layer_config()
273 mtk_ddp_write_mask(cmdq_pkt, RDMA_MATRIX_ENABLE, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
277 &rdma->cmdq_reg, rdma->regs, DISP_REG_RDMA_SIZE_CON_0, in mtk_rdma_layer_config()
280 mtk_ddp_write_mask(cmdq_pkt, 0, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
284 mtk_ddp_write_relaxed(cmdq_pkt, addr, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
286 mtk_ddp_write_relaxed(cmdq_pkt, pitch, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
288 mtk_ddp_write(cmdq_pkt, RDMA_MEM_GMC, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
290 mtk_ddp_write_mask(cmdq_pkt, RDMA_MODE_MEMORY, &rdma->cmdq_reg, rdma->regs, in mtk_rdma_layer_config()
314 struct device *dev = &pdev->dev; in mtk_disp_rdma_probe()
322 return -ENOMEM; in mtk_disp_rdma_probe()
328 priv->clk = devm_clk_get(dev, NULL); in mtk_disp_rdma_probe()
329 if (IS_ERR(priv->clk)) in mtk_disp_rdma_probe()
330 return dev_err_probe(dev, PTR_ERR(priv->clk), in mtk_disp_rdma_probe()
334 priv->regs = devm_ioremap_resource(dev, res); in mtk_disp_rdma_probe()
335 if (IS_ERR(priv->regs)) in mtk_disp_rdma_probe()
336 return dev_err_probe(dev, PTR_ERR(priv->regs), in mtk_disp_rdma_probe()
339 ret = cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0); in mtk_disp_rdma_probe()
341 dev_dbg(dev, "get mediatek,gce-client-reg fail!\n"); in mtk_disp_rdma_probe()
344 ret = of_property_read_u32(dev->of_node, in mtk_disp_rdma_probe()
345 "mediatek,rdma-fifo-size", in mtk_disp_rdma_probe()
346 &priv->fifo_size); in mtk_disp_rdma_probe()
347 if (ret && (ret != -EINVAL)) in mtk_disp_rdma_probe()
351 writel(0x0, priv->regs + DISP_REG_RDMA_INT_ENABLE); in mtk_disp_rdma_probe()
352 writel(0x0, priv->regs + DISP_REG_RDMA_INT_STATUS); in mtk_disp_rdma_probe()
359 priv->data = of_device_get_match_data(dev); in mtk_disp_rdma_probe()
376 component_del(&pdev->dev, &mtk_disp_rdma_component_ops); in mtk_disp_rdma_remove()
378 pm_runtime_disable(&pdev->dev); in mtk_disp_rdma_remove()
406 { .compatible = "mediatek,mt2701-disp-rdma",
408 { .compatible = "mediatek,mt8173-disp-rdma",
410 { .compatible = "mediatek,mt8183-disp-rdma",
412 { .compatible = "mediatek,mt8195-disp-rdma",
422 .name = "mediatek-disp-rdma",