From mboxrd@z Thu Jan 1 00:00:00 1970 From: Sebastian Reichel Subject: Re: [PATCH v2 48/49] drm/omap: Remove TFP410 and DVI connector drivers Date: Sat, 9 Feb 2019 04:26:59 +0100 Message-ID: <20190209032659.q65urvuqrmcs3och@earth.universe> References: <20190111035120.20668-1-laurent.pinchart@ideasonboard.com> <20190111035120.20668-49-laurent.pinchart@ideasonboard.com> Mime-Version: 1.0 Content-Type: multipart/mixed; boundary="===============1233732819==" Return-path: Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by gabe.freedesktop.org (Postfix) with ESMTPS id 637D26E42A for ; Sat, 9 Feb 2019 18:57:41 +0000 (UTC) In-Reply-To: <20190111035120.20668-49-laurent.pinchart@ideasonboard.com> List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" To: Laurent Pinchart Cc: Tomi Valkeinen , dri-devel@lists.freedesktop.org List-Id: dri-devel@lists.freedesktop.org --===============1233732819== Content-Type: multipart/signed; micalg=pgp-sha512; protocol="application/pgp-signature"; boundary="zuc7eghtvhzyz4cz" Content-Disposition: inline --zuc7eghtvhzyz4cz Content-Type: text/plain; charset=us-ascii Content-Disposition: inline Content-Transfer-Encoding: quoted-printable Hi, On Fri, Jan 11, 2019 at 05:51:19AM +0200, Laurent Pinchart wrote: > Those components are supported by the drm_bridge infrastructure, remove > the omapdrm-specific driver. >=20 > Signed-off-by: Laurent Pinchart > Reviewed-by: Sebastian Reichel > --- Tested-by: Sebastian Reichel -- Sebastian > drivers/gpu/drm/omapdrm/displays/Kconfig | 11 - > drivers/gpu/drm/omapdrm/displays/Makefile | 2 - > .../gpu/drm/omapdrm/displays/connector-dvi.c | 293 ------------------ > .../gpu/drm/omapdrm/displays/encoder-tfp410.c | 140 --------- > .../gpu/drm/omapdrm/dss/omapdss-boot-init.c | 2 - > 5 files changed, 448 deletions(-) > delete mode 100644 drivers/gpu/drm/omapdrm/displays/connector-dvi.c > delete mode 100644 drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c >=20 > diff --git a/drivers/gpu/drm/omapdrm/displays/Kconfig b/drivers/gpu/drm/o= mapdrm/displays/Kconfig > index a349cb61961e..38d066ac966e 100644 > --- a/drivers/gpu/drm/omapdrm/displays/Kconfig > +++ b/drivers/gpu/drm/omapdrm/displays/Kconfig > @@ -6,23 +6,12 @@ config DRM_OMAP_ENCODER_OPA362 > Driver for OPA362 external analog TV amplifier controlled > through a GPIO. > =20 > -config DRM_OMAP_ENCODER_TFP410 > - tristate "TFP410 DPI to DVI Encoder" > - help > - Driver for TFP410 DPI to DVI encoder. > - > config DRM_OMAP_ENCODER_TPD12S015 > tristate "TPD12S015 HDMI ESD protection and level shifter" > help > Driver for TPD12S015, which offers HDMI ESD protection and level > shifting. > =20 > -config DRM_OMAP_CONNECTOR_DVI > - tristate "DVI Connector" > - depends on I2C > - help > - Driver for a generic DVI connector. > - > config DRM_OMAP_CONNECTOR_HDMI > tristate "HDMI Connector" > help > diff --git a/drivers/gpu/drm/omapdrm/displays/Makefile b/drivers/gpu/drm/= omapdrm/displays/Makefile > index d99659e1381b..da1d5321ef50 100644 > --- a/drivers/gpu/drm/omapdrm/displays/Makefile > +++ b/drivers/gpu/drm/omapdrm/displays/Makefile > @@ -1,8 +1,6 @@ > # SPDX-License-Identifier: GPL-2.0 > obj-$(CONFIG_DRM_OMAP_ENCODER_OPA362) +=3D encoder-opa362.o > -obj-$(CONFIG_DRM_OMAP_ENCODER_TFP410) +=3D encoder-tfp410.o > obj-$(CONFIG_DRM_OMAP_ENCODER_TPD12S015) +=3D encoder-tpd12s015.o > -obj-$(CONFIG_DRM_OMAP_CONNECTOR_DVI) +=3D connector-dvi.o > obj-$(CONFIG_DRM_OMAP_CONNECTOR_HDMI) +=3D connector-hdmi.o > obj-$(CONFIG_DRM_OMAP_CONNECTOR_ANALOG_TV) +=3D connector-analog-tv.o > obj-$(CONFIG_DRM_OMAP_PANEL_DPI) +=3D panel-dpi.o > diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c b/drivers/g= pu/drm/omapdrm/displays/connector-dvi.c > deleted file mode 100644 > index fa3a69bf8a04..000000000000 > --- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c > +++ /dev/null > @@ -1,293 +0,0 @@ > -/* > - * Generic DVI Connector driver > - * > - * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ > - * Author: Tomi Valkeinen > - * > - * This program is free software; you can redistribute it and/or modify = it > - * under the terms of the GNU General Public License version 2 as publis= hed by > - * the Free Software Foundation. > - */ > - > -#include > -#include > -#include > -#include > -#include > - > -#include > - > -#include "../dss/omapdss.h" > - > -struct panel_drv_data { > - struct omap_dss_device dssdev; > - > - struct i2c_adapter *i2c_adapter; > - > - struct gpio_desc *hpd_gpio; > - > - void (*hpd_cb)(void *cb_data, enum drm_connector_status status); > - void *hpd_cb_data; > - bool hpd_enabled; > - /* mutex for hpd fields above */ > - struct mutex hpd_lock; > -}; > - > -#define to_panel_data(x) container_of(x, struct panel_drv_data, dssdev) > - > -static int dvic_connect(struct omap_dss_device *src, > - struct omap_dss_device *dst) > -{ > - return 0; > -} > - > -static void dvic_disconnect(struct omap_dss_device *src, > - struct omap_dss_device *dst) > -{ > -} > - > -static int dvic_ddc_read(struct i2c_adapter *adapter, > - unsigned char *buf, u16 count, u8 offset) > -{ > - int r, retries; > - > - for (retries =3D 3; retries > 0; retries--) { > - struct i2c_msg msgs[] =3D { > - { > - .addr =3D DDC_ADDR, > - .flags =3D 0, > - .len =3D 1, > - .buf =3D &offset, > - }, { > - .addr =3D DDC_ADDR, > - .flags =3D I2C_M_RD, > - .len =3D count, > - .buf =3D buf, > - } > - }; > - > - r =3D i2c_transfer(adapter, msgs, 2); > - if (r =3D=3D 2) > - return 0; > - > - if (r !=3D -EAGAIN) > - break; > - } > - > - return r < 0 ? r : -EIO; > -} > - > -static int dvic_read_edid(struct omap_dss_device *dssdev, > - u8 *edid, int len) > -{ > - struct panel_drv_data *ddata =3D to_panel_data(dssdev); > - int r, l, bytes_read; > - > - l =3D min(EDID_LENGTH, len); > - r =3D dvic_ddc_read(ddata->i2c_adapter, edid, l, 0); > - if (r) > - return r; > - > - bytes_read =3D l; > - > - /* if there are extensions, read second block */ > - if (len > EDID_LENGTH && edid[0x7e] > 0) { > - l =3D min(EDID_LENGTH, len - EDID_LENGTH); > - > - r =3D dvic_ddc_read(ddata->i2c_adapter, edid + EDID_LENGTH, > - l, EDID_LENGTH); > - if (r) > - return r; > - > - bytes_read +=3D l; > - } > - > - return bytes_read; > -} > - > -static bool dvic_detect(struct omap_dss_device *dssdev) > -{ > - struct panel_drv_data *ddata =3D to_panel_data(dssdev); > - unsigned char out; > - int r; > - > - if (ddata->hpd_gpio) > - return gpiod_get_value_cansleep(ddata->hpd_gpio); > - > - if (!ddata->i2c_adapter) > - return true; > - > - r =3D dvic_ddc_read(ddata->i2c_adapter, &out, 1, 0); > - > - return r =3D=3D 0; > -} > - > -static void dvic_register_hpd_cb(struct omap_dss_device *dssdev, > - void (*cb)(void *cb_data, > - enum drm_connector_status status), > - void *cb_data) > -{ > - struct panel_drv_data *ddata =3D to_panel_data(dssdev); > - > - mutex_lock(&ddata->hpd_lock); > - ddata->hpd_cb =3D cb; > - ddata->hpd_cb_data =3D cb_data; > - mutex_unlock(&ddata->hpd_lock); > -} > - > -static void dvic_unregister_hpd_cb(struct omap_dss_device *dssdev) > -{ > - struct panel_drv_data *ddata =3D to_panel_data(dssdev); > - > - mutex_lock(&ddata->hpd_lock); > - ddata->hpd_cb =3D NULL; > - ddata->hpd_cb_data =3D NULL; > - mutex_unlock(&ddata->hpd_lock); > -} > - > -static const struct omap_dss_device_ops dvic_ops =3D { > - .connect =3D dvic_connect, > - .disconnect =3D dvic_disconnect, > - > - .read_edid =3D dvic_read_edid, > - .detect =3D dvic_detect, > - > - .register_hpd_cb =3D dvic_register_hpd_cb, > - .unregister_hpd_cb =3D dvic_unregister_hpd_cb, > -}; > - > -static irqreturn_t dvic_hpd_isr(int irq, void *data) > -{ > - struct panel_drv_data *ddata =3D data; > - > - mutex_lock(&ddata->hpd_lock); > - if (ddata->hpd_enabled && ddata->hpd_cb) { > - enum drm_connector_status status; > - > - if (dvic_detect(&ddata->dssdev)) > - status =3D connector_status_connected; > - else > - status =3D connector_status_disconnected; > - > - ddata->hpd_cb(ddata->hpd_cb_data, status); > - } > - mutex_unlock(&ddata->hpd_lock); > - > - return IRQ_HANDLED; > -} > - > -static int dvic_probe_of(struct platform_device *pdev) > -{ > - struct panel_drv_data *ddata =3D platform_get_drvdata(pdev); > - struct device_node *node =3D pdev->dev.of_node; > - struct device_node *adapter_node; > - struct i2c_adapter *adapter; > - struct gpio_desc *gpio; > - int r; > - > - gpio =3D devm_gpiod_get_optional(&pdev->dev, "hpd", GPIOD_IN); > - if (IS_ERR(gpio)) { > - dev_err(&pdev->dev, "failed to parse HPD gpio\n"); > - return PTR_ERR(gpio); > - } > - > - ddata->hpd_gpio =3D gpio; > - > - mutex_init(&ddata->hpd_lock); > - > - if (ddata->hpd_gpio) { > - r =3D devm_request_threaded_irq(&pdev->dev, > - gpiod_to_irq(ddata->hpd_gpio), NULL, dvic_hpd_isr, > - IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING | IRQF_ONESHOT, > - "DVI HPD", ddata); > - if (r) > - return r; > - } > - > - adapter_node =3D of_parse_phandle(node, "ddc-i2c-bus", 0); > - if (adapter_node) { > - adapter =3D of_get_i2c_adapter_by_node(adapter_node); > - of_node_put(adapter_node); > - if (adapter =3D=3D NULL) { > - dev_err(&pdev->dev, "failed to parse ddc-i2c-bus\n"); > - return -EPROBE_DEFER; > - } > - > - ddata->i2c_adapter =3D adapter; > - } > - > - return 0; > -} > - > -static int dvic_probe(struct platform_device *pdev) > -{ > - struct panel_drv_data *ddata; > - struct omap_dss_device *dssdev; > - int r; > - > - ddata =3D devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL); > - if (!ddata) > - return -ENOMEM; > - > - platform_set_drvdata(pdev, ddata); > - > - r =3D dvic_probe_of(pdev); > - if (r) > - return r; > - > - dssdev =3D &ddata->dssdev; > - dssdev->ops =3D &dvic_ops; > - dssdev->dev =3D &pdev->dev; > - dssdev->type =3D OMAP_DISPLAY_TYPE_DVI; > - dssdev->display =3D true; > - dssdev->owner =3D THIS_MODULE; > - dssdev->of_ports =3D BIT(0); > - > - if (ddata->hpd_gpio) > - dssdev->ops_flags |=3D OMAP_DSS_DEVICE_OP_DETECT > - | OMAP_DSS_DEVICE_OP_HPD; > - if (ddata->i2c_adapter) > - dssdev->ops_flags |=3D OMAP_DSS_DEVICE_OP_DETECT > - | OMAP_DSS_DEVICE_OP_EDID; > - > - omapdss_display_init(dssdev); > - omapdss_device_register(dssdev); > - > - return 0; > -} > - > -static int __exit dvic_remove(struct platform_device *pdev) > -{ > - struct panel_drv_data *ddata =3D platform_get_drvdata(pdev); > - > - omapdss_device_unregister(&ddata->dssdev); > - > - i2c_put_adapter(ddata->i2c_adapter); > - > - mutex_destroy(&ddata->hpd_lock); > - > - return 0; > -} > - > -static const struct of_device_id dvic_of_match[] =3D { > - { .compatible =3D "omapdss,dvi-connector", }, > - {}, > -}; > - > -MODULE_DEVICE_TABLE(of, dvic_of_match); > - > -static struct platform_driver dvi_connector_driver =3D { > - .probe =3D dvic_probe, > - .remove =3D __exit_p(dvic_remove), > - .driver =3D { > - .name =3D "connector-dvi", > - .of_match_table =3D dvic_of_match, > - .suppress_bind_attrs =3D true, > - }, > -}; > - > -module_platform_driver(dvi_connector_driver); > - > -MODULE_AUTHOR("Tomi Valkeinen "); > -MODULE_DESCRIPTION("Generic DVI Connector driver"); > -MODULE_LICENSE("GPL"); > diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c b/drivers/= gpu/drm/omapdrm/displays/encoder-tfp410.c > deleted file mode 100644 > index de954182c4bb..000000000000 > --- a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c > +++ /dev/null > @@ -1,140 +0,0 @@ > -/* > - * TFP410 DPI-to-DVI encoder driver > - * > - * Copyright (C) 2013 Texas Instruments Incorporated - http://www.ti.com/ > - * Author: Tomi Valkeinen > - * > - * This program is free software; you can redistribute it and/or modify = it > - * under the terms of the GNU General Public License version 2 as publis= hed by > - * the Free Software Foundation. > - */ > - > -#include > -#include > -#include > -#include > - > -#include "../dss/omapdss.h" > - > -struct panel_drv_data { > - struct omap_dss_device dssdev; > - > - struct gpio_desc *pd_gpio; > -}; > - > -#define to_panel_data(x) container_of(x, struct panel_drv_data, dssdev) > - > -static int tfp410_connect(struct omap_dss_device *src, > - struct omap_dss_device *dst) > -{ > - return omapdss_device_connect(dst->dss, dst, dst->next); > -} > - > -static void tfp410_disconnect(struct omap_dss_device *src, > - struct omap_dss_device *dst) > -{ > - omapdss_device_disconnect(dst, dst->next); > -} > - > -static void tfp410_enable(struct omap_dss_device *dssdev) > -{ > - struct panel_drv_data *ddata =3D to_panel_data(dssdev); > - > - if (ddata->pd_gpio) > - gpiod_set_value_cansleep(ddata->pd_gpio, 0); > -} > - > -static void tfp410_disable(struct omap_dss_device *dssdev) > -{ > - struct panel_drv_data *ddata =3D to_panel_data(dssdev); > - > - if (ddata->pd_gpio) > - gpiod_set_value_cansleep(ddata->pd_gpio, 0); > -} > - > -static const struct omap_dss_device_ops tfp410_ops =3D { > - .connect =3D tfp410_connect, > - .disconnect =3D tfp410_disconnect, > - .enable =3D tfp410_enable, > - .disable =3D tfp410_disable, > -}; > - > -static int tfp410_probe(struct platform_device *pdev) > -{ > - struct panel_drv_data *ddata; > - struct omap_dss_device *dssdev; > - struct gpio_desc *gpio; > - > - ddata =3D devm_kzalloc(&pdev->dev, sizeof(*ddata), GFP_KERNEL); > - if (!ddata) > - return -ENOMEM; > - > - platform_set_drvdata(pdev, ddata); > - > - /* Powerdown GPIO */ > - gpio =3D devm_gpiod_get_optional(&pdev->dev, "powerdown", GPIOD_OUT_HIG= H); > - if (IS_ERR(gpio)) { > - dev_err(&pdev->dev, "failed to parse powerdown gpio\n"); > - return PTR_ERR(gpio); > - } > - > - ddata->pd_gpio =3D gpio; > - > - dssdev =3D &ddata->dssdev; > - dssdev->ops =3D &tfp410_ops; > - dssdev->dev =3D &pdev->dev; > - dssdev->type =3D OMAP_DISPLAY_TYPE_DPI; > - dssdev->owner =3D THIS_MODULE; > - dssdev->of_ports =3D BIT(1) | BIT(0); > - dssdev->bus_flags =3D DRM_BUS_FLAG_DE_HIGH > - | DRM_BUS_FLAG_SYNC_DRIVE_POSEDGE > - | DRM_BUS_FLAG_PIXDATA_DRIVE_POSEDGE; > - > - dssdev->next =3D omapdss_of_find_connected_device(pdev->dev.of_node, 1); > - if (IS_ERR(dssdev->next)) { > - if (PTR_ERR(dssdev->next) !=3D -EPROBE_DEFER) > - dev_err(&pdev->dev, "failed to find video sink\n"); > - return PTR_ERR(dssdev->next); > - } > - > - omapdss_device_register(dssdev); > - > - return 0; > -} > - > -static int __exit tfp410_remove(struct platform_device *pdev) > -{ > - struct panel_drv_data *ddata =3D platform_get_drvdata(pdev); > - struct omap_dss_device *dssdev =3D &ddata->dssdev; > - > - if (dssdev->next) > - omapdss_device_put(dssdev->next); > - omapdss_device_unregister(&ddata->dssdev); > - > - tfp410_disable(dssdev); > - > - return 0; > -} > - > -static const struct of_device_id tfp410_of_match[] =3D { > - { .compatible =3D "omapdss,ti,tfp410", }, > - {}, > -}; > - > -MODULE_DEVICE_TABLE(of, tfp410_of_match); > - > -static struct platform_driver tfp410_driver =3D { > - .probe =3D tfp410_probe, > - .remove =3D __exit_p(tfp410_remove), > - .driver =3D { > - .name =3D "tfp410", > - .of_match_table =3D tfp410_of_match, > - .suppress_bind_attrs =3D true, > - }, > -}; > - > -module_platform_driver(tfp410_driver); > - > -MODULE_AUTHOR("Tomi Valkeinen "); > -MODULE_DESCRIPTION("TFP410 DPI to DVI encoder driver"); > -MODULE_LICENSE("GPL"); > diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c b/drivers/gp= u/drm/omapdrm/dss/omapdss-boot-init.c > index 309b7b453e98..dfeaea639920 100644 > --- a/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c > +++ b/drivers/gpu/drm/omapdrm/dss/omapdss-boot-init.c > @@ -186,7 +186,6 @@ static const struct of_device_id omapdss_of_match[] _= _initconst =3D { > =20 > static const struct of_device_id omapdss_of_fixups_whitelist[] __initcon= st =3D { > { .compatible =3D "composite-video-connector" }, > - { .compatible =3D "dvi-connector" }, > { .compatible =3D "hdmi-connector" }, > { .compatible =3D "lgphilips,lb035q02" }, > { .compatible =3D "nec,nl8048hl11" }, > @@ -196,7 +195,6 @@ static const struct of_device_id omapdss_of_fixups_wh= itelist[] __initconst =3D { > { .compatible =3D "sony,acx565akm" }, > { .compatible =3D "svideo-connector" }, > { .compatible =3D "ti,opa362" }, > - { .compatible =3D "ti,tfp410" }, > { .compatible =3D "ti,tpd12s015" }, > { .compatible =3D "toppoly,td028ttec1" }, > { .compatible =3D "tpo,td028ttec1" }, > --=20 > Regards, >=20 > Laurent Pinchart >=20 > _______________________________________________ > dri-devel mailing list > dri-devel@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/dri-devel --zuc7eghtvhzyz4cz Content-Type: application/pgp-signature; name="signature.asc" -----BEGIN PGP SIGNATURE----- iQIzBAEBCgAdFiEE72YNB0Y/i3JqeVQT2O7X88g7+poFAlxeSIMACgkQ2O7X88g7 +ppg1A/+KWXipSJdK9pNb3NzVyVy+V+yUOuqhRFHtooCQ58q2J8KSkNyiSahN8xF 3EiKW8pl942UNGm9lCqxntXWnLy0eb+eXdmvzbqzMpbB8H1L1oRG6FqA7UIalSNG ME0mi7WvSShzEXGP/05hIIn9ZYzhH3TYE8+WCocAUOm2qlTAkFoipnJNwQ/e9KJC ZjOB0T9eil51hbtPDfei4BMqPjAOwpQx9sCwsDQI2teFe/ZrsCKeAfrUtV+KRRYV XH5MFK7j6+86UPf4Wu6DtUYqAY1xrnAOf6zlUca/58JDSMKeyiI6t6SEe1SrNj7i s7Iye9xKuzxZ7otaL7P6BUh1h7KS3mRaSPEi/1qrhkERGMSX9efFKgrlqOgo0StK DuC9ueH0UGufXWxlIFrxq/KE1TzK6sno/QAcGGBOcE1/QF7fgM8e3L+n+k7Y3vd/ zLSB14czL7QY156Ku7Ja2bzo4qHfW/disPTmLJE9pPrHFISCCAd5pPiRlt3ro+cV aqfkFnxS+gTP5Nt0MQjVR2OGVhAU6kFz4+zb/IOUVD71ArcLgbRyQeXJQxLB5fYc gRX8LMZMt0hfnQgnHbirtfUjhGB1TtNtMoyz/kqwm+YsJV4st8na9wYo0bHCMqGi 1VlCPVI/4uRCXl/E6ryYFKE0l6oXvRX24QbfQOWRpxsw+aTDMLI= =GJ7J -----END PGP SIGNATURE----- --zuc7eghtvhzyz4cz-- --===============1233732819== Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 Content-Disposition: inline X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18KZHJpLWRldmVs IG1haWxpbmcgbGlzdApkcmktZGV2ZWxAbGlzdHMuZnJlZWRlc2t0b3Aub3JnCmh0dHBzOi8vbGlz dHMuZnJlZWRlc2t0b3Aub3JnL21haWxtYW4vbGlzdGluZm8vZHJpLWRldmVsCg== --===============1233732819==--