devicetree.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: jacopo mondi <jacopo@jmondi.org>
To: Vladimir Zapolskiy <vladimir_zapolskiy@mentor.com>
Cc: mark.rutland@arm.com, devicetree@vger.kernel.org,
	sergei.shtylyov@cogentembedded.com, airlied@linux.ie,
	dri-devel@lists.freedesktop.org, magnus.damm@gmail.com,
	linux-kernel@vger.kernel.org, robh+dt@kernel.org,
	linux-renesas-soc@vger.kernel.org, horms@verge.net.au,
	Jacopo Mondi <jacopo+renesas@jmondi.org>,
	Laurent.pinchart@ideasonboard.com, niklas.soderlund@ragnatech.se,
	geert@linux-m68k.org
Subject: Re: [PATCH v6 2/3] drm: bridge: Add thc63lvd1024 LVDS decoder driver
Date: Tue, 27 Mar 2018 09:30:27 +0200	[thread overview]
Message-ID: <20180327073027.GH27746@w540> (raw)
In-Reply-To: <30381869-9bc8-b6aa-a37a-598d9c8f280d@mentor.com>

HI Vladimir,

On Tue, Mar 27, 2018 at 09:24:28AM +0300, Vladimir Zapolskiy wrote:
> Hi Jacopo,
>
> On 03/16/2018 05:16 PM, Jacopo Mondi wrote:
> > Add DRM bridge driver for Thine THC63LVD1024 LVDS to digital parallel
> > output converter.
> >
> > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
> > Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
> > Reviewed-by: Niklas Söderlund <niklas.soderlund+renesas@ragnatech.se>
> > ---
> >  drivers/gpu/drm/bridge/Kconfig        |   6 +
> >  drivers/gpu/drm/bridge/Makefile       |   1 +
> >  drivers/gpu/drm/bridge/thc63lvd1024.c | 255 ++++++++++++++++++++++++++++++++++
> >  3 files changed, 262 insertions(+)
> >  create mode 100644 drivers/gpu/drm/bridge/thc63lvd1024.c
> >
> > diff --git a/drivers/gpu/drm/bridge/Kconfig b/drivers/gpu/drm/bridge/Kconfig
> > index 3b99d5a..5815a20 100644
> > --- a/drivers/gpu/drm/bridge/Kconfig
> > +++ b/drivers/gpu/drm/bridge/Kconfig
> > @@ -92,6 +92,12 @@ config DRM_SII9234
> >  	  It is an I2C driver, that detects connection of MHL bridge
> >  	  and starts encapsulation of HDMI signal.
> >
> > +config DRM_THINE_THC63LVD1024
> > +	tristate "Thine THC63LVD1024 LVDS decoder bridge"
> > +	depends on OF
> > +	---help---
> > +	  Thine THC63LVD1024 LVDS/parallel converter driver.
> > +
> >  config DRM_TOSHIBA_TC358767
> >  	tristate "Toshiba TC358767 eDP bridge"
> >  	depends on OF
> > diff --git a/drivers/gpu/drm/bridge/Makefile b/drivers/gpu/drm/bridge/Makefile
> > index 373eb28..fd90b16 100644
> > --- a/drivers/gpu/drm/bridge/Makefile
> > +++ b/drivers/gpu/drm/bridge/Makefile
> > @@ -8,6 +8,7 @@ obj-$(CONFIG_DRM_PARADE_PS8622) += parade-ps8622.o
> >  obj-$(CONFIG_DRM_SIL_SII8620) += sil-sii8620.o
> >  obj-$(CONFIG_DRM_SII902X) += sii902x.o
> >  obj-$(CONFIG_DRM_SII9234) += sii9234.o
> > +obj-$(CONFIG_DRM_THINE_THC63LVD1024) += thc63lvd1024.o
> >  obj-$(CONFIG_DRM_TOSHIBA_TC358767) += tc358767.o
> >  obj-$(CONFIG_DRM_ANALOGIX_DP) += analogix/
> >  obj-$(CONFIG_DRM_I2C_ADV7511) += adv7511/
> > diff --git a/drivers/gpu/drm/bridge/thc63lvd1024.c b/drivers/gpu/drm/bridge/thc63lvd1024.c
> > new file mode 100644
> > index 0000000..02a54c2
> > --- /dev/null
> > +++ b/drivers/gpu/drm/bridge/thc63lvd1024.c
> > @@ -0,0 +1,255 @@
> > +// SPDX-License-Identifier: GPL-2.0
> > +/*
> > + * THC63LVD1024 LVDS to parallel data DRM bridge driver.
> > + *
> > + * Copyright (C) 2018 Jacopo Mondi <jacopo+renesas@jmondi.org>
> > + */
> > +
> > +#include <drm/drmP.h>
> > +#include <drm/drm_bridge.h>
> > +#include <drm/drm_panel.h>
> > +
> > +#include <linux/gpio/consumer.h>
> > +#include <linux/of_graph.h>
> > +#include <linux/regulator/consumer.h>
> > +
> > +enum {
> > +	THC63_LVDS_IN0,
> > +	THC63_LVDS_IN1,
> > +	THC63_DIGITAL_OUT0,
> > +	THC63_DIGITAL_OUT1,
> > +};
> > +
> > +static const char * const thc63_reg_names[] = {
> > +	"vcc", "lvcc", "pvcc", "cvcc",
> > +};
> > +
> > +struct thc63_dev {
> > +	struct device *dev;
> > +
> > +	struct regulator *vccs[ARRAY_SIZE(thc63_reg_names)];
> > +
> > +	struct gpio_desc *pdwn;
> > +	struct gpio_desc *oe;
> > +
> > +	struct drm_bridge bridge;
> > +	struct drm_bridge *next;
> > +};
> > +
> > +static inline struct thc63_dev *to_thc63(struct drm_bridge *bridge)
> > +{
> > +	return container_of(bridge, struct thc63_dev, bridge);
> > +}
> > +
> > +static int thc63_attach(struct drm_bridge *bridge)
> > +{
> > +	struct thc63_dev *thc63 = to_thc63(bridge);
> > +
> > +	return drm_bridge_attach(bridge->encoder, thc63->next, bridge);
> > +}
> > +
> > +static void thc63_enable(struct drm_bridge *bridge)
> > +{
> > +	struct thc63_dev *thc63 = to_thc63(bridge);
> > +	struct regulator *vcc;
> > +	int i;
>
> unsigned int i;
>
> > +
> > +	for (i = 0; i < ARRAY_SIZE(thc63->vccs); i++) {
> > +		vcc = thc63->vccs[i];
> > +		if (!vcc)
> > +			continue;
> > +
> > +		if (regulator_enable(vcc))
> > +			goto error_vcc_enable;
> > +	}
> > +
> > +	if (thc63->pdwn)
> > +		gpiod_set_value(thc63->pdwn, 0);
> > +
> > +	if (thc63->oe)
> > +		gpiod_set_value(thc63->oe, 1);
> > +
> > +	return;
> > +
> > +error_vcc_enable:
> > +	dev_err(thc63->dev, "Failed to enable regulator %s\n",
> > +		thc63_reg_names[i]);
> > +
> > +	for (i = i - 1; i >= 0; i--) {
> > +		vcc = thc63->vccs[i];
> > +		if (!vcc)
> > +			continue;
> > +
> > +		regulator_disable(vcc);
> > +	}
> > +}
> > +
> > +static void thc63_disable(struct drm_bridge *bridge)
> > +{
> > +	struct thc63_dev *thc63 = to_thc63(bridge);
> > +	struct regulator *vcc;
> > +	int i;
> > +
> > +	if (thc63->oe)
> > +		gpiod_set_value(thc63->oe, 0);
> > +
> > +	if (thc63->pdwn)
> > +		gpiod_set_value(thc63->pdwn, 1);
> > +
> > +	for (i = ARRAY_SIZE(thc63->vccs) - 1; i >= 0; i--) {
> > +		vcc = thc63->vccs[i];
> > +		if (!vcc)
> > +			continue;
> > +
> > +		if (regulator_disable(vcc))
> > +			dev_dbg(thc63->dev,
> > +				"Failed to disable regulator %s\n",
> > +				thc63_reg_names[i]);
> > +	}
> > +}
> > +
> > +struct drm_bridge_funcs thc63_bridge_func = {
>
> Apparently you missed all my comments from v2 review.
>
I did not :)
v6 was already out when you commented on v2..

