/* * The VPU embeds a "Register DMA" that can write a sequence of registers * on the VPU AHB bus, either manually or triggered by an internal IRQ * event like VSYNC or a line input counter. * The initial implementation handles a single channel (over 8), triggered * by the VSYNC irq and does not handle the RDMA irq.
*/
#define RDMA_DESC_SIZE (sizeof(uint32_t) * 2)
int meson_rdma_init(struct meson_drm *priv)
{ if (!priv->rdma.addr) { /* Allocate a PAGE buffer */
priv->rdma.addr =
dma_alloc_coherent(priv->dev, SZ_4K,
&priv->rdma.addr_dma,
GFP_KERNEL); if (!priv->rdma.addr) return -ENOMEM;
}
/* * This will add the register to the RDMA buffer and write it to the * hardware at the same time. * When meson_rdma_flush is called, the RDMA will replay the register * writes in order.
*/ void meson_rdma_writel_sync(struct meson_drm *priv, uint32_t val, uint32_t reg)
{
meson_rdma_writel(priv, val, reg);
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.