Hi Jyri,

Thank you for the patch.

On Wed, Dec 04, 2019 at 07:53:10PM +0200, Jyri Sarha wrote:
> Remove obsolete bundled tfp410 driver with its "ti,tilcdc,tfp410"
> devicetree binding. No platform has ever used this driver in the
> mainline kernel and if anybody connects tfp410 to tilcdc he or she
> should use the generic drm tfp410 bridge driver.
> 
> Signed-off-by: Jyri Sarha <[email protected]>

Reviewed-by: Laurent Pinchart <[email protected]>

> ---
>  .../bindings/display/tilcdc/tfp410.txt        |  21 -
>  drivers/gpu/drm/tilcdc/Makefile               |   1 -
>  drivers/gpu/drm/tilcdc/tilcdc_drv.c           |   3 -
>  drivers/gpu/drm/tilcdc/tilcdc_tfp410.c        | 379 ------------------
>  drivers/gpu/drm/tilcdc/tilcdc_tfp410.h        |  15 -
>  5 files changed, 419 deletions(-)
>  delete mode 100644 
> Documentation/devicetree/bindings/display/tilcdc/tfp410.txt
>  delete mode 100644 drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
>  delete mode 100644 drivers/gpu/drm/tilcdc/tilcdc_tfp410.h
> 
> diff --git a/Documentation/devicetree/bindings/display/tilcdc/tfp410.txt 
> b/Documentation/devicetree/bindings/display/tilcdc/tfp410.txt
> deleted file mode 100644
> index a58ae7756fc6..000000000000
> --- a/Documentation/devicetree/bindings/display/tilcdc/tfp410.txt
> +++ /dev/null
> @@ -1,21 +0,0 @@
> -Device-Tree bindings for tilcdc DRM TFP410 output driver
> -
> -Required properties:
> - - compatible: value should be "ti,tilcdc,tfp410".
> - - i2c: the phandle for the i2c device to use for DDC
> -
> -Recommended properties:
> - - pinctrl-names, pinctrl-0: the pincontrol settings to configure
> -   muxing properly for pins that connect to TFP410 device
> - - powerdn-gpio: the powerdown GPIO, pulled low to power down the
> -   TFP410 device (for DPMS_OFF)
> -
> -Example:
> -
> -     dvicape {
> -             compatible = "ti,tilcdc,tfp410";
> -             i2c = <&i2c2>;
> -             pinctrl-names = "default";
> -             pinctrl-0 = <&bone_dvi_cape_dvi_00A1_pins>;
> -             powerdn-gpio = <&gpio2 31 0>;
> -     };
> diff --git a/drivers/gpu/drm/tilcdc/Makefile b/drivers/gpu/drm/tilcdc/Makefile
> index 87f9480e43b0..662bf3a348c9 100644
> --- a/drivers/gpu/drm/tilcdc/Makefile
> +++ b/drivers/gpu/drm/tilcdc/Makefile
> @@ -6,7 +6,6 @@ endif
>  tilcdc-y := \
>       tilcdc_plane.o \
>       tilcdc_crtc.o \
> -     tilcdc_tfp410.o \
>       tilcdc_panel.o \
>       tilcdc_external.o \
>       tilcdc_drv.o
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c 
> b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> index 2a9e67597375..20745db863ff 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
> @@ -30,7 +30,6 @@
>  #include "tilcdc_external.h"
>  #include "tilcdc_panel.h"
>  #include "tilcdc_regs.h"
> -#include "tilcdc_tfp410.h"
>  
>  static LIST_HEAD(module_list);
>  
> @@ -649,7 +648,6 @@ static struct platform_driver tilcdc_platform_driver = {
>  static int __init tilcdc_drm_init(void)
>  {
>       DBG("init");
> -     tilcdc_tfp410_init();
>       tilcdc_panel_init();
>       return platform_driver_register(&tilcdc_platform_driver);
>  }
> @@ -659,7 +657,6 @@ static void __exit tilcdc_drm_fini(void)
>       DBG("fini");
>       platform_driver_unregister(&tilcdc_platform_driver);
>       tilcdc_panel_fini();
> -     tilcdc_tfp410_fini();
>  }
>  
>  module_init(tilcdc_drm_init);
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c 
> b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> deleted file mode 100644
> index 530edb3b51cc..000000000000
> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.c
> +++ /dev/null
> @@ -1,379 +0,0 @@
> -// SPDX-License-Identifier: GPL-2.0-only
> -/*
> - * Copyright (C) 2012 Texas Instruments
> - * Author: Rob Clark <[email protected]>
> - */
> -
> -#include <linux/gpio.h>
> -#include <linux/mod_devicetable.h>
> -#include <linux/of_gpio.h>
> -#include <linux/pinctrl/consumer.h>
> -#include <linux/platform_device.h>
> -
> -#include <drm/drm_atomic_helper.h>
> -#include <drm/drm_encoder.h>
> -#include <drm/drm_modeset_helper_vtables.h>
> -#include <drm/drm_probe_helper.h>
> -
> -#include "tilcdc_drv.h"
> -#include "tilcdc_tfp410.h"
> -
> -struct tfp410_module {
> -     struct tilcdc_module base;
> -     struct i2c_adapter *i2c;
> -     int gpio;
> -};
> -#define to_tfp410_module(x) container_of(x, struct tfp410_module, base)
> -
> -
> -static const struct tilcdc_panel_info dvi_info = {
> -             .ac_bias                = 255,
> -             .ac_bias_intrpt         = 0,
> -             .dma_burst_sz           = 16,
> -             .bpp                    = 16,
> -             .fdd                    = 0x80,
> -             .tft_alt_mode           = 0,
> -             .sync_edge              = 0,
> -             .sync_ctrl              = 1,
> -             .raster_order           = 0,
> -};
> -
> -/*
> - * Encoder:
> - */
> -
> -struct tfp410_encoder {
> -     struct drm_encoder base;
> -     struct tfp410_module *mod;
> -     int dpms;
> -};
> -#define to_tfp410_encoder(x) container_of(x, struct tfp410_encoder, base)
> -
> -static void tfp410_encoder_dpms(struct drm_encoder *encoder, int mode)
> -{
> -     struct tfp410_encoder *tfp410_encoder = to_tfp410_encoder(encoder);
> -
> -     if (tfp410_encoder->dpms == mode)
> -             return;
> -
> -     if (mode == DRM_MODE_DPMS_ON) {
> -             DBG("Power on");
> -             gpio_direction_output(tfp410_encoder->mod->gpio, 1);
> -     } else {
> -             DBG("Power off");
> -             gpio_direction_output(tfp410_encoder->mod->gpio, 0);
> -     }
> -
> -     tfp410_encoder->dpms = mode;
> -}
> -
> -static void tfp410_encoder_prepare(struct drm_encoder *encoder)
> -{
> -     tfp410_encoder_dpms(encoder, DRM_MODE_DPMS_OFF);
> -}
> -
> -static void tfp410_encoder_commit(struct drm_encoder *encoder)
> -{
> -     tfp410_encoder_dpms(encoder, DRM_MODE_DPMS_ON);
> -}
> -
> -static void tfp410_encoder_mode_set(struct drm_encoder *encoder,
> -             struct drm_display_mode *mode,
> -             struct drm_display_mode *adjusted_mode)
> -{
> -     /* nothing needed */
> -}
> -
> -static const struct drm_encoder_funcs tfp410_encoder_funcs = {
> -             .destroy        = drm_encoder_cleanup,
> -};
> -
> -static const struct drm_encoder_helper_funcs tfp410_encoder_helper_funcs = {
> -             .dpms           = tfp410_encoder_dpms,
> -             .prepare        = tfp410_encoder_prepare,
> -             .commit         = tfp410_encoder_commit,
> -             .mode_set       = tfp410_encoder_mode_set,
> -};
> -
> -static struct drm_encoder *tfp410_encoder_create(struct drm_device *dev,
> -             struct tfp410_module *mod)
> -{
> -     struct tfp410_encoder *tfp410_encoder;
> -     struct drm_encoder *encoder;
> -     int ret;
> -
> -     tfp410_encoder = devm_kzalloc(dev->dev, sizeof(*tfp410_encoder),
> -                                   GFP_KERNEL);
> -     if (!tfp410_encoder)
> -             return NULL;
> -
> -     tfp410_encoder->dpms = DRM_MODE_DPMS_OFF;
> -     tfp410_encoder->mod = mod;
> -
> -     encoder = &tfp410_encoder->base;
> -     encoder->possible_crtcs = 1;
> -
> -     ret = drm_encoder_init(dev, encoder, &tfp410_encoder_funcs,
> -                     DRM_MODE_ENCODER_TMDS, NULL);
> -     if (ret < 0)
> -             goto fail;
> -
> -     drm_encoder_helper_add(encoder, &tfp410_encoder_helper_funcs);
> -
> -     return encoder;
> -
> -fail:
> -     drm_encoder_cleanup(encoder);
> -     return NULL;
> -}
> -
> -/*
> - * Connector:
> - */
> -
> -struct tfp410_connector {
> -     struct drm_connector base;
> -
> -     struct drm_encoder *encoder;  /* our connected encoder */
> -     struct tfp410_module *mod;
> -};
> -#define to_tfp410_connector(x) container_of(x, struct tfp410_connector, base)
> -
> -
> -static void tfp410_connector_destroy(struct drm_connector *connector)
> -{
> -     drm_connector_unregister(connector);
> -     drm_connector_cleanup(connector);
> -}
> -
> -static enum drm_connector_status tfp410_connector_detect(
> -             struct drm_connector *connector,
> -             bool force)
> -{
> -     struct tfp410_connector *tfp410_connector = 
> to_tfp410_connector(connector);
> -
> -     if (drm_probe_ddc(tfp410_connector->mod->i2c))
> -             return connector_status_connected;
> -
> -     return connector_status_unknown;
> -}
> -
> -static int tfp410_connector_get_modes(struct drm_connector *connector)
> -{
> -     struct tfp410_connector *tfp410_connector = 
> to_tfp410_connector(connector);
> -     struct edid *edid;
> -     int ret = 0;
> -
> -     edid = drm_get_edid(connector, tfp410_connector->mod->i2c);
> -
> -     drm_connector_update_edid_property(connector, edid);
> -
> -     if (edid) {
> -             ret = drm_add_edid_modes(connector, edid);
> -             kfree(edid);
> -     }
> -
> -     return ret;
> -}
> -
> -static struct drm_encoder *tfp410_connector_best_encoder(
> -             struct drm_connector *connector)
> -{
> -     struct tfp410_connector *tfp410_connector = 
> to_tfp410_connector(connector);
> -     return tfp410_connector->encoder;
> -}
> -
> -static const struct drm_connector_funcs tfp410_connector_funcs = {
> -     .destroy            = tfp410_connector_destroy,
> -     .detect             = tfp410_connector_detect,
> -     .fill_modes         = drm_helper_probe_single_connector_modes,
> -     .reset              = drm_atomic_helper_connector_reset,
> -     .atomic_duplicate_state = drm_atomic_helper_connector_duplicate_state,
> -     .atomic_destroy_state = drm_atomic_helper_connector_destroy_state,
> -};
> -
> -static const struct drm_connector_helper_funcs tfp410_connector_helper_funcs 
> = {
> -     .get_modes          = tfp410_connector_get_modes,
> -     .best_encoder       = tfp410_connector_best_encoder,
> -};
> -
> -static struct drm_connector *tfp410_connector_create(struct drm_device *dev,
> -             struct tfp410_module *mod, struct drm_encoder *encoder)
> -{
> -     struct tfp410_connector *tfp410_connector;
> -     struct drm_connector *connector;
> -     int ret;
> -
> -     tfp410_connector = devm_kzalloc(dev->dev, sizeof(*tfp410_connector),
> -                                     GFP_KERNEL);
> -     if (!tfp410_connector)
> -             return NULL;
> -
> -     tfp410_connector->encoder = encoder;
> -     tfp410_connector->mod = mod;
> -
> -     connector = &tfp410_connector->base;
> -
> -     drm_connector_init(dev, connector, &tfp410_connector_funcs,
> -                     DRM_MODE_CONNECTOR_DVID);
> -     drm_connector_helper_add(connector, &tfp410_connector_helper_funcs);
> -
> -     connector->polled = DRM_CONNECTOR_POLL_CONNECT |
> -                     DRM_CONNECTOR_POLL_DISCONNECT;
> -
> -     connector->interlace_allowed = 0;
> -     connector->doublescan_allowed = 0;
> -
> -     ret = drm_connector_attach_encoder(connector, encoder);
> -     if (ret)
> -             goto fail;
> -
> -     return connector;
> -
> -fail:
> -     tfp410_connector_destroy(connector);
> -     return NULL;
> -}
> -
> -/*
> - * Module:
> - */
> -
> -static int tfp410_modeset_init(struct tilcdc_module *mod, struct drm_device 
> *dev)
> -{
> -     struct tfp410_module *tfp410_mod = to_tfp410_module(mod);
> -     struct tilcdc_drm_private *priv = dev->dev_private;
> -     struct drm_encoder *encoder;
> -     struct drm_connector *connector;
> -
> -     encoder = tfp410_encoder_create(dev, tfp410_mod);
> -     if (!encoder)
> -             return -ENOMEM;
> -
> -     connector = tfp410_connector_create(dev, tfp410_mod, encoder);
> -     if (!connector)
> -             return -ENOMEM;
> -
> -     priv->encoders[priv->num_encoders++] = encoder;
> -     priv->connectors[priv->num_connectors++] = connector;
> -
> -     tilcdc_crtc_set_panel_info(priv->crtc, &dvi_info);
> -     return 0;
> -}
> -
> -static const struct tilcdc_module_ops tfp410_module_ops = {
> -             .modeset_init = tfp410_modeset_init,
> -};
> -
> -/*
> - * Device:
> - */
> -
> -static int tfp410_probe(struct platform_device *pdev)
> -{
> -     struct device_node *node = pdev->dev.of_node;
> -     struct device_node *i2c_node;
> -     struct tfp410_module *tfp410_mod;
> -     struct tilcdc_module *mod;
> -     struct pinctrl *pinctrl;
> -     uint32_t i2c_phandle;
> -     int ret = -EINVAL;
> -
> -     /* bail out early if no DT data: */
> -     if (!node) {
> -             dev_err(&pdev->dev, "device-tree data is missing\n");
> -             return -ENXIO;
> -     }
> -
> -     tfp410_mod = devm_kzalloc(&pdev->dev, sizeof(*tfp410_mod), GFP_KERNEL);
> -     if (!tfp410_mod)
> -             return -ENOMEM;
> -
> -     mod = &tfp410_mod->base;
> -     pdev->dev.platform_data = mod;
> -
> -     tilcdc_module_init(mod, "tfp410", &tfp410_module_ops);
> -
> -     pinctrl = devm_pinctrl_get_select_default(&pdev->dev);
> -     if (IS_ERR(pinctrl))
> -             dev_warn(&pdev->dev, "pins are not configured\n");
> -
> -     if (of_property_read_u32(node, "i2c", &i2c_phandle)) {
> -             dev_err(&pdev->dev, "could not get i2c bus phandle\n");
> -             goto fail;
> -     }
> -
> -     i2c_node = of_find_node_by_phandle(i2c_phandle);
> -     if (!i2c_node) {
> -             dev_err(&pdev->dev, "could not get i2c bus node\n");
> -             goto fail;
> -     }
> -
> -     tfp410_mod->i2c = of_find_i2c_adapter_by_node(i2c_node);
> -     if (!tfp410_mod->i2c) {
> -             dev_err(&pdev->dev, "could not get i2c\n");
> -             of_node_put(i2c_node);
> -             goto fail;
> -     }
> -
> -     of_node_put(i2c_node);
> -
> -     tfp410_mod->gpio = of_get_named_gpio_flags(node, "powerdn-gpio",
> -                     0, NULL);
> -     if (tfp410_mod->gpio < 0) {
> -             dev_warn(&pdev->dev, "No power down GPIO\n");
> -     } else {
> -             ret = gpio_request(tfp410_mod->gpio, "DVI_PDn");
> -             if (ret) {
> -                     dev_err(&pdev->dev, "could not get DVI_PDn gpio\n");
> -                     goto fail_adapter;
> -             }
> -     }
> -
> -     return 0;
> -
> -fail_adapter:
> -     i2c_put_adapter(tfp410_mod->i2c);
> -
> -fail:
> -     tilcdc_module_cleanup(mod);
> -     return ret;
> -}
> -
> -static int tfp410_remove(struct platform_device *pdev)
> -{
> -     struct tilcdc_module *mod = dev_get_platdata(&pdev->dev);
> -     struct tfp410_module *tfp410_mod = to_tfp410_module(mod);
> -
> -     i2c_put_adapter(tfp410_mod->i2c);
> -     gpio_free(tfp410_mod->gpio);
> -
> -     tilcdc_module_cleanup(mod);
> -
> -     return 0;
> -}
> -
> -static const struct of_device_id tfp410_of_match[] = {
> -             { .compatible = "ti,tilcdc,tfp410", },
> -             { },
> -};
> -
> -struct platform_driver tfp410_driver = {
> -     .probe = tfp410_probe,
> -     .remove = tfp410_remove,
> -     .driver = {
> -             .owner = THIS_MODULE,
> -             .name = "tfp410",
> -             .of_match_table = tfp410_of_match,
> -     },
> -};
> -
> -int __init tilcdc_tfp410_init(void)
> -{
> -     return platform_driver_register(&tfp410_driver);
> -}
> -
> -void __exit tilcdc_tfp410_fini(void)
> -{
> -     platform_driver_unregister(&tfp410_driver);
> -}
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.h 
> b/drivers/gpu/drm/tilcdc/tilcdc_tfp410.h
> deleted file mode 100644
> index f9aaf6911ffc..000000000000
> --- a/drivers/gpu/drm/tilcdc/tilcdc_tfp410.h
> +++ /dev/null
> @@ -1,15 +0,0 @@
> -/* SPDX-License-Identifier: GPL-2.0-only */
> -/*
> - * Copyright (C) 2012 Texas Instruments
> - * Author: Rob Clark <[email protected]>
> - */
> -
> -#ifndef __TILCDC_TFP410_H__
> -#define __TILCDC_TFP410_H__
> -
> -/* sub-module for tfp410 dvi adaptor */
> -
> -int tilcdc_tfp410_init(void);
> -void tilcdc_tfp410_fini(void);
> -
> -#endif /* __TILCDC_TFP410_H__ */

-- 
Regards,

Laurent Pinchart
_______________________________________________
dri-devel mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to