Lines Matching refs:priv

24 int meson_rdma_init(struct meson_drm *priv)
26 if (!priv->rdma.addr) {
28 priv->rdma.addr =
29 dma_alloc_coherent(priv->dev, SZ_4K,
30 &priv->rdma.addr_dma,
32 if (!priv->rdma.addr)
36 priv->rdma.offset = 0;
39 priv->io_base + _REG(RDMA_CTRL));
43 priv->io_base + _REG(RDMA_CTRL));
48 void meson_rdma_free(struct meson_drm *priv)
50 if (!priv->rdma.addr && !priv->rdma.addr_dma)
53 meson_rdma_stop(priv);
55 dma_free_coherent(priv->dev, SZ_4K,
56 priv->rdma.addr, priv->rdma.addr_dma);
58 priv->rdma.addr = NULL;
59 priv->rdma.addr_dma = (dma_addr_t)0;
62 void meson_rdma_setup(struct meson_drm *priv)
68 priv->io_base + _REG(RDMA_ACCESS_AUTO));
71 void meson_rdma_stop(struct meson_drm *priv)
75 priv->io_base + _REG(RDMA_CTRL));
81 priv->io_base + _REG(RDMA_ACCESS_AUTO));
84 void meson_rdma_reset(struct meson_drm *priv)
86 meson_rdma_stop(priv);
88 priv->rdma.offset = 0;
91 static void meson_rdma_writel(struct meson_drm *priv, uint32_t val,
94 if (priv->rdma.offset >= (SZ_4K / RDMA_DESC_SIZE)) {
95 dev_warn_once(priv->dev, "%s: overflow\n", __func__);
99 priv->rdma.addr[priv->rdma.offset++] = reg;
100 priv->rdma.addr[priv->rdma.offset++] = val;
109 void meson_rdma_writel_sync(struct meson_drm *priv, uint32_t val, uint32_t reg)
111 meson_rdma_writel(priv, val, reg);
113 writel_relaxed(val, priv->io_base + _REG(reg));
116 void meson_rdma_flush(struct meson_drm *priv)
118 meson_rdma_stop(priv);
121 writel(priv->rdma.addr_dma,
122 priv->io_base + _REG(RDMA_AHB_START_ADDR_1));
125 writel(priv->rdma.addr_dma + (priv->rdma.offset * RDMA_DESC_SIZE) - 1,
126 priv->io_base + _REG(RDMA_AHB_END_ADDR_1));
132 priv->io_base + _REG(RDMA_ACCESS_AUTO));
134 priv->rdma.offset = 0;