* [PATCH 1/5] drm/tilcdc: Restore old dmps state in pm_resume()
2016-06-14 11:45 [PATCH 0/5] drm/tilcdc Fixes and cleanups Jyri Sarha
@ 2016-06-14 11:45 ` Jyri Sarha
2016-06-14 11:48 ` Tomi Valkeinen
2016-06-14 11:45 ` [PATCH 2/5] drm/tilcdc: Write to LCDC_END_OF_INT_IND_REG at the end of IRQ function Jyri Sarha
` (3 subsequent siblings)
4 siblings, 1 reply; 10+ messages in thread
From: Jyri Sarha @ 2016-06-14 11:45 UTC (permalink / raw)
To: dri-devel; +Cc: Jyri Sarha, tomi.valkeinen, laurent.pinchart, bcousson
Restore old dpms state in pm_resume(). The dpms is turned off in
pm_suspend() and it should be restored to its original state in
pm_resume().
Fixes commit 614b3cfeb8d2 ("drm/tilcdc: disable the lcd controller/dma
engine when suspend invoked")
Signed-off-by: Jyri Sarha <jsarha@ti.com>
---
drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 7 +++++++
drivers/gpu/drm/tilcdc/tilcdc_drv.c | 3 +++
drivers/gpu/drm/tilcdc/tilcdc_drv.h | 2 ++
3 files changed, 12 insertions(+)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
index 79027b1..4d8f9a5 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
@@ -246,6 +246,13 @@ void tilcdc_crtc_dpms(struct drm_crtc *crtc, int mode)
}
}
+int tilcdc_crtc_current_dpms_state(struct drm_crtc *crtc)
+{
+ struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc);
+
+ return tilcdc_crtc->dpms;
+}
+
static bool tilcdc_crtc_mode_fixup(struct drm_crtc *crtc,
const struct drm_display_mode *mode,
struct drm_display_mode *adjusted_mode)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.c b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
index 308e197..148b1ed 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.c
@@ -598,6 +598,7 @@ static int tilcdc_pm_suspend(struct device *dev)
}
/* Disable the LCDC controller, to avoid locking up the PRCM */
+ priv->saved_dpms_state = tilcdc_crtc_current_dpms_state(priv->crtc);
tilcdc_crtc_dpms(priv->crtc, DRM_MODE_DPMS_OFF);
/* Save register state: */
@@ -628,6 +629,8 @@ static int tilcdc_pm_resume(struct device *dev)
priv->saved_register[n++]);
}
+ tilcdc_crtc_dpms(priv->crtc, priv->saved_dpms_state);
+
drm_kms_helper_poll_enable(ddev);
return 0;
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_drv.h b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
index c1de18b..3b52ce8 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_drv.h
+++ b/drivers/gpu/drm/tilcdc/tilcdc_drv.h
@@ -67,6 +67,7 @@ struct tilcdc_drm_private {
/* register contents saved across suspend/resume: */
u32 *saved_register;
+ int saved_dpms_state;
bool ctx_valid;
#ifdef CONFIG_CPU_FREQ
@@ -172,5 +173,6 @@ void tilcdc_crtc_set_simulate_vesa_sync(struct drm_crtc *crtc,
int tilcdc_crtc_mode_valid(struct drm_crtc *crtc, struct drm_display_mode *mode);
int tilcdc_crtc_max_width(struct drm_crtc *crtc);
void tilcdc_crtc_dpms(struct drm_crtc *crtc, int mode);
+int tilcdc_crtc_current_dpms_state(struct drm_crtc *crtc);
#endif /* __TILCDC_DRV_H__ */
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 1/5] drm/tilcdc: Restore old dmps state in pm_resume()
2016-06-14 11:45 ` [PATCH 1/5] drm/tilcdc: Restore old dmps state in pm_resume() Jyri Sarha
@ 2016-06-14 11:48 ` Tomi Valkeinen
2016-06-14 16:22 ` Daniel Vetter
0 siblings, 1 reply; 10+ messages in thread
From: Tomi Valkeinen @ 2016-06-14 11:48 UTC (permalink / raw)
To: Jyri Sarha, dri-devel; +Cc: bcousson, laurent.pinchart
[-- Attachment #1.1.1: Type: text/plain, Size: 414 bytes --]
On 14/06/16 14:45, Jyri Sarha wrote:
> Restore old dpms state in pm_resume(). The dpms is turned off in
> pm_suspend() and it should be restored to its original state in
> pm_resume().
>
> Fixes commit 614b3cfeb8d2 ("drm/tilcdc: disable the lcd controller/dma
> engine when suspend invoked")
"dmps" in the subject.
It would be good to mention what the problem seen is, what does this fix.
Tomi
[-- Attachment #1.2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
[-- Attachment #2: Type: text/plain, Size: 160 bytes --]
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread* Re: [PATCH 1/5] drm/tilcdc: Restore old dmps state in pm_resume()
2016-06-14 11:48 ` Tomi Valkeinen
@ 2016-06-14 16:22 ` Daniel Vetter
0 siblings, 0 replies; 10+ messages in thread
From: Daniel Vetter @ 2016-06-14 16:22 UTC (permalink / raw)
To: Tomi Valkeinen; +Cc: bcousson, dri-devel, Jyri Sarha, laurent.pinchart
On Tue, Jun 14, 2016 at 02:48:44PM +0300, Tomi Valkeinen wrote:
> On 14/06/16 14:45, Jyri Sarha wrote:
> > Restore old dpms state in pm_resume(). The dpms is turned off in
> > pm_suspend() and it should be restored to its original state in
> > pm_resume().
> >
> > Fixes commit 614b3cfeb8d2 ("drm/tilcdc: disable the lcd controller/dma
> > engine when suspend invoked")
>
> "dmps" in the subject.
>
> It would be good to mention what the problem seen is, what does this fix.
With atomic you get this all for free, using
drm_atomic_helper_suspend/resume ...
-Daniel
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 2/5] drm/tilcdc: Write to LCDC_END_OF_INT_IND_REG at the end of IRQ function
2016-06-14 11:45 [PATCH 0/5] drm/tilcdc Fixes and cleanups Jyri Sarha
2016-06-14 11:45 ` [PATCH 1/5] drm/tilcdc: Restore old dmps state in pm_resume() Jyri Sarha
@ 2016-06-14 11:45 ` Jyri Sarha
2016-06-14 11:45 ` [PATCH 3/5] drm/tilcdc: Move waiting of LCDC_FRAME_DONE IRQ into stop() Jyri Sarha
` (2 subsequent siblings)
4 siblings, 0 replies; 10+ messages in thread
From: Jyri Sarha @ 2016-06-14 11:45 UTC (permalink / raw)
To: dri-devel; +Cc: Jyri Sarha, tomi.valkeinen, laurent.pinchart, bcousson
Reorder the IRQ function so that the write to LCDC_END_OF_INT_IND_REG
is done last. The write to LCDC_END_OF_INT_IND_REG indicates to LCDC
that the interrupt service routine has completed (see section
13.3.6.1.6 in AM335x TRM). This is needed if LCDC's ipgvmodirq module
is configured for pulse interrupts.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
---
drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 24 +++++++++++++++---------
1 file changed, 15 insertions(+), 9 deletions(-)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
index 4d8f9a5..1343717 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
@@ -725,14 +725,19 @@ irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc)
tilcdc_crtc->frame_intact = true;
}
- if (priv->rev == 2) {
- if (stat & LCDC_FRAME_DONE) {
- tilcdc_crtc->frame_done = true;
- wake_up(&tilcdc_crtc->frame_done_wq);
- }
- tilcdc_write(dev, LCDC_END_OF_INT_IND_REG, 0);
+ if (priv->rev == 1)
+ return IRQ_HANDLED;
+ /* The rest is for revision 2 only */
+
+ if (stat & LCDC_FRAME_DONE) {
+ tilcdc_crtc->frame_done = true;
+ wake_up(&tilcdc_crtc->frame_done_wq);
}
+ if (stat & LCDC_FIFO_UNDERFLOW)
+ dev_err_ratelimited(dev->dev, "%s(0x%08x): FIFO underfow",
+ __func__, stat);
+
if (stat & LCDC_SYNC_LOST) {
dev_err_ratelimited(dev->dev, "%s(0x%08x): Sync lost",
__func__, stat);
@@ -746,9 +751,10 @@ irqreturn_t tilcdc_crtc_irq(struct drm_crtc *crtc)
}
}
- if (stat & LCDC_FIFO_UNDERFLOW)
- dev_err_ratelimited(dev->dev, "%s(0x%08x): FIFO underfow",
- __func__, stat);
+ /* Indicate to LCDC that the interrupt service routine has
+ * completed, see 13.3.6.1.6 in AM335x TRM.
+ */
+ tilcdc_write(dev, LCDC_END_OF_INT_IND_REG, 0);
return IRQ_HANDLED;
}
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 3/5] drm/tilcdc: Move waiting of LCDC_FRAME_DONE IRQ into stop()
2016-06-14 11:45 [PATCH 0/5] drm/tilcdc Fixes and cleanups Jyri Sarha
2016-06-14 11:45 ` [PATCH 1/5] drm/tilcdc: Restore old dmps state in pm_resume() Jyri Sarha
2016-06-14 11:45 ` [PATCH 2/5] drm/tilcdc: Write to LCDC_END_OF_INT_IND_REG at the end of IRQ function Jyri Sarha
@ 2016-06-14 11:45 ` Jyri Sarha
2016-06-14 16:24 ` Daniel Vetter
2016-06-14 11:45 ` [PATCH 4/5] drm/tilcdc: Refer to panel.txt and tfp410.txt bindings in tilcdc.txt Jyri Sarha
2016-06-14 11:45 ` [PATCH 5/5] drm/tilcdc: Avoid error print by of_graph_get_next_endpoint() Jyri Sarha
4 siblings, 1 reply; 10+ messages in thread
From: Jyri Sarha @ 2016-06-14 11:45 UTC (permalink / raw)
To: dri-devel; +Cc: Jyri Sarha, tomi.valkeinen, laurent.pinchart, bcousson
Move wait queue waiting of LCDC_FRAME_DONE IRQ from tilcdc_crtc_dpms()
into stop() function.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
---
drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 31 ++++++++++++++++---------------
1 file changed, 16 insertions(+), 15 deletions(-)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
index 1343717..cfa1a4e 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
@@ -113,9 +113,25 @@ static void start(struct drm_crtc *crtc)
static void stop(struct drm_crtc *crtc)
{
+ struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc);
struct drm_device *dev = crtc->dev;
+ struct tilcdc_drm_private *priv = dev->dev_private;
+ tilcdc_crtc->frame_done = false;
tilcdc_clear(dev, LCDC_RASTER_CTRL_REG, LCDC_RASTER_ENABLE);
+
+ /*
+ * if necessary wait for framedone irq which will still come
+ * before putting things to sleep..
+ */
+ if (priv->rev == 2) {
+ int ret = wait_event_timeout(tilcdc_crtc->frame_done_wq,
+ tilcdc_crtc->frame_done,
+ msecs_to_jiffies(50));
+ if (ret == 0)
+ dev_err(dev->dev, "%s: timeout waiting for framedone\n",
+ __func__);
+ }
}
static void tilcdc_crtc_destroy(struct drm_crtc *crtc)
@@ -212,22 +228,7 @@ void tilcdc_crtc_dpms(struct drm_crtc *crtc, int mode)
pm_runtime_get_sync(dev->dev);
start(crtc);
} else {
- tilcdc_crtc->frame_done = false;
stop(crtc);
-
- /*
- * if necessary wait for framedone irq which will still come
- * before putting things to sleep..
- */
- if (priv->rev == 2) {
- int ret = wait_event_timeout(
- tilcdc_crtc->frame_done_wq,
- tilcdc_crtc->frame_done,
- msecs_to_jiffies(50));
- if (ret == 0)
- dev_err(dev->dev, "timeout waiting for framedone\n");
- }
-
pm_runtime_put_sync(dev->dev);
if (tilcdc_crtc->next_fb) {
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 3/5] drm/tilcdc: Move waiting of LCDC_FRAME_DONE IRQ into stop()
2016-06-14 11:45 ` [PATCH 3/5] drm/tilcdc: Move waiting of LCDC_FRAME_DONE IRQ into stop() Jyri Sarha
@ 2016-06-14 16:24 ` Daniel Vetter
0 siblings, 0 replies; 10+ messages in thread
From: Daniel Vetter @ 2016-06-14 16:24 UTC (permalink / raw)
To: Jyri Sarha; +Cc: bcousson, dri-devel, tomi.valkeinen, laurent.pinchart
On Tue, Jun 14, 2016 at 02:45:04PM +0300, Jyri Sarha wrote:
> Move wait queue waiting of LCDC_FRAME_DONE IRQ from tilcdc_crtc_dpms()
> into stop() function.
>
> Signed-off-by: Jyri Sarha <jsarha@ti.com>
You should also call drm_crtc_vblank_on/off, to make sure any vblank waits
and anything else gets properly cleaned up.
-Daniel
> ---
> drivers/gpu/drm/tilcdc/tilcdc_crtc.c | 31 ++++++++++++++++---------------
> 1 file changed, 16 insertions(+), 15 deletions(-)
>
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
> index 1343717..cfa1a4e 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_crtc.c
> @@ -113,9 +113,25 @@ static void start(struct drm_crtc *crtc)
>
> static void stop(struct drm_crtc *crtc)
> {
> + struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc);
> struct drm_device *dev = crtc->dev;
> + struct tilcdc_drm_private *priv = dev->dev_private;
>
> + tilcdc_crtc->frame_done = false;
> tilcdc_clear(dev, LCDC_RASTER_CTRL_REG, LCDC_RASTER_ENABLE);
> +
> + /*
> + * if necessary wait for framedone irq which will still come
> + * before putting things to sleep..
> + */
> + if (priv->rev == 2) {
> + int ret = wait_event_timeout(tilcdc_crtc->frame_done_wq,
> + tilcdc_crtc->frame_done,
> + msecs_to_jiffies(50));
> + if (ret == 0)
> + dev_err(dev->dev, "%s: timeout waiting for framedone\n",
> + __func__);
> + }
> }
>
> static void tilcdc_crtc_destroy(struct drm_crtc *crtc)
> @@ -212,22 +228,7 @@ void tilcdc_crtc_dpms(struct drm_crtc *crtc, int mode)
> pm_runtime_get_sync(dev->dev);
> start(crtc);
> } else {
> - tilcdc_crtc->frame_done = false;
> stop(crtc);
> -
> - /*
> - * if necessary wait for framedone irq which will still come
> - * before putting things to sleep..
> - */
> - if (priv->rev == 2) {
> - int ret = wait_event_timeout(
> - tilcdc_crtc->frame_done_wq,
> - tilcdc_crtc->frame_done,
> - msecs_to_jiffies(50));
> - if (ret == 0)
> - dev_err(dev->dev, "timeout waiting for framedone\n");
> - }
> -
> pm_runtime_put_sync(dev->dev);
>
> if (tilcdc_crtc->next_fb) {
> --
> 1.9.1
>
--
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread
* [PATCH 4/5] drm/tilcdc: Refer to panel.txt and tfp410.txt bindings in tilcdc.txt
2016-06-14 11:45 [PATCH 0/5] drm/tilcdc Fixes and cleanups Jyri Sarha
` (2 preceding siblings ...)
2016-06-14 11:45 ` [PATCH 3/5] drm/tilcdc: Move waiting of LCDC_FRAME_DONE IRQ into stop() Jyri Sarha
@ 2016-06-14 11:45 ` Jyri Sarha
2016-06-14 11:45 ` [PATCH 5/5] drm/tilcdc: Avoid error print by of_graph_get_next_endpoint() Jyri Sarha
4 siblings, 0 replies; 10+ messages in thread
From: Jyri Sarha @ 2016-06-14 11:45 UTC (permalink / raw)
To: dri-devel; +Cc: Jyri Sarha, tomi.valkeinen, laurent.pinchart, bcousson
The legacy panel.txt and tfp410.txt bindings are still the only supported
way to connect lcd panel and tfp410 DVI encoder to tilcdc.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
---
Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt | 4 ++++
1 file changed, 4 insertions(+)
diff --git a/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt b/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt
index 2136ee8..6efa4c5 100644
--- a/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt
+++ b/Documentation/devicetree/bindings/display/tilcdc/tilcdc.txt
@@ -24,6 +24,10 @@ Optional nodes:
binding follows Documentation/devicetree/bindings/graph.txt and
suppors a single port with a single endpoint.
+ - See also Documentation/devicetree/bindings/display/tilcdc/panel.txt and
+ Documentation/devicetree/bindings/display/tilcdc/tfp410.txt for connecting
+ tfp410 DVI encoder or lcd panel to lcdc
+
Example:
fb: fb@4830e000 {
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread* [PATCH 5/5] drm/tilcdc: Avoid error print by of_graph_get_next_endpoint()
2016-06-14 11:45 [PATCH 0/5] drm/tilcdc Fixes and cleanups Jyri Sarha
` (3 preceding siblings ...)
2016-06-14 11:45 ` [PATCH 4/5] drm/tilcdc: Refer to panel.txt and tfp410.txt bindings in tilcdc.txt Jyri Sarha
@ 2016-06-14 11:45 ` Jyri Sarha
2016-06-14 11:50 ` Jyri Sarha
4 siblings, 1 reply; 10+ messages in thread
From: Jyri Sarha @ 2016-06-14 11:45 UTC (permalink / raw)
To: dri-devel; +Cc: Jyri Sarha, tomi.valkeinen, laurent.pinchart, bcousson
Avoid error print by of_graph_get_next_endpoint() if there is no ports
present.
Signed-off-by: Jyri Sarha <jsarha@ti.com>
---
drivers/gpu/drm/tilcdc/tilcdc_external.c | 11 +++++++++++
1 file changed, 11 insertions(+)
diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
index 03acb4f..51811e3 100644
--- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
+++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
@@ -138,9 +138,20 @@ static int dev_match_of(struct device *dev, void *data)
int tilcdc_get_external_components(struct device *dev,
struct component_match **match)
{
+ struct device_node *node;
struct device_node *ep = NULL;
int count = 0;
+ /* Avoid error print by of_graph_get_next_endpoint() if there
+ * is no ports present.
+ */
+ node = of_get_child_by_name(dev->of_node, "ports");
+ if (!node)
+ node = of_get_child_by_name(dev->of_node, "port");
+ if (!node)
+ return 0;
+ of_node_put(node);
+
while ((ep = of_graph_get_next_endpoint(dev->of_node, ep))) {
struct device_node *node;
--
1.9.1
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply related [flat|nested] 10+ messages in thread* Re: [PATCH 5/5] drm/tilcdc: Avoid error print by of_graph_get_next_endpoint()
2016-06-14 11:45 ` [PATCH 5/5] drm/tilcdc: Avoid error print by of_graph_get_next_endpoint() Jyri Sarha
@ 2016-06-14 11:50 ` Jyri Sarha
0 siblings, 0 replies; 10+ messages in thread
From: Jyri Sarha @ 2016-06-14 11:50 UTC (permalink / raw)
To: dri-devel; +Cc: tomi.valkeinen, laurent.pinchart, bcousson
On 06/14/16 14:45, Jyri Sarha wrote:
> Avoid error print by of_graph_get_next_endpoint() if there is no ports
> present.
>
> Signed-off-by: Jyri Sarha <jsarha@ti.com>
> ---
> drivers/gpu/drm/tilcdc/tilcdc_external.c | 11 +++++++++++
> 1 file changed, 11 insertions(+)
>
> diff --git a/drivers/gpu/drm/tilcdc/tilcdc_external.c b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> index 03acb4f..51811e3 100644
> --- a/drivers/gpu/drm/tilcdc/tilcdc_external.c
> +++ b/drivers/gpu/drm/tilcdc/tilcdc_external.c
> @@ -138,9 +138,20 @@ static int dev_match_of(struct device *dev, void *data)
> int tilcdc_get_external_components(struct device *dev,
> struct component_match **match)
> {
> + struct device_node *node;
> struct device_node *ep = NULL;
> int count = 0;
>
> + /* Avoid error print by of_graph_get_next_endpoint() if there
> + * is no ports present.
> + */
> + node = of_get_child_by_name(dev->of_node, "ports");
> + if (!node)
> + node = of_get_child_by_name(dev->of_node, "port");
> + if (!node)
> + return 0;
> + of_node_put(node);
> +
> while ((ep = of_graph_get_next_endpoint(dev->of_node, ep))) {
> struct device_node *node;
^^^^
Argh.. This now redundant local variable should have been removed. It is
now done in my local branch and will be in the v2 series, if there is
need for one.
BR,
Jyri
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
^ permalink raw reply [flat|nested] 10+ messages in thread