Skip to contentSkip to conversation

No display on i.MX53 after update to 4.4-rc4

Regression Martin Fuzzey 2 participants 3 messages Dec 18, 2015 – Jan 5, 2016

Subsystems (2)
lore
Share & tools
lore
#0 lore raw

Hi Philipp,

after updating my kernel to include:

gpu: ipu-v3: Assign of_node of child platform devices to
corresponding ports [304e6be652e2ef2190adf9c23a2a1e5f9f39800d]

the display initialisation fails with:

     "imx-ipuv3 18000000.ipu: missing port at 0 node in /soc/ipu at 18000000"

Indeed the in tree imx53.dtsi file does not contain that node.

Does the node need to be added (even if the camera is not being used) or should ipu_add_client_devices() not bail out if one node is missing?

Regards,

Martin

maintainer
#1 lore raw

Hi Martin,

Am Freitag, den 18.12.2015, 15:13 +0100 schrieb Martin Fuzzey:

Quoted 7 lines

Hi Philipp,

after updating my kernel to include:

gpu: ipu-v3: Assign of_node of child platform devices to
corresponding ports [304e6be652e2ef2190adf9c23a2a1e5f9f39800d]

Quoted 8 lines

the display initialisation fails with:

     "imx-ipuv3 18000000.ipu: missing port at 0 node in /soc/ipu at 18000000"

Indeed the in tree imx53.dtsi file does not contain that node.

Does the node need to be added (even if the camera is not being used) or should ipu_add_client_devices() not bail out if one node is missing?

The ports are marked as optional in the binding docs, so the driver should not bail out if they are not present. How about this patch:

-----8<-----

Quoted 1 line

From d82649ac3bde511eb5977beb1080f0c6c78e391a Mon Sep 17 00:00:00 2001

From: Philipp Zabel <[email protected]>
Subject: [PATCH] gpu: ipu-v3: Do not bail out on missing optional port nodes

The port nodes are documented as optional, treat them accordingly.

Fixes 304e6be652e2 ("gpu: ipu-v3: Assign of_node of child platform devices to corresponding ports")
---
 drivers/gpu/ipu-v3/ipu-common.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
drivers/gpu/ipu-v3/ipu-common.c +5 -4
index 8ba367b..2093de2 100644
@@ -1094,10 +1094,11 @@ static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
 		/* Associate subdevice with the corresponding port node */
 		pdev->dev.of_node = of_graph_get_port_by_id(dev->of_node, i);
 		if (i < 4 && !pdev->dev.of_node) {
-			dev_err(dev, "missing port@%d node in %s\n", i,
-				dev->of_node->full_name);
-			ret = -ENODEV;
-			goto err_register;
+			dev_info(dev,
+				 "no port@%d node in %s, not using %s%d\n",
+				 i, dev->of_node->full_name,
+				 (i / 2) ? "DI" : "CSI", i % 2);
+			continue;
 		}
 
 		ret = platform_device_add_data(pdev, &reg->pdata,

----->8-----

regards
Philipp

#2 lore raw

Hi Philipp,

Quoted 32 lines · Philipp Zabel

Hi Martin,

Am Freitag, den 18.12.2015, 15:13 +0100 schrieb Martin Fuzzey:

Quoted 1 line

should ipu_add_client_devices() not bail out if one node is missing?

The ports are marked as optional in the binding docs, so the driver should not bail out if they are not present. How about this patch:

-----8<-----
From d82649ac3bde511eb5977beb1080f0c6c78e391a Mon Sep 17 00:00:00 2001
From: Philipp Zabel <[email protected]>
Subject: [PATCH] gpu: ipu-v3: Do not bail out on missing optional port nodes

The port nodes are documented as optional, treat them accordingly.

Fixes 304e6be652e2 ("gpu: ipu-v3: Assign of_node of child platform devices to corresponding ports")
---
  drivers/gpu/ipu-v3/ipu-common.c | 9 +++++----
  1 file changed, 5 insertions(+), 4 deletions(-)
drivers/gpu/ipu-v3/ipu-common.c +0 -3
index 8ba367b..2093de2 100644
@@ -1094,10 +1094,11 @@ static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)
  		/* Associate subdevice with the corresponding port node */
  		pdev->dev.of_node = of_graph_get_port_by_id(dev->of_node, i);
  		if (i < 4 && !pdev->dev.of_node) {
-			dev_err(dev, "missing port@%d node in %s\n", i,
-				dev->of_node->full_name);
-			ret = -ENODEV;

drivers/gpu/ipu-v3/ipu-common.c static int ipu_add_client_devices(struct ipu_soc *ipu, unsigned long ipu_base)

Quoted 10 lines
drivers/gpu/ipu-v3/ipu-common.c +5 -2
-			goto err_register;
+			dev_info(dev,
+				 "no port@%d node in %s, not using %s%d\n",
+				 i, dev->of_node->full_name,
+				 (i / 2) ? "DI" : "CSI", i % 2);
+			continue;
  		}
 
  		ret = platform_device_add_data(pdev, &reg->pdata,
----->8-----

It doesn't apply as is to current mainline (the i < 4 condition doesn't exist there).

But manually applying it works fine.

Thank you.

Martin