linux-kernel.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Maxime Ripard <maxime.ripard@bootlin.com>
To: Paul Kocialkowski <paul.kocialkowski@bootlin.com>
Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org,
	linux-arm-kernel@lists.infradead.org,
	linux-kernel@vger.kernel.org,
	"Mauro Carvalho Chehab" <mchehab@kernel.org>,
	"Rob Herring" <robh+dt@kernel.org>,
	"Mark Rutland" <mark.rutland@arm.com>,
	"Chen-Yu Tsai" <wens@csie.org>,
	"Marco Franchi" <marco.franchi@nxp.com>,
	"Icenowy Zheng" <icenowy@aosc.io>,
	"Hans Verkuil" <hverkuil@xs4all.nl>,
	"Keiichi Watanabe" <keiichiw@chromium.org>,
	"Jonathan Corbet" <corbet@lwn.net>,
	"Smitha T Murthy" <smitha.t@samsung.com>,
	"Tom Saeger" <tom.saeger@oracle.com>,
	"Andrzej Hajda" <a.hajda@samsung.com>,
	"David S . Miller" <davem@davemloft.net>,
	"Greg Kroah-Hartman" <gregkh@linuxfoundation.org>,
	"Andrew Morton" <akpm@linux-foundation.org>,
	"Randy Dunlap" <rdunlap@infradead.org>,
	"Arnd Bergmann" <arnd@arndb.de>,
	"Geert Uytterhoeven" <geert@linux-m68k.org>,
	"Laurent Pinchart" <laurent.pinchart+renesas@ideasonboard.com>,
	"Jacob Chen" <jacob-chen@iotwrt.com>,
	"Neil Armstrong" <narmstrong@baylibre.com>,
	"Benoit Parrot" <bparrot@ti.com>,
	"Todor Tomov" <todor.tomov@linaro.org>,
	"Alexandre Courbot" <acourbot@chromium.org>,
	"Sakari Ailus" <sakari.ailus@linux.intel.com>,
	"Andy Shevchenko" <andriy.shevchenko@linux.intel.com>,
	"Pawel Osciak" <posciak@chromium.org>,
	"Ricardo Ribalda Delgado" <ricardo.ribalda@gmail.com>,
	"Hans de Goede" <hdegoede@redhat.com>,
	"Sami Tolvanen" <samitolvanen@google.com>,
	"Niklas Söderlund" <niklas.soderlund+renesas@ragnatech.se>,
	linux-sunxi@googlegroups.com,
	"Thomas Petazzoni" <thomas.petazzoni@bootlin.com>,
	"Hugues Fruchet" <hugues.fruchet@st.com>,
	"Randy Li" <ayaka@soulik.info>
Subject: Re: [PATCH v5 18/22] media: platform: Add Sunxi-Cedrus VPU decoder driver
Date: Tue, 10 Jul 2018 10:42:23 +0200	[thread overview]
Message-ID: <20180710084223.jguogmvlwloi2utf@flea> (raw)
In-Reply-To: <20180710080114.31469-19-paul.kocialkowski@bootlin.com>

[-- Attachment #1: Type: text/plain, Size: 3837 bytes --]

On Tue, Jul 10, 2018 at 10:01:10AM +0200, Paul Kocialkowski wrote:
> +static int cedrus_remove(struct platform_device *pdev)
> +{
> +       struct cedrus_dev *dev = platform_get_drvdata(pdev);
> +
> +       v4l2_info(&dev->v4l2_dev, "Removing " CEDRUS_NAME);

That log is kind of pointless.

> +static void cedrus_hw_set_capabilities(struct cedrus_dev *dev)
> +{
> +	unsigned int engine_version;
> +
> +	engine_version = cedrus_read(dev, VE_VERSION) >> VE_VERSION_SHIFT;
> +
> +	if (engine_version >= 0x1667)
> +		dev->capabilities |= CEDRUS_CAPABILITY_UNTILED;

The version used here would need a define, but I'm wondering if this
is the right solution here. You are using at the same time the version
ID returned by the register and the compatible in various places, and
they are both redundant. If you want to base the capabilities on the
compatible, then you can do it for all of those properties and
capabilities, and if you want to use the version register, then you
don't need all those compatibles but just one.

I think that basing all our capabilities on the compatible makes more
sense, since you need to have access to the registers in order to read
the version register, and this changes from one SoC generation to the
other (for example, keeping the reset line asserted would prevent you
from reading it, and the fact that there is a reset line depends on
the SoC).

> +int cedrus_hw_probe(struct cedrus_dev *dev)
> +{
> +	struct resource *res;
> +	int irq_dec;
> +	int ret;
> +
> +	irq_dec = platform_get_irq(dev->pdev, 0);
> +	if (irq_dec <= 0) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to get IRQ\n");
> +		return -ENXIO;
> +	}

You already have an error code returned by platform_get_irq, there's
no point in masking it and returning -ENXIO. This can even lead to
some bugs, for example when the error code is EPROBE_DEFER.

(and please add a new line there).

> +	ret = devm_request_threaded_irq(dev->dev, irq_dec, cedrus_irq,
> +					cedrus_bh, 0, dev_name(dev->dev),
> +					dev);
> +	if (ret) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to request IRQ\n");
> +		return -ENXIO;
> +	}

Same thing here, you're masking the actual error code.

> +	res = platform_get_resource(dev->pdev, IORESOURCE_MEM, 0);
> +	dev->base = devm_ioremap_resource(dev->dev, res);
> +	if (!dev->base) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to map registers\n");
> +
> +		ret = -EFAULT;

ENOMEM is usually returned in such a case.

> +		goto err_sram;
> +	}
> +
> +	ret = clk_set_rate(dev->mod_clk, CEDRUS_CLOCK_RATE_DEFAULT);
> +	if (ret) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to set clock rate\n");
> +		goto err_sram;
> +	}
> +
> +	ret = clk_prepare_enable(dev->ahb_clk);
> +	if (ret) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to enable AHB clock\n");
> +
> +		ret = -EFAULT;
> +		goto err_sram;

