diff options
author | Anthony Koo <Anthony.Koo@amd.com> | 2020-03-28 01:44:14 -0400 |
---|---|---|
committer | Alex Deucher <alexander.deucher@amd.com> | 2020-04-22 18:11:48 -0400 |
commit | 904fb6e0f4e8158e6db1e21c3c97bdc238e537f5 (patch) | |
tree | 68d9e2d22032d3dc9f03a970bc5172e6c447e64c /drivers/gpu/drm/amd/display/dc/dce112 | |
parent | fefe92fe747ca74c6f127833188d4ff02d6f4e11 (diff) |
drm/amd/display: move panel power seq to new panel struct
[Why]
panel power sequencer is currently just sitting in hwseq but it really
it tied to internal panels
[How]
make a new panel struct to contain power sequencer code
Signed-off-by: Anthony Koo <Anthony.Koo@amd.com>
Reviewed-by: Tony Cheng <Tony.Cheng@amd.com>
Acked-by: Rodrigo Siqueira <Rodrigo.Siqueira@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
Diffstat (limited to 'drivers/gpu/drm/amd/display/dc/dce112')
-rw-r--r-- | drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c | 31 |
1 files changed, 31 insertions, 0 deletions
diff --git a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c index 700ad8b3e54b..2c25e6f9beb9 100644 --- a/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c +++ b/drivers/gpu/drm/amd/display/dc/dce112/dce112_resource.c @@ -51,6 +51,7 @@ #include "dce/dce_dmcu.h" #include "dce/dce_aux.h" #include "dce/dce_i2c.h" +#include "dce/dce_panel.h" #include "reg_helper.h" @@ -238,6 +239,18 @@ static const struct dce110_link_enc_aux_registers link_enc_aux_regs[] = { aux_regs(5) }; +static const struct dce_panel_registers panel_regs[] = { + { DCE_PANEL_REG_LIST() } +}; + +static const struct dce_panel_shift panel_shift = { + DCE_PANEL_MASK_SH_LIST(__SHIFT) +}; + +static const struct dce_panel_mask panel_mask = { + DCE_PANEL_MASK_SH_LIST(_MASK) +}; + #define hpd_regs(id)\ [id] = {\ HPD_REG_LIST(id)\ @@ -631,6 +644,23 @@ struct link_encoder *dce112_link_encoder_create( return &enc110->base; } +static struct panel *dce112_panel_create(const struct panel_init_data *init_data) +{ + struct dce_panel *panel = + kzalloc(sizeof(struct dce_panel), GFP_KERNEL); + + if (!panel) + return NULL; + + dce_panel_construct(panel, + init_data, + &panel_regs[init_data->inst], + &panel_shift, + &panel_mask); + + return &panel->base; +} + static struct input_pixel_processor *dce112_ipp_create( struct dc_context *ctx, uint32_t inst) { @@ -1021,6 +1051,7 @@ static void dce112_destroy_resource_pool(struct resource_pool **pool) static const struct resource_funcs dce112_res_pool_funcs = { .destroy = dce112_destroy_resource_pool, .link_enc_create = dce112_link_encoder_create, + .panel_create = dce112_panel_create, .validate_bandwidth = dce112_validate_bandwidth, .validate_plane = dce100_validate_plane, .add_stream_to_ctx = dce112_add_stream_to_ctx, |