disp: msm: sde: add dnsc_blur HW block support

Downscale blur HW block support is added from MDSS 9.x. The block
can be used to downscale the layer mixer output before feeding it to
the writeback block. It can be used for both writeback & concurrent
writeback usecases. Add hw files and the respective blocks in sw to
program the downscale blur block.

Change-Id: Ic5787e1655eff5ef0960b7569e48d2f35d23bfc9
Signed-off-by: Veera Sundaram Sankaran <veeras@codeaurora.org>
This commit is contained in:
Veera Sundaram Sankaran
2021-07-19 17:06:11 -07:00
parent 5929098cfa
commit 37ab0f2419
6 changed files with 436 additions and 0 deletions

View File

@@ -20,6 +20,7 @@
#include "sde_crtc.h"
#include "sde_hw_qdss.h"
#include "sde_vbif.h"
#include "sde_hw_dnsc_blur.h"
#define RESERVED_BY_OTHER(h, r) \
(((h)->rsvp && ((h)->rsvp->enc_id != (r)->enc_id)) ||\
@@ -120,6 +121,7 @@ char sde_hw_blk_str[SDE_HW_BLK_MAX][SDE_HW_BLK_NAME_LEN] = {
"vdc",
"merge_3d",
"qdss",
"dnsc_blur"
};
/**
@@ -544,6 +546,9 @@ static void _sde_rm_hw_destroy(enum sde_hw_blk_type type, struct sde_hw_blk_reg_
case SDE_HW_BLK_QDSS:
sde_hw_qdss_destroy(hw);
break;
case SDE_HW_BLK_DNSC_BLUR:
sde_hw_dnsc_blur_destroy(hw);
break;
case SDE_HW_BLK_SSPP:
/* SSPPs are not managed by the resource manager */
case SDE_HW_BLK_TOP:
@@ -641,6 +646,9 @@ static int _sde_rm_hw_blk_create(
case SDE_HW_BLK_QDSS:
hw = sde_hw_qdss_init(id, mmio, cat);
break;
case SDE_HW_BLK_DNSC_BLUR:
hw = sde_hw_dnsc_blur_init(id, mmio, cat);
break;
case SDE_HW_BLK_SSPP:
/* SSPPs are not managed by the resource manager */
case SDE_HW_BLK_TOP:
@@ -776,6 +784,15 @@ static int _sde_rm_hw_blk_create_new(struct sde_rm *rm,
}
}
for (i = 0; i < cat->dnsc_blur_count; i++) {
rc = _sde_rm_hw_blk_create(rm, cat, mmio, SDE_HW_BLK_DNSC_BLUR,
cat->dnsc_blur[i].id, &cat->dnsc_blur[i]);
if (rc) {
SDE_ERROR("failed: dnsc_blur hw not available\n");
goto fail;
}
}
for (i = 0; i < cat->qdss_count; i++) {
rc = _sde_rm_hw_blk_create(rm, cat, mmio, SDE_HW_BLK_QDSS,
cat->qdss[i].id, &cat->qdss[i]);