Message ID | 20180626194716.12522-3-ville.syrjala@linux.intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Tue, Jun 26, 2018 at 10:47:09PM +0300, Ville Syrjala wrote: > From: Ville Syrjälä <ville.syrjala@linux.intel.com> > > 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@linux.intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> > --- > 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@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
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