From patchwork Mon Jan 19 08:31:12 2015
Content-Type: text/plain; charset="utf-8"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
X-Patchwork-Submitter: Philipp Zabel
X-Patchwork-Id: 5655541
Return-Path:
X-Original-To: patchwork-dri-devel@patchwork.kernel.org
Delivered-To: patchwork-parsemail@patchwork2.web.kernel.org
Received: from mail.kernel.org (mail.kernel.org [198.145.29.136])
by patchwork2.web.kernel.org (Postfix) with ESMTP id 9CC13C058D
for ;
Mon, 19 Jan 2015 08:31:21 +0000 (UTC)
Received: from mail.kernel.org (localhost [127.0.0.1])
by mail.kernel.org (Postfix) with ESMTP id B0048202F8
for ;
Mon, 19 Jan 2015 08:31:20 +0000 (UTC)
Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177])
by mail.kernel.org (Postfix) with ESMTP id D1F6E202C8
for ;
Mon, 19 Jan 2015 08:31:19 +0000 (UTC)
Received: from gabe.freedesktop.org (localhost [127.0.0.1])
by gabe.freedesktop.org (Postfix) with ESMTP id 9691C6E4F6;
Mon, 19 Jan 2015 00:31:18 -0800 (PST)
X-Original-To: dri-devel@lists.freedesktop.org
Delivered-To: dri-devel@lists.freedesktop.org
Received: from metis.ext.pengutronix.de (metis.ext.pengutronix.de
[92.198.50.35])
by gabe.freedesktop.org (Postfix) with ESMTP id F12EC6E4F6
for ;
Mon, 19 Jan 2015 00:31:16 -0800 (PST)
Received: from paszta.hi.pengutronix.de
([2001:67c:670:100:96de:80ff:fec2:9969] helo=paszta)
by metis.ext.pengutronix.de with esmtp (Exim 4.72)
(envelope-from )
id 1YD7ju-0006Ec-Q8; Mon, 19 Jan 2015 09:31:14 +0100
Message-ID: <1421656272.3758.6.camel@pengutronix.de>
Subject: Re: [PATCH v2] drm: imx: imx-tve: Check and propagate the errors
From: Philipp Zabel
To: Fabio Estevam
Date: Mon, 19 Jan 2015 09:31:12 +0100
In-Reply-To: <1421531349-31127-1-git-send-email-festevam@gmail.com>
References: <1421531349-31127-1-git-send-email-festevam@gmail.com>
X-Mailer: Evolution 3.12.9-1
Mime-Version: 1.0
X-SA-Exim-Connect-IP: 2001:67c:670:100:96de:80ff:fec2:9969
X-SA-Exim-Mail-From: p.zabel@pengutronix.de
X-SA-Exim-Scanned: No (on metis.ext.pengutronix.de);
SAEximRunCond expanded to false
X-PTX-Original-Recipient: dri-devel@lists.freedesktop.org
Cc: Fabio Estevam ,
dri-devel@lists.freedesktop.org
X-BeenThere: dri-devel@lists.freedesktop.org
X-Mailman-Version: 2.1.18
Precedence: list
List-Id: Direct Rendering Infrastructure - Development
List-Unsubscribe: ,
List-Archive:
List-Post:
List-Help:
List-Subscribe: ,
Errors-To: dri-devel-bounces@lists.freedesktop.org
Sender: "dri-devel"
X-Spam-Status: No, score=-4.2 required=5.0 tests=BAYES_00, RCVD_IN_DNSWL_MED,
T_RP_MATCHES_RCVD,
UNPARSEABLE_RELAY autolearn=unavailable version=3.3.1
X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on mail.kernel.org
X-Virus-Scanned: ClamAV using ClamSMTP
Hi Fabio,
thank you for the patch.
Am Samstag, den 17.01.2015, 19:49 -0200 schrieb Fabio Estevam:
> From: Fabio Estevam
>
> In the case of errors we should propagate them.
>
> Signed-off-by: Fabio Estevam
> ---
> Changes since v1:
> - Fixed a typo on my FSL address
>
> drivers/gpu/drm/imx/imx-tve.c | 14 +++++++++++---
> 1 file changed, 11 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
> index a729f4f7..a281723 100644
> --- a/drivers/gpu/drm/imx/imx-tve.c
> +++ b/drivers/gpu/drm/imx/imx-tve.c
> @@ -191,10 +191,18 @@ static int tve_setup_vga(struct imx_tve *tve)
> /* set gain to (1 + 10/128) to provide 0.7V peak-to-peak amplitude */
> ret = regmap_update_bits(tve->regmap, TVE_TVDAC0_CONT_REG,
> TVE_TVDAC_GAIN_MASK, 0x0a);
> + if (ret)
> + return ret;
> +
> ret = regmap_update_bits(tve->regmap, TVE_TVDAC1_CONT_REG,
> TVE_TVDAC_GAIN_MASK, 0x0a);
> + if (ret)
> + return ret;
> +
> ret = regmap_update_bits(tve->regmap, TVE_TVDAC2_CONT_REG,
> TVE_TVDAC_GAIN_MASK, 0x0a);
> + if (ret)
> + return ret;
>
> /* set configuration register */
> mask = TVE_DATA_SOURCE_MASK | TVE_INP_VIDEO_FORM;
Oh yes. I think the idea here was that if any regmap_* call fails, all
of them should fail, and since the return value of tve_setup_vga is not
checked, the proper return value was not a concern.
> @@ -210,10 +218,8 @@ static int tve_setup_vga(struct imx_tve *tve)
> }
>
> /* set test mode (as documented) */
> - ret = regmap_update_bits(tve->regmap, TVE_TST_MODE_REG,
> + return regmap_update_bits(tve->regmap, TVE_TST_MODE_REG,
> TVE_TVDAC_TEST_MODE_MASK, 1);
> -
> - return 0;
> }
>
> static enum drm_connector_status imx_tve_connector_detect(
> @@ -671,6 +677,8 @@ static int imx_tve_bind(struct device *dev, struct device *master, void *data)
>
> /* disable cable detection for VGA mode */
> ret = regmap_write(tve->regmap, TVE_CD_CONT_REG, 0);
> + if (ret)
> + return ret;
>
> ret = imx_tve_register(drm, tve);
> if (ret)
How about adding the following change:
-----8<-----
diff --git a/drivers/gpu/drm/imx/imx-tve.c b/drivers/gpu/drm/imx/imx-tve.c
index ad77a11..76a4509 100644
--- a/drivers/gpu/drm/imx/imx-tve.c
+++ b/drivers/gpu/drm/imx/imx-tve.c
@@ -212,10 +212,8 @@ static int tve_setup_vga(struct imx_tve *tve)
mask |= TVE_TV_OUT_MODE_MASK | TVE_SYNC_CH_0_EN;
val |= TVE_TV_OUT_RGB | TVE_SYNC_CH_0_EN;
ret = regmap_update_bits(tve->regmap, TVE_COM_CONF_REG, mask, val);
- if (ret < 0) {
- dev_err(tve->dev, "failed to set configuration: %d\n", ret);
+ if (ret)
return ret;
- }
/* set test mode (as documented) */
return regmap_update_bits(tve->regmap, TVE_TST_MODE_REG,
@@ -341,9 +339,11 @@ static void imx_tve_encoder_mode_set(struct drm_encoder *encoder,
}
if (tve->mode == TVE_MODE_VGA)
- tve_setup_vga(tve);
+ ret = tve_setup_vga(tve);
else
- tve_setup_tvout(tve);
+ ret = tve_setup_tvout(tve);
+ if (ret)
+ dev_err(tve->dev, "failed to set configuration: %d\n", ret);
}
static void imx_tve_encoder_commit(struct drm_encoder *encoder)