summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/meson/meson_drv.h
diff options
context:
space:
mode:
authorNeil Armstrong <narmstrong@baylibre.com>2019-10-21 11:15:06 +0200
committerNeil Armstrong <narmstrong@baylibre.com>2019-12-10 10:09:24 +0100
commit68e2f64ee4603aeab9c3bb907d19f5cd30d1c6ff (patch)
treec8b5a9c11c9506c730c260a4f72ba84bc18faa51 /drivers/gpu/drm/meson/meson_drv.h
parentd1b5e41e13a7e9bde3e736df9b8693b0325e41bc (diff)
drm/meson: plane: add support for AFBC mode for OSD1 plane
This adds all the OSD configuration plumbing to support the AFBC decoders path to display of the OSD1 plane. The Amlogic GXM and G12A AFBC decoders are integrated very differently. The Amlogic GXM has a direct output path to the OSD1 VIU pixel input, because the GXM AFBC decoder seem to be a custom IP developed by Amlogic. On the other side, the Amlogic G12A AFBC decoder seems to be an external IP that emit pixels on an AXI master hooked to a "Mali Unpack" block feeding the OSD1 VIU pixel input. This uses a weird "0x1000000" internal HW physical address on both sides to transfer the pixels. For Amlogic GXM, the supported pixel formats are the same as the normal linear OSD1 mode. On the other side, Amlogic added support for all AFBC v1.2 formats for the G12A AFBC integration. For simplicity, we stick to the already supported formats for now. Signed-off-by: Neil Armstrong <narmstrong@baylibre.com> Reviewed-by: Kevin Hilman <khilman@baylibre.com> Link: https://patchwork.freedesktop.org/patch/msgid/20191021091509.3864-7-narmstrong@baylibre.com
Diffstat (limited to 'drivers/gpu/drm/meson/meson_drv.h')
-rw-r--r--drivers/gpu/drm/meson/meson_drv.h4
1 files changed, 4 insertions, 0 deletions
diff --git a/drivers/gpu/drm/meson/meson_drv.h b/drivers/gpu/drm/meson/meson_drv.h
index f1515381bd02..f9a0c8e9d4d0 100644
--- a/drivers/gpu/drm/meson/meson_drv.h
+++ b/drivers/gpu/drm/meson/meson_drv.h
@@ -53,8 +53,12 @@ struct meson_drm {
bool osd1_enabled;
bool osd1_interlace;
bool osd1_commit;
+ bool osd1_afbcd;
uint32_t osd1_ctrl_stat;
+ uint32_t osd1_ctrl_stat2;
uint32_t osd1_blk0_cfg[5];
+ uint32_t osd1_blk1_cfg4;
+ uint32_t osd1_blk2_cfg4;
uint32_t osd1_addr;
uint32_t osd1_stride;
uint32_t osd1_height;