On 2018-10-04 04:24 PM, Daniel Vetter wrote: > For atomic driver this is the default, no need to reimplement it. We > still need to keep the copypasta for not-atomic drivers though, since > no one polished the legacy crtc helpers as much as the atomic ones. > > v2: amdgpu uses ->best_encoder internally, give it a local copy. It > might be a good idea to merge the connector and encoder into one > amdgpu_dm_sink structure, that might match DC internals better. At > least for non-DPMST outputs. Kudos to Ville for spotting this. > > v3: Rebase onto a487411a6481 ("drm/amd/display: Use DRM helper for > best_encoder"). > > Cc: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > Signed-off-by: Daniel Vetter <daniel.vetter@xxxxxxxxx> > Cc: Alex Deucher <alexander.deucher@xxxxxxx> > Cc: Harry Wentland <harry.wentland@xxxxxxx> > Cc: Andrey Grodzovsky <andrey.grodzovsky@xxxxxxx> > Cc: Tony Cheng <Tony.Cheng@xxxxxxx> > Cc: "Leo (Sunpeng) Li" <sunpeng.li@xxxxxxx> > Cc: Shirish S <shirish.s@xxxxxxx> Acked-by: Harry Wentland <harry.wentland@xxxxxxx> Harry > --- > drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c | 14 +++++++------- > 1 file changed, 7 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > index 6a2342d72742..107e70658238 100644 > --- a/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > +++ b/drivers/gpu/drm/amd/display/amdgpu_dm/amdgpu_dm.c > @@ -3189,7 +3189,6 @@ amdgpu_dm_connector_helper_funcs = { > */ > .get_modes = get_modes, > .mode_valid = amdgpu_dm_connector_mode_valid, > - .best_encoder = drm_atomic_helper_best_encoder > }; > > static void dm_crtc_helper_disable(struct drm_crtc *crtc) > @@ -3592,14 +3591,17 @@ static int to_drm_connector_type(enum signal_type st) > } > } > > +static struct drm_encoder *amdgpu_dm_connector_to_encoder(struct drm_connector *connector) > +{ > + return drm_encoder_find(connector->dev, NULL, connector->encoder_ids[0]); > +} > + > static void amdgpu_dm_get_native_mode(struct drm_connector *connector) > { > - const struct drm_connector_helper_funcs *helper = > - connector->helper_private; > struct drm_encoder *encoder; > struct amdgpu_encoder *amdgpu_encoder; > > - encoder = helper->best_encoder(connector); > + encoder = amdgpu_dm_connector_to_encoder(connector); > > if (encoder == NULL) > return; > @@ -3726,14 +3728,12 @@ static void amdgpu_dm_connector_ddc_get_modes(struct drm_connector *connector, > > static int amdgpu_dm_connector_get_modes(struct drm_connector *connector) > { > - const struct drm_connector_helper_funcs *helper = > - connector->helper_private; > struct amdgpu_dm_connector *amdgpu_dm_connector = > to_amdgpu_dm_connector(connector); > struct drm_encoder *encoder; > struct edid *edid = amdgpu_dm_connector->edid; > > - encoder = helper->best_encoder(connector); > + encoder = amdgpu_dm_connector_to_encoder(connector); > > if (!edid || !drm_edid_is_valid(edid)) { > amdgpu_dm_connector->num_modes = > _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel