Re: [PATCH v2 35/60] drm/omap: dss: Replace omap_dss_device port number with bitmask

2018-06-10 Thread Sebastian Reichel
Hi,

On Sat, May 26, 2018 at 08:24:53PM +0300, Laurent Pinchart wrote:
> The omap_dss_device port_num field stores the DT port number associated
> with the device. The field is used in different ways depending on the
> device type:
> 
> - For DPI outputs, the port number is used as an identifier of the DPI
> instance
> 
> - For sources, the port number is used to look up the omap_dss_device by
> DT port node
> 
> As omap_dss_device instances are only looked up as sources by sinks,
> setting the field to the number of the source port works for both use
> cases.
> 
> However, to enable looking up sinks, we need to record all the ports
> associated with an omap_dss_device. Do so by turning the port_num field
> into an of_ports bitmask. For DPI outputs the port number is
> additionally stored in the dpi_data structure as the output ID.
> 
> Signed-off-by: Laurent Pinchart 
> ---

Reviewed-by: Sebastian Reichel 

-- Sebastian

>  .../gpu/drm/omapdrm/displays/connector-analog-tv.c|  1 +
>  drivers/gpu/drm/omapdrm/displays/connector-dvi.c  |  1 +
>  drivers/gpu/drm/omapdrm/displays/connector-hdmi.c |  1 +
>  drivers/gpu/drm/omapdrm/displays/encoder-opa362.c |  1 +
>  drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c |  2 +-
>  drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c  |  2 +-
>  drivers/gpu/drm/omapdrm/displays/panel-dpi.c  |  1 +
>  drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c   |  1 +
>  .../drm/omapdrm/displays/panel-lgphilips-lb035q02.c   |  1 +
>  .../gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c   |  1 +
>  .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c|  1 +
>  .../gpu/drm/omapdrm/displays/panel-sony-acx565akm.c   |  1 +
>  .../gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c   |  1 +
>  .../gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c   |  1 +
>  drivers/gpu/drm/omapdrm/dss/base.c|  2 +-
>  drivers/gpu/drm/omapdrm/dss/dpi.c | 19 
> +--
>  drivers/gpu/drm/omapdrm/dss/dsi.c |  1 +
>  drivers/gpu/drm/omapdrm/dss/hdmi4.c   |  1 +
>  drivers/gpu/drm/omapdrm/dss/hdmi5.c   |  1 +
>  drivers/gpu/drm/omapdrm/dss/omapdss.h |  4 ++--
>  drivers/gpu/drm/omapdrm/dss/sdi.c |  2 +-
>  drivers/gpu/drm/omapdrm/dss/venc.c|  1 +
>  22 files changed, 31 insertions(+), 16 deletions(-)
> 
> diff --git a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c 
> b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
> index f7250db0f3b7..b960c4d0e84d 100644
> --- a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
> +++ b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
> @@ -169,6 +169,7 @@ static int tvc_probe(struct platform_device *pdev)
>   dssdev->dev = >dev;
>   dssdev->type = OMAP_DISPLAY_TYPE_VENC;
>   dssdev->owner = THIS_MODULE;
> + dssdev->of_ports = BIT(0);
>  
>   omapdss_display_init(dssdev);
>   omapdss_device_register(dssdev);
> diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c 
> b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
> index b4f84baff144..8ff674bf75e6 100644
> --- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
> +++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
> @@ -389,6 +389,7 @@ static int dvic_probe(struct platform_device *pdev)
>   dssdev->dev = >dev;
>   dssdev->type = OMAP_DISPLAY_TYPE_DVI;
>   dssdev->owner = THIS_MODULE;
> + dssdev->of_ports = BIT(0);
>  
>   omapdss_display_init(dssdev);
>   omapdss_device_register(dssdev);
> diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c 
> b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
> index 2f8ae93c117a..2afaa2ca602b 100644
> --- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
> +++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
> @@ -349,6 +349,7 @@ static int hdmic_probe(struct platform_device *pdev)
>   dssdev->dev = >dev;
>   dssdev->type = OMAP_DISPLAY_TYPE_HDMI;
>   dssdev->owner = THIS_MODULE;
> + dssdev->of_ports = BIT(0);
>  
>   omapdss_display_init(dssdev);
>   omapdss_device_register(dssdev);
> diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c 
> b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c
> index 4d7f4dae2c10..eb0ebb850114 100644
> --- a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c
> +++ b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c
> @@ -167,6 +167,7 @@ static int opa362_probe(struct platform_device *pdev)
>   dssdev->type = OMAP_DISPLAY_TYPE_VENC;
>   dssdev->output_type = OMAP_DISPLAY_TYPE_VENC;
>   dssdev->owner = THIS_MODULE;
> + dssdev->of_ports = BIT(1) | BIT(0);
>  
>   omapdss_device_register(dssdev);
>  
> diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c 
> b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c
> index 833544d8502f..fb767d674297 100644
> --- a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c
> 

