On Tue, Jan 08, 2013 at 10:08:45PM -0600, Rob Clark wrote: > Simplify life for drivers using an encoder-slave, so that they can make > their drm_encoder_helper_funcs const, rather than needing to dynamically > allocate and populate them. > > Signed-off-by: Rob Clark <robdclark@xxxxxxxxx> Ah, here they are - looked for them but didn't find them. Reviewed-by: Daniel Vetter <daniel.vetter@xxxxxxxx> I guess if we keep on adding things to the encoder slave code (and more users) we should start thinking about some kerneldoc ... -Daniel > --- > drivers/gpu/drm/drm_encoder_slave.c | 63 +++++++++++++++++++++++++++++++++++++ > include/drm/drm_encoder_slave.h | 20 ++++++++++++ > 2 files changed, 83 insertions(+) > > diff --git a/drivers/gpu/drm/drm_encoder_slave.c b/drivers/gpu/drm/drm_encoder_slave.c > index 63e7334..48c52f7 100644 > --- a/drivers/gpu/drm/drm_encoder_slave.c > +++ b/drivers/gpu/drm/drm_encoder_slave.c > @@ -123,3 +123,66 @@ void drm_i2c_encoder_destroy(struct drm_encoder *drm_encoder) > module_put(module); > } > EXPORT_SYMBOL(drm_i2c_encoder_destroy); > + > +/* > + * Wrapper fxns which can be plugged in to drm_encoder_helper_funcs: > + */ > + > +static inline struct drm_encoder_slave_funcs * > +get_slave_funcs(struct drm_encoder *enc) > +{ > + return to_encoder_slave(enc)->slave_funcs; > +} > + > +void drm_i2c_encoder_dpms(struct drm_encoder *encoder, int mode) > +{ > + get_slave_funcs(encoder)->dpms(encoder, mode); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_dpms); > + > +bool drm_i2c_encoder_mode_fixup(struct drm_encoder *encoder, > + const struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode) > +{ > + return get_slave_funcs(encoder)->mode_fixup(encoder, mode, adjusted_mode); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_mode_fixup); > + > +void drm_i2c_encoder_prepare(struct drm_encoder *encoder) > +{ > + drm_i2c_encoder_dpms(encoder, DRM_MODE_DPMS_OFF); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_prepare); > + > +void drm_i2c_encoder_commit(struct drm_encoder *encoder) > +{ > + drm_i2c_encoder_dpms(encoder, DRM_MODE_DPMS_ON); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_commit); > + > +void drm_i2c_encoder_mode_set(struct drm_encoder *encoder, > + struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode) > +{ > + get_slave_funcs(encoder)->mode_set(encoder, mode, adjusted_mode); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_mode_set); > + > +enum drm_connector_status drm_i2c_encoder_detect(struct drm_encoder *encoder, > + struct drm_connector *connector) > +{ > + return get_slave_funcs(encoder)->detect(encoder, connector); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_detect); > + > +void drm_i2c_encoder_save(struct drm_encoder *encoder) > +{ > + get_slave_funcs(encoder)->save(encoder); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_save); > + > +void drm_i2c_encoder_restore(struct drm_encoder *encoder) > +{ > + get_slave_funcs(encoder)->restore(encoder); > +} > +EXPORT_SYMBOL(drm_i2c_encoder_restore); > diff --git a/include/drm/drm_encoder_slave.h b/include/drm/drm_encoder_slave.h > index b0c11a7..8b9cc36 100644 > --- a/include/drm/drm_encoder_slave.h > +++ b/include/drm/drm_encoder_slave.h > @@ -159,4 +159,24 @@ static inline void drm_i2c_encoder_unregister(struct drm_i2c_encoder_driver *dri > > void drm_i2c_encoder_destroy(struct drm_encoder *encoder); > > + > +/* > + * Wrapper fxns which can be plugged in to drm_encoder_helper_funcs: > + */ > + > +void drm_i2c_encoder_dpms(struct drm_encoder *encoder, int mode); > +bool drm_i2c_encoder_mode_fixup(struct drm_encoder *encoder, > + const struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode); > +void drm_i2c_encoder_prepare(struct drm_encoder *encoder); > +void drm_i2c_encoder_commit(struct drm_encoder *encoder); > +void drm_i2c_encoder_mode_set(struct drm_encoder *encoder, > + struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode); > +enum drm_connector_status drm_i2c_encoder_detect(struct drm_encoder *encoder, > + struct drm_connector *connector); > +void drm_i2c_encoder_save(struct drm_encoder *encoder); > +void drm_i2c_encoder_restore(struct drm_encoder *encoder); > + > + > #endif > -- > 1.8.0.2 > > _______________________________________________ > dri-devel mailing list > dri-devel@xxxxxxxxxxxxxxxxxxxxx > http://lists.freedesktop.org/mailman/listinfo/dri-devel -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch _______________________________________________ dri-devel mailing list dri-devel@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/dri-devel