From mboxrd@z Thu Jan 1 00:00:00 1970 From: Tomi Valkeinen Subject: Re: [PATCHv3 19/41] OMAPDSS: panel-dpi: Add DT support Date: Thu, 24 Apr 2014 12:52:42 +0300 Message-ID: <5358DEEA.1000506@ti.com> References: <1390301833-24944-1-git-send-email-tomi.valkeinen@ti.com> <1390301833-24944-20-git-send-email-tomi.valkeinen@ti.com> <20140418155107.GB5354@atomide.com> Mime-Version: 1.0 Content-Type: multipart/signed; micalg=pgp-sha1; protocol="application/pgp-signature"; boundary="FfmEg9E7tL9JeBu8jCgEM6uOUI9u8uE2M" Return-path: In-Reply-To: <20140418155107.GB5354@atomide.com> Sender: linux-omap-owner@vger.kernel.org To: Tony Lindgren , Joachim Eastwood Cc: linux-arm-kernel@lists.infradead.org, linux-omap@vger.kernel.org, linux-fbdev@vger.kernel.org, devicetree@vger.kernel.org, Archit Taneja , Darren Etheridge , Laurent Pinchart , Stefan Roese , Sebastian Reichel , Robert Nelson , "Dr . H . Nikolaus Schaller" , Marek Belisko , Sebastian Reichel , Javier Martinez Canillas , Enric Balletbo Serra , Florian Vaussard List-Id: devicetree@vger.kernel.org --FfmEg9E7tL9JeBu8jCgEM6uOUI9u8uE2M Content-Type: multipart/mixed; boundary="------------000606020709000307030805" This is a multi-part message in MIME format. --------------000606020709000307030805 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable On 18/04/14 18:51, Tony Lindgren wrote: >> + gpio =3D of_get_gpio(node, 0); >> + if (gpio_is_valid(gpio) || gpio =3D=3D -ENOENT) { >> + ddata->enable_gpio =3D gpio; >> + } else { >> + dev_err(&pdev->dev, "failed to parse enable gpio\n"); >> + return gpio; >> + } >=20 > We should set the GPIO polarity based on the OF_GPIO_ACTIVE_LOW like > gpio_backlight_probe_dt is doing.=20 Instead of doing it with the old gpio API, and checking the 'active' flag everywhere, I think we can use the new gpiod API which handles the polarity automatically. I attached prototype patches (based on -rc2) for panel dpi using that approach. It's a bit messier than I'd like, because for non-DT boot we need to request the gpio using the old API, and then convert it to gpio_desc. We can remove that code when all the boards use DT. I've compiled tested this only, as I don't have DPI panels I could use. I did try similar approach for TFP410, and it seemed to work fine. Tomi --------------000606020709000307030805 Content-Type: text/x-patch; name="0001-panel-dpi-use-gpiod-for-enable-gpio.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0001-panel-dpi-use-gpiod-for-enable-gpio.patch" =46rom f2280114f0eb814370664f24eba8ffee8280c840 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Thu, 24 Apr 2014 12:36:52 +0300 Subject: [PATCH 1/3] panel-dpi: use gpiod for enable gpio --- drivers/video/fbdev/omap2/displays-new/panel-dpi.c | 32 +++++++++++++---= ------ 1 file changed, 19 insertions(+), 13 deletions(-) diff --git a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c b/drivers= /video/fbdev/omap2/displays-new/panel-dpi.c index 5f8f7e7c81ef..d379dec3bd4a 100644 --- a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c +++ b/drivers/video/fbdev/omap2/displays-new/panel-dpi.c @@ -25,8 +25,10 @@ struct panel_drv_data { =20 struct omap_video_timings videomode; =20 + /* used for non-DT boot, to be removed */ int backlight_gpio; - int enable_gpio; + + struct gpio_desc *enable_gpio; }; =20 #define to_panel_data(p) container_of(p, struct panel_drv_data, dssdev) @@ -77,8 +79,8 @@ static int panel_dpi_enable(struct omap_dss_device *dss= dev) if (r) return r; =20 - if (gpio_is_valid(ddata->enable_gpio)) - gpio_set_value_cansleep(ddata->enable_gpio, 1); + if (ddata->enable_gpio) + gpiod_set_value_cansleep(ddata->enable_gpio, 1); =20 if (gpio_is_valid(ddata->backlight_gpio)) gpio_set_value_cansleep(ddata->backlight_gpio, 1); @@ -96,8 +98,8 @@ static void panel_dpi_disable(struct omap_dss_device *d= ssdev) if (!omapdss_device_is_enabled(dssdev)) return; =20 - if (gpio_is_valid(ddata->enable_gpio)) - gpio_set_value_cansleep(ddata->enable_gpio, 0); + if (ddata->enable_gpio) + gpiod_set_value_cansleep(ddata->enable_gpio, 0); =20 if (gpio_is_valid(ddata->backlight_gpio)) gpio_set_value_cansleep(ddata->backlight_gpio, 0); @@ -156,6 +158,7 @@ static int panel_dpi_probe_pdata(struct platform_devi= ce *pdev) struct panel_drv_data *ddata =3D platform_get_drvdata(pdev); struct omap_dss_device *dssdev, *in; struct videomode vm; + int r; =20 pdata =3D dev_get_platdata(&pdev->dev); =20 @@ -176,10 +179,20 @@ static int panel_dpi_probe_pdata(struct platform_de= vice *pdev) dssdev =3D &ddata->dssdev; dssdev->name =3D pdata->name; =20 - ddata->enable_gpio =3D pdata->enable_gpio; + r =3D devm_gpio_request_one(&pdev->dev, pdata->enable_gpio, + GPIOF_OUT_INIT_LOW, "panel enable"); + if (r) + goto err_gpio; + + ddata->enable_gpio =3D gpio_to_desc(pdata->enable_gpio); + ddata->backlight_gpio =3D pdata->backlight_gpio; =20 return 0; + +err_gpio: + omap_dss_put_device(ddata->in); + return r; } =20 static int panel_dpi_probe(struct platform_device *pdev) @@ -202,13 +215,6 @@ static int panel_dpi_probe(struct platform_device *p= dev) return -ENODEV; } =20 - if (gpio_is_valid(ddata->enable_gpio)) { - r =3D devm_gpio_request_one(&pdev->dev, ddata->enable_gpio, - GPIOF_OUT_INIT_LOW, "panel enable"); - if (r) - goto err_gpio; - } - if (gpio_is_valid(ddata->backlight_gpio)) { r =3D devm_gpio_request_one(&pdev->dev, ddata->backlight_gpio, GPIOF_OUT_INIT_LOW, "panel backlight"); --=20 1.9.1 --------------000606020709000307030805 Content-Type: text/x-patch; name="0002-OMAPDSS-panel-dpi-Add-DT-support.patch" Content-Transfer-Encoding: quoted-printable Content-Disposition: attachment; filename="0002-OMAPDSS-panel-dpi-Add-DT-support.patch" =46rom fe2a85da34499fab70212c4cc5870378678da709 Mon Sep 17 00:00:00 2001 From: Tomi Valkeinen Date: Thu, 16 May 2013 15:14:16 +0300 Subject: [PATCH 2/3] OMAPDSS: panel-dpi: Add DT support Add DT support for panel-dpi. Signed-off-by: Tomi Valkeinen Reviewed-by: Archit Taneja --- drivers/video/fbdev/omap2/displays-new/panel-dpi.c | 59 ++++++++++++++++= +++++- 1 file changed, 58 insertions(+), 1 deletion(-) diff --git a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c b/drivers= /video/fbdev/omap2/displays-new/panel-dpi.c index d379dec3bd4a..dca6b10d1157 100644 --- a/drivers/video/fbdev/omap2/displays-new/panel-dpi.c +++ b/drivers/video/fbdev/omap2/displays-new/panel-dpi.c @@ -13,9 +13,12 @@ #include #include #include +#include +#include =20 #include