From mboxrd@z Thu Jan 1 00:00:00 1970 From: Daniel Vetter Subject: Re: [PATCH 3/4] drm: i2c encoder helper wrappers Date: Thu, 24 Jan 2013 15:42:22 +0100 Message-ID: <20130124144222.GD31306@phenom.ffwll.local> References: <1357704526-3447-1-git-send-email-robdclark@gmail.com> <1357704526-3447-4-git-send-email-robdclark@gmail.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Return-path: Received: from mail-we0-f177.google.com (mail-we0-f177.google.com [74.125.82.177]) by gabe.freedesktop.org (Postfix) with ESMTP id 56B8DE6C22 for ; Thu, 24 Jan 2013 06:40:18 -0800 (PST) Received: by mail-we0-f177.google.com with SMTP id d7so1647269wer.36 for ; Thu, 24 Jan 2013 06:40:17 -0800 (PST) Content-Disposition: inline In-Reply-To: <1357704526-3447-4-git-send-email-robdclark@gmail.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org Errors-To: dri-devel-bounces+sf-dri-devel=m.gmane.org@lists.freedesktop.org To: Rob Clark Cc: dri-devel@lists.freedesktop.org, patches@linaro.org List-Id: dri-devel@lists.freedesktop.org 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 Ah, here they are - looked for them but didn't find them. Reviewed-by: Daniel Vetter 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 -- Daniel Vetter Software Engineer, Intel Corporation +41 (0) 79 365 57 48 - http://blog.ffwll.ch