Received: by 10.192.165.148 with SMTP id m20csp51448imm; Fri, 20 Apr 2018 02:52:51 -0700 (PDT) X-Google-Smtp-Source: AIpwx4+PlFiUQHkAmOANoKOg86pIThDv8o5fOTDa45TcVdN5do8msHAs4KC/J1iP8yrqXH0nNkcw X-Received: by 2002:a17:902:bf08:: with SMTP id bi8-v6mr9592154plb.149.1524217971271; Fri, 20 Apr 2018 02:52:51 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1524217971; cv=none; d=google.com; s=arc-20160816; b=amNTLnG0eislEQ/yclfYnqD8z14QY0KZCpjbDN3Kd2jEKoQpze9k9Z69Va0yQIUQXQ NZZxM2zYT/ntSeO0V/DCxt1WGHSDoXEMuv5asIwKi1heQm3ukaDqTzzjNoQWlffwfcTP dGl6rnU5Bsuwk02rxVEo+DfwnOIeyJMWBsMZ12pJx9Kqw9CH2utcZpgVNdFxf19M/Egw OjmAZPWpfTdmXxt0yj07PkK4izcsa5h3ofxXrrJmWEGmhP5S4DI6PrqO7pzsMuvDpyqn kJTROtBrpFzcZg3I8NBO0fpVsPeMI27ehQ49lhHRVAFmQzgiWWy8hdB0tM2oAzHnDB0H uCKQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:sender:content-transfer-encoding:mime-version :references:in-reply-to:organization:message-id:date:subject:cc:to :from:dkim-signature:arc-authentication-results; bh=Yxp5Cpgk9kH5ITRSiPP1eeM8Q733bKs8Bej+yijbHzg=; b=XxT/D3DAvQHqt6cLmO7FdHOOqJ9D3cv4INoLwVVehuCBhBZp/iglKpTXxJPsM9xUH8 su9rwaP/p13U6faJTArv2KavB1SZDMfgxN0cfUv6PgGhC+OWriXkjdSdvbnOwh225WXi 8TWgxBpndOc3Waf0rhG6mjwzlPUXTLnMjQHy7JyL0dc1YVJLOfzQSfmMuPKQQkqcjkp0 8Jrra9AER9iErSXnGg8iPNz1DmiL5gSQD793v3oCUZnrpkWumURSCPByhenaD3M1PNfO GfqIIFmdJp5cMMmPZYBtHLKQwSR64tH/iMi0rbmix+weVvyE0Nz7h2GwcVyDkQbM4InO za7g== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=ucJwKfpu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Return-Path: Received: from vger.kernel.org (vger.kernel.org. [209.132.180.67]) by mx.google.com with ESMTP id 70-v6si5347380ple.372.2018.04.20.02.52.37; Fri, 20 Apr 2018 02:52:51 -0700 (PDT) Received-SPF: pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) client-ip=209.132.180.67; Authentication-Results: mx.google.com; dkim=pass (test mode) header.i=@ideasonboard.com header.s=mail header.b=ucJwKfpu; spf=pass (google.com: best guess record for domain of linux-kernel-owner@vger.kernel.org designates 209.132.180.67 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754558AbeDTJvL (ORCPT + 99 others); Fri, 20 Apr 2018 05:51:11 -0400 Received: from perceval.ideasonboard.com ([213.167.242.64]:39298 "EHLO perceval.ideasonboard.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754543AbeDTJvK (ORCPT ); Fri, 20 Apr 2018 05:51:10 -0400 Received: from avalon.localnet (dfj612ybrt5fhg77mgycy-3.rev.dnainternet.fi [IPv6:2001:14ba:21f5:5b00:2e86:4862:ef6a:2804]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 58B6060A1; Fri, 20 Apr 2018 11:51:07 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1524217868; bh=v5vS9g+zcv/S/3bfWoAmbHxM3EWZQqszSZG6Z1Mds6M=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=ucJwKfpuyRmT5CHAPtT/5BrOrtdaZbgG2GxRw//+4S8KUtR/0K2rrjz/U/CUklCCD TQ0qUBMDauSooey0BILaQRfd9e9hf6U3E3IngEIr2N4Fmb4Rh9/UOHRa2C86dybjZj Euxq86SeKKZnUCWarRTv48jC3/oeKzjvBgMZEk40= From: Laurent Pinchart To: dri-devel@lists.freedesktop.org Cc: Peter Rosin , linux-kernel@vger.kernel.org, Mark Rutland , Boris Brezillon , Alexandre Belloni , Jacopo Mondi , devicetree@vger.kernel.org, David Airlie , Nicolas Ferre , Russell King , Rob Herring , Daniel Vetter , linux-arm-kernel@lists.infradead.org Subject: Re: [PATCH v3 6/7] drm/i2c: tda998x: split encoder and component functions from the work Date: Fri, 20 Apr 2018 12:51:18 +0300 Message-ID: <2442184.bXNxhGy9qM@avalon> Organization: Ideas on Board Oy In-Reply-To: <20180419162751.25223-7-peda@axentia.se> References: <20180419162751.25223-1-peda@axentia.se> <20180419162751.25223-7-peda@axentia.se> MIME-Version: 1.0 Content-Transfer-Encoding: 7Bit Content-Type: text/plain; charset="us-ascii" Sender: linux-kernel-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Hi Peter, Thank you for the patch. On Thursday, 19 April 2018 19:27:50 EEST Peter Rosin wrote: > This enables reuse of the machinery for the case where a drm_bridge > needs to do the same work via different interfaces. > > Signed-off-by: Peter Rosin > --- > drivers/gpu/drm/i2c/tda998x_drv.c | 46 ++++++++++++++++++++++++++++-------- > 1 file changed, 36 insertions(+), 10 deletions(-) > > diff --git a/drivers/gpu/drm/i2c/tda998x_drv.c > b/drivers/gpu/drm/i2c/tda998x_drv.c index 8f6e013f2b87..9c78f7bde49c 100644 > --- a/drivers/gpu/drm/i2c/tda998x_drv.c > +++ b/drivers/gpu/drm/i2c/tda998x_drv.c > @@ -1163,9 +1163,8 @@ static int tda998x_connector_init(struct tda998x_priv > *priv, > > /* DRM encoder functions */ > > -static void tda998x_encoder_dpms(struct drm_encoder *encoder, int mode) > +static void tda998x_dpms(struct tda998x_priv *priv, int mode) I'd split this function into tda998x_enable() and tda998x_disable(), as the DRM bridge API doesn't need to care about DPMS. The core of the driver would then be DPMS-free. Apart from that the patch looks good to me. > { > - struct tda998x_priv *priv = enc_to_tda998x_priv(encoder); > bool on; > > /* we only care about on or off: */ > @@ -1195,12 +1194,18 @@ static void tda998x_encoder_dpms(struct drm_encoder > *encoder, int mode) } > } > > -static void > -tda998x_encoder_mode_set(struct drm_encoder *encoder, > - struct drm_display_mode *mode, > - struct drm_display_mode *adjusted_mode) > +static void tda998x_encoder_dpms(struct drm_encoder *encoder, int mode) > { > struct tda998x_priv *priv = enc_to_tda998x_priv(encoder); > + > + tda998x_dpms(priv, mode); > +} > + > +static void > +tda998x_mode_set(struct tda998x_priv *priv, > + struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode) > +{ > u16 ref_pix, ref_line, n_pix, n_line; > u16 hs_pix_s, hs_pix_e; > u16 vs1_pix_s, vs1_pix_e, vs1_line_s, vs1_line_e; > @@ -1407,6 +1412,16 @@ tda998x_encoder_mode_set(struct drm_encoder *encoder, > mutex_unlock(&priv->audio_mutex); > } > > +static void > +tda998x_encoder_mode_set(struct drm_encoder *encoder, > + struct drm_display_mode *mode, > + struct drm_display_mode *adjusted_mode) > +{ > + struct tda998x_priv *priv = enc_to_tda998x_priv(encoder); > + > + tda998x_mode_set(priv, mode, adjusted_mode); > +} > + > static void tda998x_destroy(struct tda998x_priv *priv) > { > /* disable all IRQs and free the IRQ handler */ > @@ -1653,11 +1668,10 @@ static void tda998x_set_config(struct tda998x_priv > *priv, priv->audio_params = p->audio_params; > } > > -static int tda998x_bind(struct device *dev, struct device *master, void > *data) > +static int tda998x_init(struct device *dev, struct drm_device *drm) > { > struct tda998x_encoder_params *params = dev->platform_data; > struct i2c_client *client = to_i2c_client(dev); > - struct drm_device *drm = data; > struct tda998x_priv *priv; > u32 crtcs = 0; > int ret; > @@ -1705,8 +1719,7 @@ static int tda998x_bind(struct device *dev, struct > device *master, void *data) return ret; > } > > -static void tda998x_unbind(struct device *dev, struct device *master, > - void *data) > +static void tda998x_fini(struct device *dev) > { > struct tda998x_priv *priv = dev_get_drvdata(dev); > > @@ -1715,6 +1728,19 @@ static void tda998x_unbind(struct device *dev, struct > device *master, tda998x_destroy(priv); > } > > +static int tda998x_bind(struct device *dev, struct device *master, void > *data) > +{ > + struct drm_device *drm = data; > + > + return tda998x_init(dev, drm); > +} > + > +static void tda998x_unbind(struct device *dev, struct device *master, > + void *data) > +{ > + tda998x_fini(dev); > +} > + > static const struct component_ops tda998x_ops = { > .bind = tda998x_bind, > .unbind = tda998x_unbind, -- Regards, Laurent Pinchart