Same thing for the error code.

> +	}
> +
> +	ret = clk_prepare_enable(dev->mod_clk);
> +	if (ret) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to enable MOD clock\n");
> +
> +		ret = -EFAULT;
> +		goto err_ahb_clk;

Ditto.

> +	}
> +
> +	ret = clk_prepare_enable(dev->ram_clk);
> +	if (ret) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to enable RAM clock\n");
> +
> +		ret = -EFAULT;
> +		goto err_mod_clk;

Ditto.

> +	}
> +
> +	ret = reset_control_reset(dev->rstc);
> +	if (ret) {
> +		v4l2_err(&dev->v4l2_dev, "Failed to apply reset\n");
> +
> +		ret = -EFAULT;

Ditto.

There's also a bunch of warnings/checks reported by checkpatch that
should be fixed in the next iteration: the spaces after a cast, the
NULL comparison, macros arguments precedence, parenthesis alignments
issues, etc.)

Thanks!
Maxime

-- 
Maxime Ripard, Bootlin (formerly Free Electrons)
Embedded Linux and Kernel engineering
https://bootlin.com

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 833 bytes --]

  reply	other threads:[~2018-07-10  8:42 UTC|newest]

Thread overview: 52+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-07-10  8:00 [PATCH v5 00/22] Sunxi-Cedrus driver for the Allwinner Video Engine, using media requests Paul Kocialkowski
2018-07-10  8:00 ` [PATCH v5 01/22] v4l2-ctrls: add v4l2_ctrl_request_hdl_find/put/ctrl_find functions Paul Kocialkowski
2018-07-10  8:00 ` [PATCH v5 02/22] fixup! " Paul Kocialkowski
2018-07-10  8:07   ` Geert Uytterhoeven
2018-07-10  8:13     ` Paul Kocialkowski
2018-07-10  8:17       ` Hans Verkuil
2018-07-10  8:21         ` Paul Kocialkowski
2018-07-10  8:00 ` [PATCH v5 03/22] dt-bindings: sram: sunxi: Introduce new A10 binding for system-control Paul Kocialkowski
2018-07-10 14:02   ` Chen-Yu Tsai
2018-07-11  8:34   ` Maxime Ripard
2018-07-10  8:00 ` [PATCH v5 04/22] dt-bindings: sram: sunxi: Add A13, A20, A23 and H3 dedicated bindings Paul Kocialkowski
2018-07-10 14:36   ` Chen-Yu Tsai
2018-07-11  8:46     ` Maxime Ripard
2018-07-10  8:00 ` [PATCH v5 05/22] dt-bindings: sram: sunxi: Populate valid sections compatibles Paul Kocialkowski
2018-07-10 14:47   ` Chen-Yu Tsai
2018-07-11  8:55     ` Maxime Ripard
2018-07-10  8:00 ` [PATCH v5 06/22] soc: sunxi: sram: Add dt match for the A10 system-control compatible Paul Kocialkowski
2018-07-10 14:48   ` Chen-Yu Tsai
2018-07-11  8:35   ` Maxime Ripard
2018-07-10  8:00 ` [PATCH v5 07/22] drivers: soc: sunxi: Add support for the C1 SRAM region Paul Kocialkowski
2018-07-10 14:49   ` Chen-Yu Tsai
2018-07-10  8:01 ` [PATCH v5 08/22] ARM: dts: sun4i-a10: Use system-control compatible Paul Kocialkowski
2018-07-10 14:52   ` Chen-Yu Tsai
2018-07-10 14:58     ` Maxime Ripard
2018-07-10  8:01 ` [PATCH v5 09/22] ARM: dts: sun5i: Use most-qualified system control compatibles Paul Kocialkowski
2018-07-10 14:53   ` [linux-sunxi] " Chen-Yu Tsai
2018-07-11  9:01     ` Maxime Ripard
2018-07-10  8:01 ` [PATCH v5 10/22] ARM: dts: sun7i-a20: " Paul Kocialkowski
2018-07-10 14:54   ` [linux-sunxi] " Chen-Yu Tsai
2018-07-10  8:01 ` [PATCH v5 11/22] ARM: sun5i: Add support for the C1 SRAM region with the SRAM controller Paul Kocialkowski
2018-07-10 14:56   ` Chen-Yu Tsai
2018-07-11  9:08     ` Maxime Ripard
2018-07-10  8:01 ` [PATCH v5 12/22] ARM: sun7i-a20: " Paul Kocialkowski
2018-07-11  9:11   ` Maxime Ripard
2018-07-10  8:01 ` [PATCH v5 13/22] ARM: sun8i-a23-a33: Add SRAM controller node and C1 SRAM region Paul Kocialkowski
2018-07-11  9:14   ` Maxime Ripard
2018-07-10  8:01 ` [PATCH v5 14/22] ARM: sun8i-h3: " Paul Kocialkowski
2018-07-11  9:15   ` Maxime Ripard
2018-07-10  8:01 ` [PATCH v5 15/22] media: v4l: Add definitions for MPEG2 slice format and header metadata Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 16/22] media: v4l: Add definition for Allwinner's MB32-tiled NV12 format Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 17/22] dt-bindings: media: Document bindings for the Sunxi-Cedrus VPU driver Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 18/22] media: platform: Add Sunxi-Cedrus VPU decoder driver Paul Kocialkowski
2018-07-10  8:42   ` Maxime Ripard [this message]
2018-07-24 14:56     ` Paul Kocialkowski
2018-07-10 19:57   ` Ezequiel Garcia
2018-07-13  8:40     ` Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 19/22] ARM: dts: sun5i: Add Video Engine and reserved memory nodes Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 20/22] ARM: dts: sun7i-a20: " Paul Kocialkowski
2018-07-10  9:23   ` Maxime Ripard
2018-07-13  8:28     ` Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 21/22] ARM: dts: sun8i-a33: " Paul Kocialkowski
2018-07-10  8:01 ` [PATCH v5 22/22] ARM: dts: sun8i-h3: " Paul Kocialkowski

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20180710084223.jguogmvlwloi2utf@flea \
    --to=maxime.ripard@bootlin.com \
    --cc=a.hajda@samsung.com \
    --cc=acourbot@chromium.org \
    --cc=akpm@linux-foundation.org \
    --cc=andriy.shevchenko@linux.intel.com \
    --cc=arnd@arndb.de \
    --cc=ayaka@soulik.info \
    --cc=bparrot@ti.com \
    --cc=corbet@lwn.net \
    --cc=davem@davemloft.net \
    --cc=devicetree@vger.kernel.org \
    --cc=geert@linux-m68k.org \
    --cc=gregkh@linuxfoundation.org \
    --cc=hdegoede@redhat.com \
    --cc=hugues.fruchet@st.com \
    --cc=hverkuil@xs4all.nl \
    --cc=icenowy@aosc.io \
    --cc=jacob-chen@iotwrt.com \
    --cc=keiichiw@chromium.org \
    --cc=laurent.pinchart+renesas@ideasonboard.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-media@vger.kernel.org \
    --cc=linux-sunxi@googlegroups.com \
    --cc=marco.franchi@nxp.com \
    --cc=mark.rutland@arm.com \
    --cc=mchehab@kernel.org \
    --cc=narmstrong@baylibre.com \
    --cc=niklas.soderlund+renesas@ragnatech.se \
    --cc=paul.kocialkowski@bootlin.com \
    --cc=posciak@chromium.org \
    --cc=rdunlap@infradead.org \
    --cc=ricardo.ribalda@gmail.com \
    --cc=robh+dt@kernel.org \
    --cc=sakari.ailus@linux.intel.com \
    --cc=samitolvanen@google.com \
    --cc=smitha.t@samsung.com \
    --cc=thomas.petazzoni@bootlin.com \
    --cc=todor.tomov@linaro.org \
    --cc=tom.saeger@oracle.com \
    --cc=wens@csie.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).