[PATCH 3/4] drm: i2c encoder helper wrappers

Daniel Vetter daniel at ffwll.ch
Thu Jan 24 06:42:22 PST 2013


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 at gmail.com>

Ah, here they are - looked for them but didn't find them.

Reviewed-by: Daniel Vetter <daniel.vetter at 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 at lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/dri-devel

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch


More information about the dri-devel mailing list