From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=ham autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id A9458C2BA19 for ; Mon, 13 Apr 2020 05:58:51 +0000 (UTC) Received: from vger.kernel.org (unknown [209.132.180.67]) by mail.kernel.org (Postfix) with ESMTP id 62059206E9 for ; Mon, 13 Apr 2020 05:58:51 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 62059206E9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ravnborg.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-renesas-soc-owner@vger.kernel.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1726979AbgDMF6v (ORCPT ); Mon, 13 Apr 2020 01:58:51 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.18]:45632 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1726967AbgDMF6u (ORCPT ); Mon, 13 Apr 2020 01:58:50 -0400 Received: from asavdk4.altibox.net (asavdk4.altibox.net [109.247.116.15]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 35EB8C008681 for ; Sun, 12 Apr 2020 22:58:50 -0700 (PDT) Received: from ravnborg.org (unknown [158.248.194.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk4.altibox.net (Postfix) with ESMTPS id CE3748048A; Mon, 13 Apr 2020 07:58:47 +0200 (CEST) Date: Mon, 13 Apr 2020 07:58:46 +0200 From: Sam Ravnborg To: Laurent Pinchart Cc: dri-devel@lists.freedesktop.org, Rob Clark , Jernej Skrabec , Jonas Karlman , Neil Armstrong , linux-renesas-soc@vger.kernel.org, Andrzej Hajda , Sean Paul Subject: Re: [PATCH 2/4] drm: bridge: adv7511: Split connector creation to a separate function Message-ID: <20200413055846.GD6324@ravnborg.org> References: <20200409004610.12346-1-laurent.pinchart+renesas@ideasonboard.com> <20200409004610.12346-3-laurent.pinchart+renesas@ideasonboard.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20200409004610.12346-3-laurent.pinchart+renesas@ideasonboard.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=XpTUx2N9 c=1 sm=1 tr=0 a=UWs3HLbX/2nnQ3s7vZ42gw==:117 a=UWs3HLbX/2nnQ3s7vZ42gw==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=kj9zAlcOel0A:10 a=P1BnusSwAAAA:8 a=7gkXJVJtAAAA:8 a=e5mUnYsNAAAA:8 a=h90TiP3DJ19r7i-q8SIA:9 a=CjuIK1q_8ugA:10 a=D0XLA9XvdZm18NrgonBM:22 a=E9Po1WZjFZOl8hwRPBS3:22 a=Vxmtnl_E_bksehYqCbjh:22 Sender: linux-renesas-soc-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: linux-renesas-soc@vger.kernel.org Hi Laurent. On Thu, Apr 09, 2020 at 03:46:08AM +0300, Laurent Pinchart wrote: > To prepare for making the connector creation optional, move the related > code out of adv7511_bridge_attach() to a separate function. > > Signed-off-by: Laurent Pinchart On nit below, but otherwise: Acked-by: Sam Ravnborg Sam > --- > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 62 +++++++++++++------- > 1 file changed, 40 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > index 58d02e92b6b9..e3b62ad95389 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -783,7 +783,10 @@ static void adv7511_mode_set(struct adv7511 *adv7511, > adv7511->f_tmds = mode->clock; > } > > -/* Connector funcs */ > +/* ----------------------------------------------------------------------------- > + * DRM Connector Operations > + */ > + > static struct adv7511 *connector_to_adv7511(struct drm_connector *connector) > { > return container_of(connector, struct adv7511, connector); > @@ -827,7 +830,40 @@ static const struct drm_connector_funcs adv7511_connector_funcs = { > .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, > }; > > -/* Bridge funcs */ > +static int adv7511_connector_init(struct adv7511 *adv) > +{ > + struct drm_bridge *bridge = &adv->bridge; > + int ret; > + > + if (!bridge->encoder) { > + DRM_ERROR("Parent encoder object not found"); > + return -ENODEV; > + } > + > + if (adv->i2c_main->irq) > + adv->connector.polled = DRM_CONNECTOR_POLL_HPD; > + else > + adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT | > + DRM_CONNECTOR_POLL_DISCONNECT; > + > + ret = drm_connector_init(bridge->dev, &adv->connector, > + &adv7511_connector_funcs, > + DRM_MODE_CONNECTOR_HDMIA); > + if (ret) { Here we test for ret != 0 > + DRM_ERROR("Failed to initialize connector with drm\n"); > + return ret; > + } > + drm_connector_helper_add(&adv->connector, > + &adv7511_connector_helper_funcs); > + drm_connector_attach_encoder(&adv->connector, bridge->encoder); > + > + return 0; > +} > + > +/* ----------------------------------------------------------------------------- > + * DRM Bridge Operations > + */ > + > static struct adv7511 *bridge_to_adv7511(struct drm_bridge *bridge) > { > return container_of(bridge, struct adv7511, bridge); > @@ -867,27 +903,9 @@ static int adv7511_bridge_attach(struct drm_bridge *bridge, > return -EINVAL; > } > > - if (!bridge->encoder) { > - DRM_ERROR("Parent encoder object not found"); > - return -ENODEV; > - } > - > - if (adv->i2c_main->irq) > - adv->connector.polled = DRM_CONNECTOR_POLL_HPD; > - else > - adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT | > - DRM_CONNECTOR_POLL_DISCONNECT; > - > - ret = drm_connector_init(bridge->dev, &adv->connector, > - &adv7511_connector_funcs, > - DRM_MODE_CONNECTOR_HDMIA); > - if (ret) { > - DRM_ERROR("Failed to initialize connector with drm\n"); > + ret = adv7511_connector_init(adv); > + if (ret < 0) Here we test for ret < 0 The code works - but it is inconsistent. drm_connector_init() is documented to: "Zero on success, error code on failure." > return ret; > - } > - drm_connector_helper_add(&adv->connector, > - &adv7511_connector_helper_funcs); > - drm_connector_attach_encoder(&adv->connector, bridge->encoder); > > if (adv->type == ADV7533 || adv->type == ADV7535) > ret = adv7533_attach_dsi(adv); > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-8.3 required=3.0 tests=HEADER_FROM_DIFFERENT_DOMAINS, INCLUDES_PATCH,MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS, USER_AGENT_SANE_1 autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id BA570C2BB1D for ; Mon, 13 Apr 2020 05:58:52 +0000 (UTC) Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 9B2DE206E9 for ; Mon, 13 Apr 2020 05:58:52 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 9B2DE206E9 Authentication-Results: mail.kernel.org; dmarc=none (p=none dis=none) header.from=ravnborg.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=dri-devel-bounces@lists.freedesktop.org Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id AAEE06E185; Mon, 13 Apr 2020 05:58:51 +0000 (UTC) Received: from asavdk4.altibox.net (asavdk4.altibox.net [109.247.116.15]) by gabe.freedesktop.org (Postfix) with ESMTPS id 38EE86E185 for ; Mon, 13 Apr 2020 05:58:50 +0000 (UTC) Received: from ravnborg.org (unknown [158.248.194.18]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by asavdk4.altibox.net (Postfix) with ESMTPS id CE3748048A; Mon, 13 Apr 2020 07:58:47 +0200 (CEST) Date: Mon, 13 Apr 2020 07:58:46 +0200 From: Sam Ravnborg To: Laurent Pinchart Subject: Re: [PATCH 2/4] drm: bridge: adv7511: Split connector creation to a separate function Message-ID: <20200413055846.GD6324@ravnborg.org> References: <20200409004610.12346-1-laurent.pinchart+renesas@ideasonboard.com> <20200409004610.12346-3-laurent.pinchart+renesas@ideasonboard.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20200409004610.12346-3-laurent.pinchart+renesas@ideasonboard.com> User-Agent: Mutt/1.10.1 (2018-07-13) X-CMAE-Score: 0 X-CMAE-Analysis: v=2.3 cv=XpTUx2N9 c=1 sm=1 tr=0 a=UWs3HLbX/2nnQ3s7vZ42gw==:117 a=UWs3HLbX/2nnQ3s7vZ42gw==:17 a=jpOVt7BSZ2e4Z31A5e1TngXxSK0=:19 a=kj9zAlcOel0A:10 a=P1BnusSwAAAA:8 a=7gkXJVJtAAAA:8 a=e5mUnYsNAAAA:8 a=h90TiP3DJ19r7i-q8SIA:9 a=CjuIK1q_8ugA:10 a=D0XLA9XvdZm18NrgonBM:22 a=E9Po1WZjFZOl8hwRPBS3:22 a=Vxmtnl_E_bksehYqCbjh:22 X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Rob Clark , Jernej Skrabec , Neil Armstrong , Jonas Karlman , dri-devel@lists.freedesktop.org, linux-renesas-soc@vger.kernel.org, Andrzej Hajda , Sean Paul Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" Hi Laurent. On Thu, Apr 09, 2020 at 03:46:08AM +0300, Laurent Pinchart wrote: > To prepare for making the connector creation optional, move the related > code out of adv7511_bridge_attach() to a separate function. > > Signed-off-by: Laurent Pinchart On nit below, but otherwise: Acked-by: Sam Ravnborg Sam > --- > drivers/gpu/drm/bridge/adv7511/adv7511_drv.c | 62 +++++++++++++------- > 1 file changed, 40 insertions(+), 22 deletions(-) > > diff --git a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > index 58d02e92b6b9..e3b62ad95389 100644 > --- a/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > +++ b/drivers/gpu/drm/bridge/adv7511/adv7511_drv.c > @@ -783,7 +783,10 @@ static void adv7511_mode_set(struct adv7511 *adv7511, > adv7511->f_tmds = mode->clock; > } > > -/* Connector funcs */ > +/* ----------------------------------------------------------------------------- > + * DRM Connector Operations > + */ > + > static struct adv7511 *connector_to_adv7511(struct drm_connector *connector) > { > return container_of(connector, struct adv7511, connector); > @@ -827,7 +830,40 @@ static const struct drm_connector_funcs adv7511_connector_funcs = { > .atomic_destroy_state = drm_atomic_helper_connector_destroy_state, > }; > > -/* Bridge funcs */ > +static int adv7511_connector_init(struct adv7511 *adv) > +{ > + struct drm_bridge *bridge = &adv->bridge; > + int ret; > + > + if (!bridge->encoder) { > + DRM_ERROR("Parent encoder object not found"); > + return -ENODEV; > + } > + > + if (adv->i2c_main->irq) > + adv->connector.polled = DRM_CONNECTOR_POLL_HPD; > + else > + adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT | > + DRM_CONNECTOR_POLL_DISCONNECT; > + > + ret = drm_connector_init(bridge->dev, &adv->connector, > + &adv7511_connector_funcs, > + DRM_MODE_CONNECTOR_HDMIA); > + if (ret) { Here we test for ret != 0 > + DRM_ERROR("Failed to initialize connector with drm\n"); > + return ret; > + } > + drm_connector_helper_add(&adv->connector, > + &adv7511_connector_helper_funcs); > + drm_connector_attach_encoder(&adv->connector, bridge->encoder); > + > + return 0; > +} > + > +/* ----------------------------------------------------------------------------- > + * DRM Bridge Operations > + */ > + > static struct adv7511 *bridge_to_adv7511(struct drm_bridge *bridge) > { > return container_of(bridge, struct adv7511, bridge); > @@ -867,27 +903,9 @@ static int adv7511_bridge_attach(struct drm_bridge *bridge, > return -EINVAL; > } > > - if (!bridge->encoder) { > - DRM_ERROR("Parent encoder object not found"); > - return -ENODEV; > - } > - > - if (adv->i2c_main->irq) > - adv->connector.polled = DRM_CONNECTOR_POLL_HPD; > - else > - adv->connector.polled = DRM_CONNECTOR_POLL_CONNECT | > - DRM_CONNECTOR_POLL_DISCONNECT; > - > - ret = drm_connector_init(bridge->dev, &adv->connector, > - &adv7511_connector_funcs, > - DRM_MODE_CONNECTOR_HDMIA); > - if (ret) { > - DRM_ERROR("Failed to initialize connector with drm\n"); > + ret = adv7511_connector_init(adv); > + if (ret < 0) Here we test for ret < 0 The code works - but it is inconsistent. drm_connector_init() is documented to: "Zero on success, error code on failure." > return ret; > - } > - drm_connector_helper_add(&adv->connector, > - &adv7511_connector_helper_funcs); > - drm_connector_attach_encoder(&adv->connector, bridge->encoder); > > if (adv->type == ADV7533 || adv->type == ADV7535) > ret = adv7533_attach_dsi(adv); > -- > Regards, > > Laurent Pinchart > > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel _______________________________________________ dri-devel mailing list dri-devel@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/dri-devel