Lines Matching +full:mediatek +full:- +full:device
1 // SPDX-License-Identifier: GPL-2.0-only
3 * Copyright (c) 2015 MediaTek Inc.
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);
98 if (!priv->vblank_cb)
101 priv->vblank_cb(priv->vblank_cb_data);
106 static void rdma_update_bits(struct device *dev, unsigned int reg,
110 unsigned int tmp = readl(rdma->regs + reg);
113 writel(tmp, rdma->regs + reg);
116 void mtk_rdma_register_vblank_cb(struct device *dev,
122 rdma->vblank_cb = vblank_cb;
123 rdma->vblank_cb_data = vblank_cb_data;
126 void mtk_rdma_unregister_vblank_cb(struct device *dev)
130 rdma->vblank_cb = NULL;
131 rdma->vblank_cb_data = NULL;
134 void mtk_rdma_enable_vblank(struct device *dev)
140 void mtk_rdma_disable_vblank(struct device *dev)
145 const u32 *mtk_rdma_get_formats(struct device *dev)
149 return rdma->data->formats;
152 size_t mtk_rdma_get_num_formats(struct device *dev)
156 return rdma->data->num_formats;
159 int mtk_rdma_clk_enable(struct device *dev)
163 return clk_prepare_enable(rdma->clk);
166 void mtk_rdma_clk_disable(struct device *dev)
170 clk_disable_unprepare(rdma->clk);
173 void mtk_rdma_start(struct device *dev)
179 void mtk_rdma_stop(struct device *dev)
184 void mtk_rdma_config(struct device *dev, unsigned int width,
193 mtk_ddp_write_mask(cmdq_pkt, width, &rdma->cmdq_reg, rdma->regs,
195 mtk_ddp_write_mask(cmdq_pkt, height, &rdma->cmdq_reg, rdma->regs,
198 if (rdma->fifo_size)
199 rdma_fifo_size = rdma->fifo_size;
213 mtk_ddp_write(cmdq_pkt, reg, &rdma->cmdq_reg, rdma->regs, DISP_REG_RDMA_FIFO_CON);
220 * is defined in mediatek HW data sheet.
253 unsigned int mtk_rdma_layer_nr(struct device *dev)
258 void mtk_rdma_layer_config(struct device *dev, unsigned int idx,
263 struct mtk_plane_pending_state *pending = &state->pending;
264 unsigned int addr = pending->addr;
265 unsigned int pitch = pending->pitch & 0xffff;
266 unsigned int fmt = pending->format;
270 mtk_ddp_write_relaxed(cmdq_pkt, con, &rdma->cmdq_reg, rdma->regs, DISP_RDMA_MEM_CON);
273 mtk_ddp_write_mask(cmdq_pkt, RDMA_MATRIX_ENABLE, &rdma->cmdq_reg, rdma->regs,
277 &rdma->cmdq_reg, rdma->regs, DISP_REG_RDMA_SIZE_CON_0,
280 mtk_ddp_write_mask(cmdq_pkt, 0, &rdma->cmdq_reg, rdma->regs,
284 mtk_ddp_write_relaxed(cmdq_pkt, addr, &rdma->cmdq_reg, rdma->regs,
286 mtk_ddp_write_relaxed(cmdq_pkt, pitch, &rdma->cmdq_reg, rdma->regs,
288 mtk_ddp_write(cmdq_pkt, RDMA_MEM_GMC, &rdma->cmdq_reg, rdma->regs,
290 mtk_ddp_write_mask(cmdq_pkt, RDMA_MODE_MEMORY, &rdma->cmdq_reg, rdma->regs,
295 static int mtk_disp_rdma_bind(struct device *dev, struct device *master,
302 static void mtk_disp_rdma_unbind(struct device *dev, struct device *master,
314 struct device *dev = &pdev->dev;
321 return -ENOMEM;
327 priv->clk = devm_clk_get(dev, NULL);
328 if (IS_ERR(priv->clk))
329 return dev_err_probe(dev, PTR_ERR(priv->clk),
332 priv->regs = devm_platform_ioremap_resource(pdev, 0);
333 if (IS_ERR(priv->regs))
334 return dev_err_probe(dev, PTR_ERR(priv->regs),
337 ret = cmdq_dev_get_client_reg(dev, &priv->cmdq_reg, 0);
339 dev_dbg(dev, "get mediatek,gce-client-reg fail!\n");
342 ret = of_property_read_u32(dev->of_node,
343 "mediatek,rdma-fifo-size",
344 &priv->fifo_size);
345 if (ret && (ret != -EINVAL))
349 writel(0x0, priv->regs + DISP_REG_RDMA_INT_ENABLE);
350 writel(0x0, priv->regs + DISP_REG_RDMA_INT_STATUS);
357 priv->data = of_device_get_match_data(dev);
374 component_del(&pdev->dev, &mtk_disp_rdma_component_ops);
376 pm_runtime_disable(&pdev->dev);
404 { .compatible = "mediatek,mt2701-disp-rdma",
406 { .compatible = "mediatek,mt8173-disp-rdma",
408 { .compatible = "mediatek,mt8183-disp-rdma",
410 { .compatible = "mediatek,mt8195-disp-rdma",
420 .name = "mediatek-disp-rdma",