> If you like to avoid non-NULL function pointers to the void, please
> use static const storage qualifier.
>
> --
> With best wishes,
> Vladimir
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

  parent reply	other threads:[~2018-03-27  7:30 UTC|newest]

Thread overview: 32+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-03-16 15:16 [PATCH v6 0/3] drm: Add Thine THC63LVD1024 LVDS decoder bridge Jacopo Mondi
2018-03-16 15:16 ` [PATCH v6 1/3] dt-bindings: display: bridge: Document THC63LVD1024 LVDS decoder Jacopo Mondi
2018-03-20 12:43   ` Laurent Pinchart
2018-03-26 12:08     ` jacopo mondi
2018-03-26 22:22     ` Rob Herring
2018-03-27  6:15       ` Vladimir Zapolskiy
2018-03-27  7:12         ` Andrzej Hajda
2018-03-27  7:33           ` jacopo mondi
2018-03-27  8:27             ` Sergei Shtylyov
2018-03-27  8:30               ` Vladimir Zapolskiy
2018-03-27  8:57                 ` jacopo mondi
2018-03-27  9:37                   ` Vladimir Zapolskiy
2018-03-27 10:10                     ` jacopo mondi
2018-03-27 11:03                       ` Vladimir Zapolskiy
2018-03-29 10:02                         ` jacopo mondi
2018-04-02 13:36                         ` Laurent Pinchart
2018-04-03 12:33                           ` jacopo mondi
2018-04-05 16:33                           ` Rob Herring
2018-04-05 18:53                             ` Laurent Pinchart
2018-04-05 21:27                               ` Rob Herring
2018-03-16 15:16 ` [PATCH v6 2/3] drm: bridge: Add thc63lvd1024 LVDS decoder driver Jacopo Mondi
2018-03-20 13:00   ` Laurent Pinchart
2018-03-27  6:24   ` Vladimir Zapolskiy
2018-03-27  7:28     ` Andrzej Hajda
2018-03-27  7:36       ` Geert Uytterhoeven
2018-03-27  8:36         ` Andrzej Hajda
2018-03-27  9:06           ` Geert Uytterhoeven
2018-03-27  9:57       ` Vladimir Zapolskiy
2018-03-27  7:30     ` jacopo mondi [this message]
2018-03-16 15:16 ` [PATCH v6 3/3] arm64: dts: renesas: Add LVDS decoder to R-Car V3M Eagle Jacopo Mondi
2018-03-20 13:01   ` Laurent Pinchart
2018-03-27  6:27     ` Vladimir Zapolskiy

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=20180327073027.GH27746@w540 \
    --to=jacopo@jmondi.org \
    --cc=Laurent.pinchart@ideasonboard.com \
    --cc=airlied@linux.ie \
    --cc=devicetree@vger.kernel.org \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=geert@linux-m68k.org \
    --cc=horms@verge.net.au \
    --cc=jacopo+renesas@jmondi.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux-renesas-soc@vger.kernel.org \
    --cc=magnus.damm@gmail.com \
    --cc=mark.rutland@arm.com \
    --cc=niklas.soderlund@ragnatech.se \
    --cc=robh+dt@kernel.org \
    --cc=sergei.shtylyov@cogentembedded.com \
    --cc=vladimir_zapolskiy@mentor.com \
    /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).