Message ID | 1357704526-3447-4-git-send-email-robdclark@gmail.com |
---|---|
State | Accepted |
Commit | a7c47d6dc4a201b811e847e5449c8cffdc556deb |
Headers | show |
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@gmail.com> Ah, here they are - looked for them but didn't find them. Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> 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@lists.freedesktop.org > http://lists.freedesktop.org/mailman/listinfo/dri-devel
On Thu, Jan 24, 2013 at 8:42 AM, Daniel Vetter <daniel@ffwll.ch> wrote: > 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@gmail.com> > > Ah, here they are - looked for them but didn't find them. > > Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch> > > I guess if we keep on adding things to the encoder slave code (and more > users) we should start thinking about some kerneldoc ... yeah.. especially after it is renamed to cdf :-P > -Daniel >
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
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@gmail.com> --- drivers/gpu/drm/drm_encoder_slave.c | 63 +++++++++++++++++++++++++++++++++++++ include/drm/drm_encoder_slave.h | 20 ++++++++++++ 2 files changed, 83 insertions(+)