mirror of
https://github.com/Fishwaldo/linux-bl808.git
synced 2025-06-07 23:25:45 +00:00
Revert "drm/amd/display: dcn add check surface in_use"
This reverts commit 6bff1cc7780cca2fd2a775aa7b18b789e2a1b608. [Description] Revert since this will be checked at CP side. Signed-off-by: Charlene Liu <Charlene.Liu@amd.com> Reviewed-by: Tony Cheng <Tony.Cheng@amd.com> Acked-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com> Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
This commit is contained in:
parent
162f807858
commit
87d44f62d5
6 changed files with 4 additions and 97 deletions
|
@ -1746,9 +1746,6 @@ static void commit_planes_for_stream(struct dc *dc,
|
||||||
|
|
||||||
if (!pipe_ctx->plane_state)
|
if (!pipe_ctx->plane_state)
|
||||||
continue;
|
continue;
|
||||||
/*make sure hw finished surface update*/
|
|
||||||
if (dc->hwss.wait_surface_safe_to_update)
|
|
||||||
dc->hwss.wait_surface_safe_to_update(dc, pipe_ctx);
|
|
||||||
|
|
||||||
/* Full fe update*/
|
/* Full fe update*/
|
||||||
if (update_type == UPDATE_TYPE_FAST)
|
if (update_type == UPDATE_TYPE_FAST)
|
||||||
|
|
|
@ -642,50 +642,6 @@ void hubbub1_soft_reset(struct hubbub *hubbub, bool reset)
|
||||||
DCHUBBUB_GLOBAL_SOFT_RESET, reset_en);
|
DCHUBBUB_GLOBAL_SOFT_RESET, reset_en);
|
||||||
}
|
}
|
||||||
|
|
||||||
static bool hubbub1_is_surf_still_in_update(struct hubbub *hubbub, uint32_t hbup_inst)
|
|
||||||
{
|
|
||||||
struct dcn10_hubbub *hubbub1 = TO_DCN10_HUBBUB(hubbub);
|
|
||||||
uint32_t still_used_by_dcn = 0;
|
|
||||||
|
|
||||||
switch (hbup_inst) {
|
|
||||||
case 0:
|
|
||||||
REG_GET(SURFACE_CHECK0_ADDRESS_MSB,
|
|
||||||
CHECKER0_SURFACE_INUSE,
|
|
||||||
&still_used_by_dcn);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
REG_GET(SURFACE_CHECK1_ADDRESS_MSB,
|
|
||||||
CHECKER1_SURFACE_INUSE,
|
|
||||||
&still_used_by_dcn);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
REG_GET(SURFACE_CHECK2_ADDRESS_MSB,
|
|
||||||
CHECKER2_SURFACE_INUSE,
|
|
||||||
&still_used_by_dcn);
|
|
||||||
break;
|
|
||||||
case 3:
|
|
||||||
REG_GET(SURFACE_CHECK3_ADDRESS_MSB,
|
|
||||||
CHECKER3_SURFACE_INUSE,
|
|
||||||
&still_used_by_dcn);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
return (still_used_by_dcn == 1);
|
|
||||||
}
|
|
||||||
|
|
||||||
void hubbub1_wait_for_safe_surf_update(struct hubbub *hubbub, uint32_t hbup_inst)
|
|
||||||
{
|
|
||||||
uint32_t still_used_by_dcn = 0, count = 0;
|
|
||||||
|
|
||||||
do {
|
|
||||||
still_used_by_dcn = hubbub1_is_surf_still_in_update(hubbub, hbup_inst);
|
|
||||||
udelay(1);
|
|
||||||
count++;
|
|
||||||
} while (still_used_by_dcn == 1 && count < 100);
|
|
||||||
ASSERT(count < 100);
|
|
||||||
}
|
|
||||||
|
|
||||||
static bool hubbub1_dcc_support_swizzle(
|
static bool hubbub1_dcc_support_swizzle(
|
||||||
enum swizzle_mode_values swizzle,
|
enum swizzle_mode_values swizzle,
|
||||||
unsigned int bytes_per_element,
|
unsigned int bytes_per_element,
|
||||||
|
@ -904,14 +860,12 @@ static bool hubbub1_get_dcc_compression_cap(struct hubbub *hubbub,
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
static const struct hubbub_funcs hubbub1_funcs = {
|
static const struct hubbub_funcs hubbub1_funcs = {
|
||||||
.update_dchub = hubbub1_update_dchub,
|
.update_dchub = hubbub1_update_dchub,
|
||||||
.dcc_support_swizzle = hubbub1_dcc_support_swizzle,
|
.dcc_support_swizzle = hubbub1_dcc_support_swizzle,
|
||||||
.dcc_support_pixel_format = hubbub1_dcc_support_pixel_format,
|
.dcc_support_pixel_format = hubbub1_dcc_support_pixel_format,
|
||||||
.get_dcc_compression_cap = hubbub1_get_dcc_compression_cap,
|
.get_dcc_compression_cap = hubbub1_get_dcc_compression_cap,
|
||||||
.wm_read_state = hubbub1_wm_read_state,
|
.wm_read_state = hubbub1_wm_read_state,
|
||||||
.wait_for_surf_safe_update = hubbub1_wait_for_safe_surf_update,
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void hubbub1_construct(struct hubbub *hubbub,
|
void hubbub1_construct(struct hubbub *hubbub,
|
||||||
|
|
|
@ -52,11 +52,7 @@
|
||||||
SR(DCHUBBUB_GLOBAL_TIMER_CNTL), \
|
SR(DCHUBBUB_GLOBAL_TIMER_CNTL), \
|
||||||
SR(DCHUBBUB_TEST_DEBUG_INDEX), \
|
SR(DCHUBBUB_TEST_DEBUG_INDEX), \
|
||||||
SR(DCHUBBUB_TEST_DEBUG_DATA),\
|
SR(DCHUBBUB_TEST_DEBUG_DATA),\
|
||||||
SR(DCHUBBUB_SOFT_RESET),\
|
SR(DCHUBBUB_SOFT_RESET)
|
||||||
SR(SURFACE_CHECK0_ADDRESS_MSB),\
|
|
||||||
SR(SURFACE_CHECK1_ADDRESS_MSB),\
|
|
||||||
SR(SURFACE_CHECK2_ADDRESS_MSB),\
|
|
||||||
SR(SURFACE_CHECK3_ADDRESS_MSB)
|
|
||||||
|
|
||||||
#define HUBBUB_SR_WATERMARK_REG_LIST()\
|
#define HUBBUB_SR_WATERMARK_REG_LIST()\
|
||||||
SR(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A),\
|
SR(DCHUBBUB_ARB_ALLOW_SR_ENTER_WATERMARK_A),\
|
||||||
|
@ -120,10 +116,6 @@ struct dcn_hubbub_registers {
|
||||||
uint32_t DCN_VM_AGP_BOT;
|
uint32_t DCN_VM_AGP_BOT;
|
||||||
uint32_t DCN_VM_AGP_TOP;
|
uint32_t DCN_VM_AGP_TOP;
|
||||||
uint32_t DCN_VM_AGP_BASE;
|
uint32_t DCN_VM_AGP_BASE;
|
||||||
uint32_t SURFACE_CHECK0_ADDRESS_MSB;
|
|
||||||
uint32_t SURFACE_CHECK1_ADDRESS_MSB;
|
|
||||||
uint32_t SURFACE_CHECK2_ADDRESS_MSB;
|
|
||||||
uint32_t SURFACE_CHECK3_ADDRESS_MSB;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
/* set field name */
|
/* set field name */
|
||||||
|
@ -141,11 +133,7 @@ struct dcn_hubbub_registers {
|
||||||
HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_VALUE, mask_sh), \
|
HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_VALUE, mask_sh), \
|
||||||
HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_ENABLE, mask_sh), \
|
HUBBUB_SF(DCHUBBUB_ARB_DRAM_STATE_CNTL, DCHUBBUB_ARB_ALLOW_PSTATE_CHANGE_FORCE_ENABLE, mask_sh), \
|
||||||
HUBBUB_SF(DCHUBBUB_ARB_SAT_LEVEL, DCHUBBUB_ARB_SAT_LEVEL, mask_sh), \
|
HUBBUB_SF(DCHUBBUB_ARB_SAT_LEVEL, DCHUBBUB_ARB_SAT_LEVEL, mask_sh), \
|
||||||
HUBBUB_SF(DCHUBBUB_ARB_DF_REQ_OUTSTAND, DCHUBBUB_ARB_MIN_REQ_OUTSTAND, mask_sh),\
|
HUBBUB_SF(DCHUBBUB_ARB_DF_REQ_OUTSTAND, DCHUBBUB_ARB_MIN_REQ_OUTSTAND, mask_sh)
|
||||||
HUBBUB_SF(SURFACE_CHECK0_ADDRESS_MSB, CHECKER0_SURFACE_INUSE, mask_sh),\
|
|
||||||
HUBBUB_SF(SURFACE_CHECK1_ADDRESS_MSB, CHECKER1_SURFACE_INUSE, mask_sh),\
|
|
||||||
HUBBUB_SF(SURFACE_CHECK2_ADDRESS_MSB, CHECKER2_SURFACE_INUSE, mask_sh),\
|
|
||||||
HUBBUB_SF(SURFACE_CHECK3_ADDRESS_MSB, CHECKER3_SURFACE_INUSE, mask_sh)
|
|
||||||
|
|
||||||
#define HUBBUB_MASK_SH_LIST_DCN10(mask_sh)\
|
#define HUBBUB_MASK_SH_LIST_DCN10(mask_sh)\
|
||||||
HUBBUB_MASK_SH_LIST_DCN(mask_sh), \
|
HUBBUB_MASK_SH_LIST_DCN(mask_sh), \
|
||||||
|
@ -179,12 +167,7 @@ struct dcn_hubbub_registers {
|
||||||
type FB_OFFSET;\
|
type FB_OFFSET;\
|
||||||
type AGP_BOT;\
|
type AGP_BOT;\
|
||||||
type AGP_TOP;\
|
type AGP_TOP;\
|
||||||
type AGP_BASE;\
|
type AGP_BASE
|
||||||
type CHECKER0_SURFACE_INUSE;\
|
|
||||||
type CHECKER1_SURFACE_INUSE;\
|
|
||||||
type CHECKER2_SURFACE_INUSE;\
|
|
||||||
type CHECKER3_SURFACE_INUSE
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
struct dcn_hubbub_shift {
|
struct dcn_hubbub_shift {
|
||||||
|
@ -232,8 +215,6 @@ void hubbub1_wm_read_state(struct hubbub *hubbub,
|
||||||
struct dcn_hubbub_wm *wm);
|
struct dcn_hubbub_wm *wm);
|
||||||
|
|
||||||
void hubbub1_soft_reset(struct hubbub *hubbub, bool reset);
|
void hubbub1_soft_reset(struct hubbub *hubbub, bool reset);
|
||||||
|
|
||||||
void hubbub1_wait_for_safe_surf_update(struct hubbub *hubbub, uint32_t hbup_inst);
|
|
||||||
void hubbub1_construct(struct hubbub *hubbub,
|
void hubbub1_construct(struct hubbub *hubbub,
|
||||||
struct dc_context *ctx,
|
struct dc_context *ctx,
|
||||||
const struct dcn_hubbub_registers *hubbub_regs,
|
const struct dcn_hubbub_registers *hubbub_regs,
|
||||||
|
|
|
@ -88,24 +88,6 @@ static void log_mpc_crc(struct dc *dc,
|
||||||
REG_READ(DPP_TOP0_DPP_CRC_VAL_B_A), REG_READ(DPP_TOP0_DPP_CRC_VAL_R_G));
|
REG_READ(DPP_TOP0_DPP_CRC_VAL_B_A), REG_READ(DPP_TOP0_DPP_CRC_VAL_R_G));
|
||||||
}
|
}
|
||||||
|
|
||||||
void dcn10_wait_for_surface_safe_to_use(struct dc *dc,
|
|
||||||
struct pipe_ctx *pipe_ctx)
|
|
||||||
{
|
|
||||||
struct hubbub *hubbub = dc->res_pool->hubbub;
|
|
||||||
|
|
||||||
if (!pipe_ctx->plane_state)
|
|
||||||
return;
|
|
||||||
if (!pipe_ctx->stream)
|
|
||||||
return;
|
|
||||||
|
|
||||||
if (!pipe_ctx->plane_state->visible)
|
|
||||||
return;
|
|
||||||
if (hubbub->funcs->wait_for_surf_safe_update) {
|
|
||||||
hubbub->funcs->wait_for_surf_safe_update(dc->res_pool->hubbub,
|
|
||||||
pipe_ctx->plane_res.hubp->inst);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void dcn10_log_hubbub_state(struct dc *dc, struct dc_log_buffer_ctx *log_ctx)
|
void dcn10_log_hubbub_state(struct dc *dc, struct dc_log_buffer_ctx *log_ctx)
|
||||||
{
|
{
|
||||||
struct dc_context *dc_ctx = dc->ctx;
|
struct dc_context *dc_ctx = dc->ctx;
|
||||||
|
@ -2969,9 +2951,7 @@ static const struct hw_sequencer_funcs dcn10_funcs = {
|
||||||
.disable_stream_gating = NULL,
|
.disable_stream_gating = NULL,
|
||||||
.enable_stream_gating = NULL,
|
.enable_stream_gating = NULL,
|
||||||
.setup_periodic_interrupt = dcn10_setup_periodic_interrupt,
|
.setup_periodic_interrupt = dcn10_setup_periodic_interrupt,
|
||||||
.setup_vupdate_interrupt = dcn10_setup_vupdate_interrupt,
|
.setup_vupdate_interrupt = dcn10_setup_vupdate_interrupt
|
||||||
.wait_surface_safe_to_update = dcn10_wait_for_surface_safe_to_use,
|
|
||||||
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -73,9 +73,6 @@ struct hubbub_funcs {
|
||||||
|
|
||||||
void (*wm_read_state)(struct hubbub *hubbub,
|
void (*wm_read_state)(struct hubbub *hubbub,
|
||||||
struct dcn_hubbub_wm *wm);
|
struct dcn_hubbub_wm *wm);
|
||||||
|
|
||||||
void (*wait_for_surf_safe_update)(struct hubbub *hubbub,
|
|
||||||
uint32_t hbup_inst);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
struct hubbub {
|
struct hubbub {
|
||||||
|
|
|
@ -232,8 +232,6 @@ struct hw_sequencer_funcs {
|
||||||
void (*setup_periodic_interrupt)(struct pipe_ctx *pipe_ctx, enum vline_select vline);
|
void (*setup_periodic_interrupt)(struct pipe_ctx *pipe_ctx, enum vline_select vline);
|
||||||
void (*setup_vupdate_interrupt)(struct pipe_ctx *pipe_ctx);
|
void (*setup_vupdate_interrupt)(struct pipe_ctx *pipe_ctx);
|
||||||
|
|
||||||
void (*wait_surface_safe_to_update)(struct dc *dc,
|
|
||||||
struct pipe_ctx *pipe_ctx);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
void color_space_to_black_color(
|
void color_space_to_black_color(
|
||||||
|
|
Loading…
Add table
Reference in a new issue