drm/malidp: Enable MMU prefetch on Mali-DP650
Mali-DP650 supports warming up the SMMU translations, by sending requsts to the SMMU before a buffer is read. There are two modes supported: - PARTIAL: could be enabled when the buffer is composed of 4K or 64K pages, the display hardware will send a configurable number of requests before the actual reading. - FULL: could be enabled when the buffer is composed of 1M or 2M pages, the display hardware will send requests before reading for all pages composing the buffer. This patch adds a mechanism for detecting the page size and set the MMU prefetch mode if possible. Changes since v1: - For imported buffers use the already populated drm_gem_cma_object.sgt instead of calling driver.gem_prime_get_sg_table, which works just for buffers allocated through the gem_cma API. Signed-off-by: Jamie Fox <jamie.fox@arm.com> Signed-off-by: Alexandru Gheorghe <alexandru-cosmin.gheorghe@arm.com> Acked-by: Liviu Dudau <liviu.dudau@arm.com> [rebased and re-ordered functions] Signed-off-by: Liviu Dudau <liviu.dudau@arm.com>
This commit is contained in:
@@ -247,6 +247,17 @@
|
||||
#define MALIDP550_CONFIG_VALID 0x0c014
|
||||
#define MALIDP550_CONFIG_ID 0x0ffd4
|
||||
|
||||
/* register offsets specific to DP650 */
|
||||
#define MALIDP650_DE_LV_MMU_CTRL 0x000D0
|
||||
#define MALIDP650_DE_LG_MMU_CTRL 0x00048
|
||||
#define MALIDP650_DE_LS_MMU_CTRL 0x00078
|
||||
|
||||
/* bit masks to set the MMU control register */
|
||||
#define MALIDP_MMU_CTRL_EN (1 << 0)
|
||||
#define MALIDP_MMU_CTRL_MODE (1 << 4)
|
||||
#define MALIDP_MMU_CTRL_PX_PS(x) (1 << (8 + (x)))
|
||||
#define MALIDP_MMU_CTRL_PP_NUM_REQ(x) (((x) & 0x7f) << 12)
|
||||
|
||||
/*
|
||||
* Starting with DP550 the register map blocks has been standardised to the
|
||||
* following layout:
|
||||
|
Reference in New Issue
Block a user