[PATCH v2 35/60] drm/omap: dss: Replace omap_dss_device port number with bitmask

2018-05-26 Thread Laurent Pinchart
The omap_dss_device port_num field stores the DT port number associated
with the device. The field is used in different ways depending on the
device type:

- For DPI outputs, the port number is used as an identifier of the DPI
instance

- For sources, the port number is used to look up the omap_dss_device by
DT port node

As omap_dss_device instances are only looked up as sources by sinks,
setting the field to the number of the source port works for both use
cases.

However, to enable looking up sinks, we need to record all the ports
associated with an omap_dss_device. Do so by turning the port_num field
into an of_ports bitmask. For DPI outputs the port number is
additionally stored in the dpi_data structure as the output ID.

Signed-off-by: Laurent Pinchart 
---
 .../gpu/drm/omapdrm/displays/connector-analog-tv.c|  1 +
 drivers/gpu/drm/omapdrm/displays/connector-dvi.c  |  1 +
 drivers/gpu/drm/omapdrm/displays/connector-hdmi.c |  1 +
 drivers/gpu/drm/omapdrm/displays/encoder-opa362.c |  1 +
 drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c |  2 +-
 drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c  |  2 +-
 drivers/gpu/drm/omapdrm/displays/panel-dpi.c  |  1 +
 drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c   |  1 +
 .../drm/omapdrm/displays/panel-lgphilips-lb035q02.c   |  1 +
 .../gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c   |  1 +
 .../drm/omapdrm/displays/panel-sharp-ls037v7dw01.c|  1 +
 .../gpu/drm/omapdrm/displays/panel-sony-acx565akm.c   |  1 +
 .../gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c   |  1 +
 .../gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c   |  1 +
 drivers/gpu/drm/omapdrm/dss/base.c|  2 +-
 drivers/gpu/drm/omapdrm/dss/dpi.c | 19 +--
 drivers/gpu/drm/omapdrm/dss/dsi.c |  1 +
 drivers/gpu/drm/omapdrm/dss/hdmi4.c   |  1 +
 drivers/gpu/drm/omapdrm/dss/hdmi5.c   |  1 +
 drivers/gpu/drm/omapdrm/dss/omapdss.h |  4 ++--
 drivers/gpu/drm/omapdrm/dss/sdi.c |  2 +-
 drivers/gpu/drm/omapdrm/dss/venc.c|  1 +
 22 files changed, 31 insertions(+), 16 deletions(-)

diff --git a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c 
b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
index f7250db0f3b7..b960c4d0e84d 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c
@@ -169,6 +169,7 @@ static int tvc_probe(struct platform_device *pdev)
dssdev->dev = >dev;
dssdev->type = OMAP_DISPLAY_TYPE_VENC;
dssdev->owner = THIS_MODULE;
+   dssdev->of_ports = BIT(0);
 
omapdss_display_init(dssdev);
omapdss_device_register(dssdev);
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c 
b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
index b4f84baff144..8ff674bf75e6 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c
@@ -389,6 +389,7 @@ static int dvic_probe(struct platform_device *pdev)
dssdev->dev = >dev;
dssdev->type = OMAP_DISPLAY_TYPE_DVI;
dssdev->owner = THIS_MODULE;
+   dssdev->of_ports = BIT(0);
 
omapdss_display_init(dssdev);
omapdss_device_register(dssdev);
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c 
b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
index 2f8ae93c117a..2afaa2ca602b 100644
--- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
+++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c
@@ -349,6 +349,7 @@ static int hdmic_probe(struct platform_device *pdev)
dssdev->dev = >dev;
dssdev->type = OMAP_DISPLAY_TYPE_HDMI;
dssdev->owner = THIS_MODULE;
+   dssdev->of_ports = BIT(0);
 
omapdss_display_init(dssdev);
omapdss_device_register(dssdev);
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c 
b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c
index 4d7f4dae2c10..eb0ebb850114 100644
--- a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c
+++ b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c
@@ -167,6 +167,7 @@ static int opa362_probe(struct platform_device *pdev)
dssdev->type = OMAP_DISPLAY_TYPE_VENC;
dssdev->output_type = OMAP_DISPLAY_TYPE_VENC;
dssdev->owner = THIS_MODULE;
+   dssdev->of_ports = BIT(1) | BIT(0);
 
omapdss_device_register(dssdev);
 
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c 
b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c
index 833544d8502f..fb767d674297 100644
--- a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c
+++ b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c
@@ -190,7 +190,7 @@ static int tfp410_probe(struct platform_device *pdev)
dssdev->type = OMAP_DISPLAY_TYPE_DPI;
dssdev->output_type = OMAP_DISPLAY_TYPE_DVI;