On Tue, Jun 26, 2018 at 10:47:09PM +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> > > Add drm_encoder_mask() which returns the 1<<index for the encoder. > We already have an identical drm_crtc_mask() for crtcs. > > Mostly performed with coccinelle: > @@ > @@ > - (1<<drm_encoder_index( > + drm_encoder_mask( > ...) > - ) > > @@ > @@ > - 1<<drm_encoder_index( > + drm_encoder_mask( > ...) > > @@ > @@ > - BIT(drm_encoder_index( > + drm_encoder_mask( > ...) > - ) > > Signed-off-by: Ville Syrjälä <ville.syrjala@xxxxxxxxxxxxxxx> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@xxxxxxxxx> > --- > drivers/gpu/drm/drm_atomic_helper.c | 10 +++++----- > include/drm/drm_encoder.h | 16 ++++++++++++++-- > 2 files changed, 19 insertions(+), 7 deletions(-) > > diff --git a/drivers/gpu/drm/drm_atomic_helper.c b/drivers/gpu/drm/drm_atomic_helper.c > index 17baf5057132..e022cacdae34 100644 > --- a/drivers/gpu/drm/drm_atomic_helper.c > +++ b/drivers/gpu/drm/drm_atomic_helper.c > @@ -121,7 +121,7 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state, > new_encoder = drm_atomic_helper_best_encoder(connector); > > if (new_encoder) { > - if (encoder_mask & (1 << drm_encoder_index(new_encoder))) { > + if (encoder_mask & drm_encoder_mask(new_encoder)) { > DRM_DEBUG_ATOMIC("[ENCODER:%d:%s] on [CONNECTOR:%d:%s] already assigned\n", > new_encoder->base.id, new_encoder->name, > connector->base.id, connector->name); > @@ -129,7 +129,7 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state, > return -EINVAL; > } > > - encoder_mask |= 1 << drm_encoder_index(new_encoder); > + encoder_mask |= drm_encoder_mask(new_encoder); > } > } > > @@ -155,7 +155,7 @@ static int handle_conflicting_encoders(struct drm_atomic_state *state, > continue; > > encoder = connector->state->best_encoder; > - if (!encoder || !(encoder_mask & (1 << drm_encoder_index(encoder)))) > + if (!encoder || !(encoder_mask & drm_encoder_mask(encoder))) > continue; > > if (!disable_conflicting_encoders) { > @@ -223,7 +223,7 @@ set_best_encoder(struct drm_atomic_state *state, > crtc_state = drm_atomic_get_new_crtc_state(state, crtc); > > crtc_state->encoder_mask &= > - ~(1 << drm_encoder_index(conn_state->best_encoder)); > + ~drm_encoder_mask(conn_state->best_encoder); > } > } > > @@ -234,7 +234,7 @@ set_best_encoder(struct drm_atomic_state *state, > crtc_state = drm_atomic_get_new_crtc_state(state, crtc); > > crtc_state->encoder_mask |= > - 1 << drm_encoder_index(encoder); > + drm_encoder_mask(encoder); > } > } > > diff --git a/include/drm/drm_encoder.h b/include/drm/drm_encoder.h > index fb299696c7c4..4f597c0730b4 100644 > --- a/include/drm/drm_encoder.h > +++ b/include/drm/drm_encoder.h > @@ -191,11 +191,23 @@ int drm_encoder_init(struct drm_device *dev, > * Given a registered encoder, return the index of that encoder within a DRM > * device's list of encoders. > */ > -static inline unsigned int drm_encoder_index(struct drm_encoder *encoder) > +static inline unsigned int drm_encoder_index(const struct drm_encoder *encoder) > { > return encoder->index; > } > > +/** > + * drm_encoder_mask - find the mask of a registered ENCODER > + * @encoder: encoder to find mask for > + * > + * Given a registered encoder, return the mask bit of that encoder for an > + * encoder's possible_clones field. > + */ > +static inline u32 drm_encoder_mask(const struct drm_encoder *encoder) > +{ > + return 1 << drm_encoder_index(encoder); > +} > + > /** > * drm_encoder_crtc_ok - can a given crtc drive a given encoder? > * @encoder: encoder to test > @@ -241,7 +253,7 @@ void drm_encoder_cleanup(struct drm_encoder *encoder); > */ > #define drm_for_each_encoder_mask(encoder, dev, encoder_mask) \ > list_for_each_entry((encoder), &(dev)->mode_config.encoder_list, head) \ > - for_each_if ((encoder_mask) & (1 << drm_encoder_index(encoder))) > + for_each_if ((encoder_mask) & drm_encoder_mask(encoder)) > > /** > * drm_for_each_encoder - iterate over all encoders > -- > 2.16.4 > > _______________________________________________ > Intel-gfx mailing list > Intel-gfx@xxxxxxxxxxxxxxxxxxxxx > https://lists.freedesktop.org/mailman/listinfo/intel-gfx _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/dri-devel