On Tue, 20 Aug 2019 04:16:39 +0300
Laurent Pinchart <laurent.pinch...@ideasonboard.com> wrote:

> Create a new simple_bridge_info structure that stores information about
> the bridge model, and store the bridge timings in there, along with the
> connector type. Use that new structure for of_device_id data. This
> enables support for non-VGA bridges.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinch...@ideasonboard.com>
> Reviewed-by: Andrzej Hajda <a.ha...@samsung.com>
> Reviewed-by: Stefan Agner <ste...@agner.ch>

Reviewed-by: Boris Brezillon <boris.brezil...@collabora.com>

> ---
> Changes since v1:
> 
> - Renamed simple_bridge_info.type field to connector_type
> ---
>  drivers/gpu/drm/bridge/simple-bridge.c | 41 ++++++++++++++++++--------
>  1 file changed, 29 insertions(+), 12 deletions(-)
> 
> diff --git a/drivers/gpu/drm/bridge/simple-bridge.c 
> b/drivers/gpu/drm/bridge/simple-bridge.c
> index 7551a361f22e..85aa852eafb4 100644
> --- a/drivers/gpu/drm/bridge/simple-bridge.c
> +++ b/drivers/gpu/drm/bridge/simple-bridge.c
> @@ -16,10 +16,17 @@
>  #include <drm/drm_print.h>
>  #include <drm/drm_probe_helper.h>
>  
> +struct simple_bridge_info {
> +     const struct drm_bridge_timings *timings;
> +     unsigned int connector_type;
> +};
> +
>  struct simple_bridge {
>       struct drm_bridge       bridge;
>       struct drm_connector    connector;
>  
> +     const struct simple_bridge_info *info;
> +
>       struct i2c_adapter      *ddc;
>       struct regulator        *vdd;
>  };
> @@ -117,7 +124,7 @@ static int simple_bridge_attach(struct drm_bridge *bridge,
>                                &simple_bridge_con_helper_funcs);
>       ret = drm_connector_init_with_ddc(bridge->dev, &sbridge->connector,
>                                         &simple_bridge_con_funcs,
> -                                       DRM_MODE_CONNECTOR_VGA,
> +                                       sbridge->info->connector_type,
>                                         sbridge->ddc);
>       if (ret) {
>               DRM_ERROR("Failed to initialize connector\n");
> @@ -187,6 +194,8 @@ static int simple_bridge_probe(struct platform_device 
> *pdev)
>               return -ENOMEM;
>       platform_set_drvdata(pdev, sbridge);
>  
> +     sbridge->info = of_device_get_match_data(&pdev->dev);
> +
>       sbridge->vdd = devm_regulator_get_optional(&pdev->dev, "vdd");
>       if (IS_ERR(sbridge->vdd)) {
>               int ret = PTR_ERR(sbridge->vdd);
> @@ -210,7 +219,7 @@ static int simple_bridge_probe(struct platform_device 
> *pdev)
>  
>       sbridge->bridge.funcs = &simple_bridge_bridge_funcs;
>       sbridge->bridge.of_node = pdev->dev.of_node;
> -     sbridge->bridge.timings = of_device_get_match_data(&pdev->dev);
> +     sbridge->bridge.timings = sbridge->info->timings;
>  
>       drm_bridge_add(&sbridge->bridge);
>  
> @@ -270,19 +279,27 @@ static const struct drm_bridge_timings 
> ti_ths8135_bridge_timings = {
>  static const struct of_device_id simple_bridge_match[] = {
>       {
>               .compatible = "dumb-vga-dac",
> -             .data = NULL,
> -     },
> -     {
> +             .data = &(const struct simple_bridge_info) {
> +                     .connector_type = DRM_MODE_CONNECTOR_VGA,
> +             },
> +     }, {
>               .compatible = "adi,adv7123",
> -             .data = &default_bridge_timings,
> -     },
> -     {
> +             .data = &(const struct simple_bridge_info) {
> +                     .timings = &default_bridge_timings,
> +                     .connector_type = DRM_MODE_CONNECTOR_VGA,
> +             },
> +     }, {
>               .compatible = "ti,ths8135",
> -             .data = &ti_ths8135_bridge_timings,
> -     },
> -     {
> +             .data = &(const struct simple_bridge_info) {
> +                     .timings = &ti_ths8135_bridge_timings,
> +                     .connector_type = DRM_MODE_CONNECTOR_VGA,
> +             },
> +     }, {
>               .compatible = "ti,ths8134",
> -             .data = &ti_ths8134_bridge_timings,
> +             .data = &(const struct simple_bridge_info) {
> +                     .timings = &ti_ths8134_bridge_timings,
> +                     .connector_type = DRM_MODE_CONNECTOR_VGA,
> +             },
>       },
>       {},
>  };

_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to