Skip to content

Commit eaaedaf

Browse files
pinchartltomba
authored andcommitted
drm/omap: dss: Extend omapdss_of_find_source_for_first_ep() to sinks
The omapdss_of_find_source_for_first_ep() function locates the source corresponding to the first endpoint of the first port of a device node. We can easily extend it to locate sinks as well by passing the port number as a parameter. This will be useful to find sinks in encoders drivers. Extend the function and rename it to omapdss_of_find_connected_device() to reflect its new extended purpose. Additionally, it is useful to differentiate between failures to return the connected device because no link exists in the device tree for the requested port, or because the connected device as described in the device tree is invalid or not probed yet. Return NULL in the first case and an error code in the second case, and update the callers accordingly. Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Reviewed-by: Sebastian Reichel <sebastian.reichel@collabora.co.uk> Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ti.com>
1 parent 4e20bda commit eaaedaf

16 files changed

+44
-44
lines changed

drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -47,10 +47,10 @@ static int tvc_connect(struct omap_dss_device *dssdev)
4747
struct omap_dss_device *src;
4848
int r;
4949

50-
src = omapdss_of_find_source_for_first_ep(ddata->dev->of_node);
51-
if (IS_ERR(src)) {
50+
src = omapdss_of_find_connected_device(ddata->dev->of_node, 0);
51+
if (IS_ERR_OR_NULL(src)) {
5252
dev_err(ddata->dev, "failed to find video source\n");
53-
return PTR_ERR(src);
53+
return src ? PTR_ERR(src) : -EINVAL;
5454
}
5555

5656
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/connector-dvi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -61,10 +61,10 @@ static int dvic_connect(struct omap_dss_device *dssdev)
6161
struct omap_dss_device *src;
6262
int r;
6363

64-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
65-
if (IS_ERR(src)) {
64+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
65+
if (IS_ERR_OR_NULL(src)) {
6666
dev_err(dssdev->dev, "failed to find video source\n");
67-
return PTR_ERR(src);
67+
return src ? PTR_ERR(src) : -EINVAL;
6868
}
6969

7070
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/connector-hdmi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -57,10 +57,10 @@ static int hdmic_connect(struct omap_dss_device *dssdev)
5757
struct omap_dss_device *src;
5858
int r;
5959

60-
src = omapdss_of_find_source_for_first_ep(ddata->dev->of_node);
61-
if (IS_ERR(src)) {
60+
src = omapdss_of_find_connected_device(ddata->dev->of_node, 0);
61+
if (IS_ERR_OR_NULL(src)) {
6262
dev_err(ddata->dev, "failed to find video source\n");
63-
return PTR_ERR(src);
63+
return src ? PTR_ERR(src) : -EINVAL;
6464
}
6565

6666
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/encoder-opa362.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ static int opa362_connect(struct omap_dss_device *dssdev,
3737
struct omap_dss_device *src;
3838
int r;
3939

40-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
40+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
4141
if (IS_ERR(src)) {
4242
dev_err(dssdev->dev, "failed to find video source\n");
4343
return PTR_ERR(src);

drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ static int tfp410_connect(struct omap_dss_device *dssdev,
3333
struct omap_dss_device *src;
3434
int r;
3535

36-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
36+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
3737
if (IS_ERR(src)) {
3838
dev_err(dssdev->dev, "failed to find video source\n");
3939
return PTR_ERR(src);

drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ static int tpd_connect(struct omap_dss_device *dssdev,
4242
struct omap_dss_device *src;
4343
int r;
4444

45-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
45+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
4646
if (IS_ERR(src)) {
4747
dev_err(dssdev->dev, "failed to find video source\n");
4848
return PTR_ERR(src);

drivers/gpu/drm/omapdrm/displays/panel-dpi.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,10 @@ static int panel_dpi_connect(struct omap_dss_device *dssdev)
3939
struct omap_dss_device *src;
4040
int r;
4141

42-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
43-
if (IS_ERR(src)) {
42+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
43+
if (IS_ERR_OR_NULL(src)) {
4444
dev_err(dssdev->dev, "failed to find video source\n");
45-
return PTR_ERR(src);
45+
return src ? PTR_ERR(src) : -EINVAL;
4646
}
4747

4848
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -763,10 +763,10 @@ static int dsicm_connect(struct omap_dss_device *dssdev)
763763
struct omap_dss_device *src;
764764
int r;
765765

766-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
767-
if (IS_ERR(src)) {
766+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
767+
if (IS_ERR_OR_NULL(src)) {
768768
dev_err(dssdev->dev, "failed to find video source\n");
769-
return PTR_ERR(src);
769+
return src ? PTR_ERR(src) : -EINVAL;
770770
}
771771

772772
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -121,10 +121,10 @@ static int lb035q02_connect(struct omap_dss_device *dssdev)
121121
struct omap_dss_device *src;
122122
int r;
123123

124-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
125-
if (IS_ERR(src)) {
124+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
125+
if (IS_ERR_OR_NULL(src)) {
126126
dev_err(dssdev->dev, "failed to find video source\n");
127-
return PTR_ERR(src);
127+
return src ? PTR_ERR(src) : -EINVAL;
128128
}
129129

130130
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -116,10 +116,10 @@ static int nec_8048_connect(struct omap_dss_device *dssdev)
116116
struct omap_dss_device *src;
117117
int r;
118118

119-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
120-
if (IS_ERR(src)) {
119+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
120+
if (IS_ERR_OR_NULL(src)) {
121121
dev_err(dssdev->dev, "failed to find video source\n");
122-
return PTR_ERR(src);
122+
return src ? PTR_ERR(src) : -EINVAL;
123123
}
124124

125125
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -62,10 +62,10 @@ static int sharp_ls_connect(struct omap_dss_device *dssdev)
6262
struct omap_dss_device *src;
6363
int r;
6464

65-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
66-
if (IS_ERR(src)) {
65+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
66+
if (IS_ERR_OR_NULL(src)) {
6767
dev_err(dssdev->dev, "failed to find video source\n");
68-
return PTR_ERR(src);
68+
return src ? PTR_ERR(src) : -EINVAL;
6969
}
7070

7171
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -511,10 +511,10 @@ static int acx565akm_connect(struct omap_dss_device *dssdev)
511511
struct omap_dss_device *src;
512512
int r;
513513

514-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
515-
if (IS_ERR(src)) {
514+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
515+
if (IS_ERR_OR_NULL(src)) {
516516
dev_err(dssdev->dev, "failed to find video source\n");
517-
return PTR_ERR(src);
517+
return src ? PTR_ERR(src) : -EINVAL;
518518
}
519519

520520
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -170,10 +170,10 @@ static int td028ttec1_panel_connect(struct omap_dss_device *dssdev)
170170
struct omap_dss_device *src;
171171
int r;
172172

173-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
174-
if (IS_ERR(src)) {
173+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
174+
if (IS_ERR_OR_NULL(src)) {
175175
dev_err(dssdev->dev, "failed to find video source\n");
176-
return PTR_ERR(src);
176+
return src ? PTR_ERR(src) : -EINVAL;
177177
}
178178

179179
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -341,10 +341,10 @@ static int tpo_td043_connect(struct omap_dss_device *dssdev)
341341
struct omap_dss_device *src;
342342
int r;
343343

344-
src = omapdss_of_find_source_for_first_ep(dssdev->dev->of_node);
345-
if (IS_ERR(src)) {
344+
src = omapdss_of_find_connected_device(dssdev->dev->of_node, 0);
345+
if (IS_ERR_OR_NULL(src)) {
346346
dev_err(dssdev->dev, "failed to find video source\n");
347-
return PTR_ERR(src);
347+
return src ? PTR_ERR(src) : -EINVAL;
348348
}
349349

350350
r = omapdss_device_connect(dssdev->dss, src, dssdev);

drivers/gpu/drm/omapdrm/dss/dss-of.c

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ dss_of_port_get_parent_device(struct device_node *port)
4747
}
4848

4949
struct omap_dss_device *
50-
omapdss_of_find_source_for_first_ep(struct device_node *node)
50+
omapdss_of_find_connected_device(struct device_node *node, unsigned int port)
5151
{
5252
struct device_node *src_node;
5353
struct device_node *src_port;
@@ -56,27 +56,27 @@ omapdss_of_find_source_for_first_ep(struct device_node *node)
5656
u32 port_number = 0;
5757

5858
/* Get the endpoint... */
59-
ep = of_graph_get_endpoint_by_regs(node, 0, 0);
59+
ep = of_graph_get_endpoint_by_regs(node, port, 0);
6060
if (!ep)
61-
return ERR_PTR(-EINVAL);
61+
return NULL;
6262

6363
/* ... and its remote port... */
6464
src_port = of_graph_get_remote_port(ep);
6565
of_node_put(ep);
6666
if (!src_port)
67-
return ERR_PTR(-EINVAL);
67+
return NULL;
6868

6969
/* ... and the remote port's number and parent... */
7070
of_property_read_u32(src_port, "reg", &port_number);
7171
src_node = dss_of_port_get_parent_device(src_port);
7272
of_node_put(src_port);
7373
if (!src_node)
74-
return NULL;
74+
return ERR_PTR(-EINVAL);
7575

76-
/* ... and finally the source. */
76+
/* ... and finally the connected device. */
7777
src = omapdss_find_device_by_port(src_node, port_number);
7878
of_node_put(src_node);
7979

8080
return src ? src : ERR_PTR(-EPROBE_DEFER);
8181
}
82-
EXPORT_SYMBOL_GPL(omapdss_of_find_source_for_first_ep);
82+
EXPORT_SYMBOL_GPL(omapdss_of_find_connected_device);

drivers/gpu/drm/omapdrm/dss/omapdss.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -532,7 +532,7 @@ static inline bool omapdss_device_is_enabled(struct omap_dss_device *dssdev)
532532
}
533533

534534
struct omap_dss_device *
535-
omapdss_of_find_source_for_first_ep(struct device_node *node);
535+
omapdss_of_find_connected_device(struct device_node *node, unsigned int port);
536536

537537
enum dss_writeback_channel {
538538
DSS_WB_LCD1_MGR = 0,

0 commit comments

Comments
 (0)