Commit cc8d8413 authored by Charlene Liu's avatar Charlene Liu Committed by Alex Deucher

drm/amd/display: Add hubp_init entry to hubp vtable

Different HW will need to init HUBP differently. For now, add a vtable
entry, and hook a NO-OP for DCN1.

In addition, future HW will need to access the HUBPREQ_DEBUG register
for hubp_init. Add it to the reg list.
Signed-off-by: default avatarCharlene Liu <charlene.liu@amd.com>
Reviewed-by: default avatarJun Lei <Jun.Lei@amd.com>
Acked-by: default avatarLeo Li <sunpeng.li@amd.com>
Signed-off-by: default avatarAlex Deucher <alexander.deucher@amd.com>
parent a0867053
...@@ -1197,6 +1197,10 @@ void hubp1_vtg_sel(struct hubp *hubp, uint32_t otg_inst) ...@@ -1197,6 +1197,10 @@ void hubp1_vtg_sel(struct hubp *hubp, uint32_t otg_inst)
REG_UPDATE(DCHUBP_CNTL, HUBP_VTG_SEL, otg_inst); REG_UPDATE(DCHUBP_CNTL, HUBP_VTG_SEL, otg_inst);
} }
void hubp1_init(struct hubp *hubp)
{
//do nothing
}
static const struct hubp_funcs dcn10_hubp_funcs = { static const struct hubp_funcs dcn10_hubp_funcs = {
.hubp_program_surface_flip_and_addr = .hubp_program_surface_flip_and_addr =
hubp1_program_surface_flip_and_addr, hubp1_program_surface_flip_and_addr,
...@@ -1220,7 +1224,7 @@ static const struct hubp_funcs dcn10_hubp_funcs = { ...@@ -1220,7 +1224,7 @@ static const struct hubp_funcs dcn10_hubp_funcs = {
.hubp_clear_underflow = hubp1_clear_underflow, .hubp_clear_underflow = hubp1_clear_underflow,
.hubp_disable_control = hubp1_disable_control, .hubp_disable_control = hubp1_disable_control,
.hubp_get_underflow_status = hubp1_get_underflow_status, .hubp_get_underflow_status = hubp1_get_underflow_status,
.hubp_init = hubp1_init,
}; };
/*****************************************/ /*****************************************/
......
...@@ -34,6 +34,7 @@ ...@@ -34,6 +34,7 @@
#define HUBP_REG_LIST_DCN(id)\ #define HUBP_REG_LIST_DCN(id)\
SRI(DCHUBP_CNTL, HUBP, id),\ SRI(DCHUBP_CNTL, HUBP, id),\
SRI(HUBPREQ_DEBUG_DB, HUBP, id),\ SRI(HUBPREQ_DEBUG_DB, HUBP, id),\
SRI(HUBPREQ_DEBUG, HUBP, id),\
SRI(DCSURF_ADDR_CONFIG, HUBP, id),\ SRI(DCSURF_ADDR_CONFIG, HUBP, id),\
SRI(DCSURF_TILING_CONFIG, HUBP, id),\ SRI(DCSURF_TILING_CONFIG, HUBP, id),\
SRI(DCSURF_SURFACE_PITCH, HUBPREQ, id),\ SRI(DCSURF_SURFACE_PITCH, HUBPREQ, id),\
...@@ -138,6 +139,7 @@ ...@@ -138,6 +139,7 @@
#define HUBP_COMMON_REG_VARIABLE_LIST \ #define HUBP_COMMON_REG_VARIABLE_LIST \
uint32_t DCHUBP_CNTL; \ uint32_t DCHUBP_CNTL; \
uint32_t HUBPREQ_DEBUG_DB; \ uint32_t HUBPREQ_DEBUG_DB; \
uint32_t HUBPREQ_DEBUG; \
uint32_t DCSURF_ADDR_CONFIG; \ uint32_t DCSURF_ADDR_CONFIG; \
uint32_t DCSURF_TILING_CONFIG; \ uint32_t DCSURF_TILING_CONFIG; \
uint32_t DCSURF_SURFACE_PITCH; \ uint32_t DCSURF_SURFACE_PITCH; \
...@@ -749,4 +751,6 @@ enum cursor_pitch hubp1_get_cursor_pitch(unsigned int pitch); ...@@ -749,4 +751,6 @@ enum cursor_pitch hubp1_get_cursor_pitch(unsigned int pitch);
void hubp1_vready_workaround(struct hubp *hubp, void hubp1_vready_workaround(struct hubp *hubp,
struct _vcs_dpi_display_pipe_dest_params_st *pipe_dest); struct _vcs_dpi_display_pipe_dest_params_st *pipe_dest);
void hubp1_init(struct hubp *hubp);
#endif #endif
...@@ -1123,6 +1123,7 @@ static void dcn10_init_hw(struct dc *dc) ...@@ -1123,6 +1123,7 @@ static void dcn10_init_hw(struct dc *dc)
struct hubp *hubp = dc->res_pool->hubps[i]; struct hubp *hubp = dc->res_pool->hubps[i];
struct dpp *dpp = dc->res_pool->dpps[i]; struct dpp *dpp = dc->res_pool->dpps[i];
hubp->funcs->hubp_init(hubp);
dc->res_pool->opps[i]->mpc_tree_params.opp_id = dc->res_pool->opps[i]->inst; dc->res_pool->opps[i]->mpc_tree_params.opp_id = dc->res_pool->opps[i]->inst;
plane_atomic_power_down(dc, dpp, hubp); plane_atomic_power_down(dc, dpp, hubp);
} }
......
...@@ -130,6 +130,7 @@ struct hubp_funcs { ...@@ -130,6 +130,7 @@ struct hubp_funcs {
void (*hubp_clear_underflow)(struct hubp *hubp); void (*hubp_clear_underflow)(struct hubp *hubp);
void (*hubp_disable_control)(struct hubp *hubp, bool disable_hubp); void (*hubp_disable_control)(struct hubp *hubp, bool disable_hubp);
unsigned int (*hubp_get_underflow_status)(struct hubp *hubp); unsigned int (*hubp_get_underflow_status)(struct hubp *hubp);
void (*hubp_init)(struct hubp *hubp);
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment