disp: msm: sde: add sys cache usage for static image

Store full or partial static image in system cache (L3 cache)
for video mode primary display. Added additional commit to
crtc commit thread to transition to read cache state.
The change also updates llcc APIs to support generic functionality.

Change-Id: I6b2a45da946d7e0e0b326da9d214be3f01a9420e
Signed-off-by: Nilaan Gunabalachandran <ngunabal@codeaurora.org>
此提交包含在:
Nilaan Gunabalachandran
2019-11-07 17:16:10 -05:00
父節點 d423505a8e
當前提交 83ee51cb5a
共有 15 個檔案被更改,包括 547 行新增159 行删除

查看文件

@@ -70,6 +70,24 @@ enum sde_crtc_idle_pc_state {
IDLE_PC_DISABLE,
};
/**
* enum sde_crtc_cache_state: states of disp system cache
* CACHE_STATE_DISABLED: sys cache has been disabled
* CACHE_STATE_ENABLED: sys cache has been enabled
* CACHE_STATE_NORMAL: sys cache is normal state
* CACHE_STATE_PRE_CACHE: frame cache is being prepared
* CACHE_STATE_FRAME_WRITE: sys cache is being written to
* CACHE_STATE_FRAME_READ: sys cache is being read
*/
enum sde_crtc_cache_state {
CACHE_STATE_DISABLED,
CACHE_STATE_ENABLED,
CACHE_STATE_NORMAL,
CACHE_STATE_PRE_CACHE,
CACHE_STATE_FRAME_WRITE,
CACHE_STATE_FRAME_READ
};
/**
* @connectors : Currently associated drm connectors for retire event
* @num_connectors: Number of associated drm connectors for retire event
@@ -257,6 +275,8 @@ struct sde_crtc_misr_info {
* @needs_hw_reset : Initiate a hw ctl reset
* @src_bpp : source bpp used to calculate compression ratio
* @target_bpp : target bpp used to calculate compression ratio
* @static_cache_read_work: delayed worker to transition cache state to read
* @cache_state : Current static image cache state
*/
struct sde_crtc {
struct drm_crtc base;
@@ -342,6 +362,9 @@ struct sde_crtc {
int src_bpp;
int target_bpp;
struct kthread_delayed_work static_cache_read_work;
enum sde_crtc_cache_state cache_state;
};
#define to_sde_crtc(x) container_of(x, struct sde_crtc, base)
@@ -848,4 +871,19 @@ static inline void sde_crtc_set_bpp(struct sde_crtc *sde_crtc, int src_bpp,
sde_crtc->target_bpp = target_bpp;
}
/**
* sde_crtc_static_img_control - transition static img cache state
* @crtc: Pointer to drm crtc structure
* @state: cache state to transition to
* @is_vidmode: if encoder is video mode
*/
void sde_crtc_static_img_control(struct drm_crtc *crtc,
enum sde_crtc_cache_state state, bool is_vidmode);
/**
* sde_crtc_static_cache_read_kickoff - kickoff cache read work
* @crtc: Pointer to drm crtc structure
*/
void sde_crtc_static_cache_read_kickoff(struct drm_crtc *crtc);
#endif /* _SDE_CRTC_H_ */