diff options
21 files changed, 62 insertions, 66 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c index 49720117da15..0eacd2dc302d 100644 --- a/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c +++ b/drivers/gpu/drm/omapdrm/displays/connector-analog-tv.c | |||
@@ -55,7 +55,7 @@ static int tvc_connect(struct omap_dss_device *dssdev) | |||
55 | 55 | ||
56 | r = omapdss_device_connect(src, dssdev); | 56 | r = omapdss_device_connect(src, dssdev); |
57 | if (r) { | 57 | if (r) { |
58 | omap_dss_put_device(src); | 58 | omapdss_device_put(src); |
59 | return r; | 59 | return r; |
60 | } | 60 | } |
61 | 61 | ||
@@ -68,7 +68,7 @@ static void tvc_disconnect(struct omap_dss_device *dssdev) | |||
68 | 68 | ||
69 | omapdss_device_disconnect(src, dssdev); | 69 | omapdss_device_disconnect(src, dssdev); |
70 | 70 | ||
71 | omap_dss_put_device(src); | 71 | omapdss_device_put(src); |
72 | } | 72 | } |
73 | 73 | ||
74 | static int tvc_enable(struct omap_dss_device *dssdev) | 74 | static int tvc_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c index 7876e61bf63e..754f15bc0115 100644 --- a/drivers/gpu/drm/omapdrm/displays/connector-dvi.c +++ b/drivers/gpu/drm/omapdrm/displays/connector-dvi.c | |||
@@ -69,7 +69,7 @@ static int dvic_connect(struct omap_dss_device *dssdev) | |||
69 | 69 | ||
70 | r = omapdss_device_connect(src, dssdev); | 70 | r = omapdss_device_connect(src, dssdev); |
71 | if (r) { | 71 | if (r) { |
72 | omap_dss_put_device(src); | 72 | omapdss_device_put(src); |
73 | return r; | 73 | return r; |
74 | } | 74 | } |
75 | 75 | ||
@@ -82,7 +82,7 @@ static void dvic_disconnect(struct omap_dss_device *dssdev) | |||
82 | 82 | ||
83 | omapdss_device_disconnect(src, dssdev); | 83 | omapdss_device_disconnect(src, dssdev); |
84 | 84 | ||
85 | omap_dss_put_device(src); | 85 | omapdss_device_put(src); |
86 | } | 86 | } |
87 | 87 | ||
88 | static int dvic_enable(struct omap_dss_device *dssdev) | 88 | static int dvic_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c index 5e07a8479cfc..e05f2964f8e1 100644 --- a/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c +++ b/drivers/gpu/drm/omapdrm/displays/connector-hdmi.c | |||
@@ -65,7 +65,7 @@ static int hdmic_connect(struct omap_dss_device *dssdev) | |||
65 | 65 | ||
66 | r = omapdss_device_connect(src, dssdev); | 66 | r = omapdss_device_connect(src, dssdev); |
67 | if (r) { | 67 | if (r) { |
68 | omap_dss_put_device(src); | 68 | omapdss_device_put(src); |
69 | return r; | 69 | return r; |
70 | } | 70 | } |
71 | 71 | ||
@@ -78,7 +78,7 @@ static void hdmic_disconnect(struct omap_dss_device *dssdev) | |||
78 | 78 | ||
79 | omapdss_device_disconnect(src, dssdev); | 79 | omapdss_device_disconnect(src, dssdev); |
80 | 80 | ||
81 | omap_dss_put_device(src); | 81 | omapdss_device_put(src); |
82 | } | 82 | } |
83 | 83 | ||
84 | static int hdmic_enable(struct omap_dss_device *dssdev) | 84 | static int hdmic_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c index 52ceaae14647..f665f2caea22 100644 --- a/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c +++ b/drivers/gpu/drm/omapdrm/displays/encoder-opa362.c | |||
@@ -45,7 +45,7 @@ static int opa362_connect(struct omap_dss_device *dssdev, | |||
45 | 45 | ||
46 | r = omapdss_device_connect(src, dssdev); | 46 | r = omapdss_device_connect(src, dssdev); |
47 | if (r) { | 47 | if (r) { |
48 | omap_dss_put_device(src); | 48 | omapdss_device_put(src); |
49 | return r; | 49 | return r; |
50 | } | 50 | } |
51 | 51 | ||
@@ -60,7 +60,7 @@ static void opa362_disconnect(struct omap_dss_device *dssdev, | |||
60 | 60 | ||
61 | omapdss_device_disconnect(src, &ddata->dssdev); | 61 | omapdss_device_disconnect(src, &ddata->dssdev); |
62 | 62 | ||
63 | omap_dss_put_device(src); | 63 | omapdss_device_put(src); |
64 | } | 64 | } |
65 | 65 | ||
66 | static int opa362_enable(struct omap_dss_device *dssdev) | 66 | static int opa362_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c index f4223cf7f03f..11c123ca7916 100644 --- a/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c +++ b/drivers/gpu/drm/omapdrm/displays/encoder-tfp410.c | |||
@@ -41,7 +41,7 @@ static int tfp410_connect(struct omap_dss_device *dssdev, | |||
41 | 41 | ||
42 | r = omapdss_device_connect(src, dssdev); | 42 | r = omapdss_device_connect(src, dssdev); |
43 | if (r) { | 43 | if (r) { |
44 | omap_dss_put_device(src); | 44 | omapdss_device_put(src); |
45 | return r; | 45 | return r; |
46 | } | 46 | } |
47 | 47 | ||
@@ -56,7 +56,7 @@ static void tfp410_disconnect(struct omap_dss_device *dssdev, | |||
56 | 56 | ||
57 | omapdss_device_disconnect(src, &ddata->dssdev); | 57 | omapdss_device_disconnect(src, &ddata->dssdev); |
58 | 58 | ||
59 | omap_dss_put_device(src); | 59 | omapdss_device_put(src); |
60 | } | 60 | } |
61 | 61 | ||
62 | static int tfp410_enable(struct omap_dss_device *dssdev) | 62 | static int tfp410_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c index 90e07036fb48..eb2d5af34a35 100644 --- a/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c +++ b/drivers/gpu/drm/omapdrm/displays/encoder-tpd12s015.c | |||
@@ -50,7 +50,7 @@ static int tpd_connect(struct omap_dss_device *dssdev, | |||
50 | 50 | ||
51 | r = omapdss_device_connect(src, dssdev); | 51 | r = omapdss_device_connect(src, dssdev); |
52 | if (r) { | 52 | if (r) { |
53 | omap_dss_put_device(src); | 53 | omapdss_device_put(src); |
54 | return r; | 54 | return r; |
55 | } | 55 | } |
56 | 56 | ||
@@ -74,7 +74,7 @@ static void tpd_disconnect(struct omap_dss_device *dssdev, | |||
74 | 74 | ||
75 | omapdss_device_disconnect(src, &ddata->dssdev); | 75 | omapdss_device_disconnect(src, &ddata->dssdev); |
76 | 76 | ||
77 | omap_dss_put_device(src); | 77 | omapdss_device_put(src); |
78 | } | 78 | } |
79 | 79 | ||
80 | static int tpd_enable(struct omap_dss_device *dssdev) | 80 | static int tpd_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c index 3e2bca737de0..64eab64e5f0d 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-dpi.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-dpi.c | |||
@@ -47,7 +47,7 @@ static int panel_dpi_connect(struct omap_dss_device *dssdev) | |||
47 | 47 | ||
48 | r = omapdss_device_connect(src, dssdev); | 48 | r = omapdss_device_connect(src, dssdev); |
49 | if (r) { | 49 | if (r) { |
50 | omap_dss_put_device(src); | 50 | omapdss_device_put(src); |
51 | return r; | 51 | return r; |
52 | } | 52 | } |
53 | 53 | ||
@@ -60,7 +60,7 @@ static void panel_dpi_disconnect(struct omap_dss_device *dssdev) | |||
60 | 60 | ||
61 | omapdss_device_disconnect(src, dssdev); | 61 | omapdss_device_disconnect(src, dssdev); |
62 | 62 | ||
63 | omap_dss_put_device(src); | 63 | omapdss_device_put(src); |
64 | } | 64 | } |
65 | 65 | ||
66 | static int panel_dpi_enable(struct omap_dss_device *dssdev) | 66 | static int panel_dpi_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c index 0614db1c7366..bd9401c1c11e 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-dsi-cm.c | |||
@@ -794,7 +794,7 @@ err_vc_id: | |||
794 | err_req_vc: | 794 | err_req_vc: |
795 | omapdss_device_disconnect(src, dssdev); | 795 | omapdss_device_disconnect(src, dssdev); |
796 | err_connect: | 796 | err_connect: |
797 | omap_dss_put_device(src); | 797 | omapdss_device_put(src); |
798 | return r; | 798 | return r; |
799 | } | 799 | } |
800 | 800 | ||
@@ -806,7 +806,7 @@ static void dsicm_disconnect(struct omap_dss_device *dssdev) | |||
806 | src->ops->dsi.release_vc(src, ddata->channel); | 806 | src->ops->dsi.release_vc(src, ddata->channel); |
807 | omapdss_device_disconnect(src, dssdev); | 807 | omapdss_device_disconnect(src, dssdev); |
808 | 808 | ||
809 | omap_dss_put_device(src); | 809 | omapdss_device_put(src); |
810 | } | 810 | } |
811 | 811 | ||
812 | static int dsicm_enable(struct omap_dss_device *dssdev) | 812 | static int dsicm_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c index 0698b64e5bdc..9f9caeadf5dd 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-lgphilips-lb035q02.c | |||
@@ -129,7 +129,7 @@ static int lb035q02_connect(struct omap_dss_device *dssdev) | |||
129 | 129 | ||
130 | r = omapdss_device_connect(src, dssdev); | 130 | r = omapdss_device_connect(src, dssdev); |
131 | if (r) { | 131 | if (r) { |
132 | omap_dss_put_device(src); | 132 | omapdss_device_put(src); |
133 | return r; | 133 | return r; |
134 | } | 134 | } |
135 | 135 | ||
@@ -144,7 +144,7 @@ static void lb035q02_disconnect(struct omap_dss_device *dssdev) | |||
144 | 144 | ||
145 | omapdss_device_disconnect(src, dssdev); | 145 | omapdss_device_disconnect(src, dssdev); |
146 | 146 | ||
147 | omap_dss_put_device(src); | 147 | omapdss_device_put(src); |
148 | } | 148 | } |
149 | 149 | ||
150 | static int lb035q02_enable(struct omap_dss_device *dssdev) | 150 | static int lb035q02_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c index da34c35009dd..d07c955ea06f 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-nec-nl8048hl11.c | |||
@@ -124,7 +124,7 @@ static int nec_8048_connect(struct omap_dss_device *dssdev) | |||
124 | 124 | ||
125 | r = omapdss_device_connect(src, dssdev); | 125 | r = omapdss_device_connect(src, dssdev); |
126 | if (r) { | 126 | if (r) { |
127 | omap_dss_put_device(src); | 127 | omapdss_device_put(src); |
128 | return r; | 128 | return r; |
129 | } | 129 | } |
130 | 130 | ||
@@ -137,7 +137,7 @@ static void nec_8048_disconnect(struct omap_dss_device *dssdev) | |||
137 | 137 | ||
138 | omapdss_device_disconnect(src, dssdev); | 138 | omapdss_device_disconnect(src, dssdev); |
139 | 139 | ||
140 | omap_dss_put_device(src); | 140 | omapdss_device_put(src); |
141 | } | 141 | } |
142 | 142 | ||
143 | static int nec_8048_enable(struct omap_dss_device *dssdev) | 143 | static int nec_8048_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c index d92ee6f1ae7f..d02f22a858e2 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | |||
@@ -70,7 +70,7 @@ static int sharp_ls_connect(struct omap_dss_device *dssdev) | |||
70 | 70 | ||
71 | r = omapdss_device_connect(src, dssdev); | 71 | r = omapdss_device_connect(src, dssdev); |
72 | if (r) { | 72 | if (r) { |
73 | omap_dss_put_device(src); | 73 | omapdss_device_put(src); |
74 | return r; | 74 | return r; |
75 | } | 75 | } |
76 | 76 | ||
@@ -83,7 +83,7 @@ static void sharp_ls_disconnect(struct omap_dss_device *dssdev) | |||
83 | 83 | ||
84 | omapdss_device_disconnect(src, dssdev); | 84 | omapdss_device_disconnect(src, dssdev); |
85 | 85 | ||
86 | omap_dss_put_device(src); | 86 | omapdss_device_put(src); |
87 | } | 87 | } |
88 | 88 | ||
89 | static int sharp_ls_enable(struct omap_dss_device *dssdev) | 89 | static int sharp_ls_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c index 4602f7cd1b53..a98c1181887a 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-sony-acx565akm.c | |||
@@ -519,7 +519,7 @@ static int acx565akm_connect(struct omap_dss_device *dssdev) | |||
519 | 519 | ||
520 | r = omapdss_device_connect(src, dssdev); | 520 | r = omapdss_device_connect(src, dssdev); |
521 | if (r) { | 521 | if (r) { |
522 | omap_dss_put_device(src); | 522 | omapdss_device_put(src); |
523 | return r; | 523 | return r; |
524 | } | 524 | } |
525 | 525 | ||
@@ -532,7 +532,7 @@ static void acx565akm_disconnect(struct omap_dss_device *dssdev) | |||
532 | 532 | ||
533 | omapdss_device_disconnect(src, dssdev); | 533 | omapdss_device_disconnect(src, dssdev); |
534 | 534 | ||
535 | omap_dss_put_device(src); | 535 | omapdss_device_put(src); |
536 | } | 536 | } |
537 | 537 | ||
538 | static int acx565akm_panel_power_on(struct omap_dss_device *dssdev) | 538 | static int acx565akm_panel_power_on(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c index b7c95b903d03..07c3f8143e4c 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td028ttec1.c | |||
@@ -178,7 +178,7 @@ static int td028ttec1_panel_connect(struct omap_dss_device *dssdev) | |||
178 | 178 | ||
179 | r = omapdss_device_connect(src, dssdev); | 179 | r = omapdss_device_connect(src, dssdev); |
180 | if (r) { | 180 | if (r) { |
181 | omap_dss_put_device(src); | 181 | omapdss_device_put(src); |
182 | return r; | 182 | return r; |
183 | } | 183 | } |
184 | 184 | ||
@@ -191,7 +191,7 @@ static void td028ttec1_panel_disconnect(struct omap_dss_device *dssdev) | |||
191 | 191 | ||
192 | omapdss_device_disconnect(src, dssdev); | 192 | omapdss_device_disconnect(src, dssdev); |
193 | 193 | ||
194 | omap_dss_put_device(src); | 194 | omapdss_device_put(src); |
195 | } | 195 | } |
196 | 196 | ||
197 | static int td028ttec1_panel_enable(struct omap_dss_device *dssdev) | 197 | static int td028ttec1_panel_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c index e6b2381b971c..c32ab872e9f9 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-tpo-td043mtea1.c | |||
@@ -349,7 +349,7 @@ static int tpo_td043_connect(struct omap_dss_device *dssdev) | |||
349 | 349 | ||
350 | r = omapdss_device_connect(src, dssdev); | 350 | r = omapdss_device_connect(src, dssdev); |
351 | if (r) { | 351 | if (r) { |
352 | omap_dss_put_device(src); | 352 | omapdss_device_put(src); |
353 | return r; | 353 | return r; |
354 | } | 354 | } |
355 | 355 | ||
@@ -362,7 +362,7 @@ static void tpo_td043_disconnect(struct omap_dss_device *dssdev) | |||
362 | 362 | ||
363 | omapdss_device_disconnect(src, dssdev); | 363 | omapdss_device_disconnect(src, dssdev); |
364 | 364 | ||
365 | omap_dss_put_device(src); | 365 | omapdss_device_put(src); |
366 | } | 366 | } |
367 | 367 | ||
368 | static int tpo_td043_enable(struct omap_dss_device *dssdev) | 368 | static int tpo_td043_enable(struct omap_dss_device *dssdev) |
diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c index 9f01a4f28145..08846eea5a53 100644 --- a/drivers/gpu/drm/omapdrm/dss/base.c +++ b/drivers/gpu/drm/omapdrm/dss/base.c | |||
@@ -91,6 +91,27 @@ static bool omapdss_device_is_registered(struct device_node *node) | |||
91 | return found; | 91 | return found; |
92 | } | 92 | } |
93 | 93 | ||
94 | struct omap_dss_device *omapdss_device_get(struct omap_dss_device *dssdev) | ||
95 | { | ||
96 | if (!try_module_get(dssdev->owner)) | ||
97 | return NULL; | ||
98 | |||
99 | if (get_device(dssdev->dev) == NULL) { | ||
100 | module_put(dssdev->owner); | ||
101 | return NULL; | ||
102 | } | ||
103 | |||
104 | return dssdev; | ||
105 | } | ||
106 | EXPORT_SYMBOL(omapdss_device_get); | ||
107 | |||
108 | void omapdss_device_put(struct omap_dss_device *dssdev) | ||
109 | { | ||
110 | put_device(dssdev->dev); | ||
111 | module_put(dssdev->owner); | ||
112 | } | ||
113 | EXPORT_SYMBOL(omapdss_device_put); | ||
114 | |||
94 | struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, | 115 | struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, |
95 | unsigned int port) | 116 | unsigned int port) |
96 | { | 117 | { |
@@ -98,7 +119,7 @@ struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, | |||
98 | 119 | ||
99 | list_for_each_entry(dssdev, &omapdss_devices_list, list) { | 120 | list_for_each_entry(dssdev, &omapdss_devices_list, list) { |
100 | if (dssdev->dev->of_node == src && dssdev->port_num == port) | 121 | if (dssdev->dev->of_node == src && dssdev->port_num == port) |
101 | return omap_dss_get_device(dssdev); | 122 | return omapdss_device_get(dssdev); |
102 | } | 123 | } |
103 | 124 | ||
104 | return NULL; | 125 | return NULL; |
@@ -147,9 +168,9 @@ struct omap_dss_device *omapdss_device_get_next(struct omap_dss_device *from, | |||
147 | 168 | ||
148 | done: | 169 | done: |
149 | if (from) | 170 | if (from) |
150 | omap_dss_put_device(from); | 171 | omapdss_device_put(from); |
151 | if (dssdev) | 172 | if (dssdev) |
152 | omap_dss_get_device(dssdev); | 173 | omapdss_device_get(dssdev); |
153 | 174 | ||
154 | mutex_unlock(&omapdss_devices_lock); | 175 | mutex_unlock(&omapdss_devices_lock); |
155 | return dssdev; | 176 | return dssdev; |
diff --git a/drivers/gpu/drm/omapdrm/dss/display.c b/drivers/gpu/drm/omapdrm/dss/display.c index 178d88841e0c..53cb46f6503d 100644 --- a/drivers/gpu/drm/omapdrm/dss/display.c +++ b/drivers/gpu/drm/omapdrm/dss/display.c | |||
@@ -21,9 +21,6 @@ | |||
21 | #define DSS_SUBSYS_NAME "DISPLAY" | 21 | #define DSS_SUBSYS_NAME "DISPLAY" |
22 | 22 | ||
23 | #include <linux/kernel.h> | 23 | #include <linux/kernel.h> |
24 | #include <linux/module.h> | ||
25 | #include <linux/jiffies.h> | ||
26 | #include <linux/platform_device.h> | ||
27 | #include <linux/of.h> | 24 | #include <linux/of.h> |
28 | 25 | ||
29 | #include "omapdss.h" | 26 | #include "omapdss.h" |
@@ -52,24 +49,3 @@ void omapdss_display_init(struct omap_dss_device *dssdev) | |||
52 | "display%u", id); | 49 | "display%u", id); |
53 | } | 50 | } |
54 | EXPORT_SYMBOL_GPL(omapdss_display_init); | 51 | EXPORT_SYMBOL_GPL(omapdss_display_init); |
55 | |||
56 | struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev) | ||
57 | { | ||
58 | if (!try_module_get(dssdev->owner)) | ||
59 | return NULL; | ||
60 | |||
61 | if (get_device(dssdev->dev) == NULL) { | ||
62 | module_put(dssdev->owner); | ||
63 | return NULL; | ||
64 | } | ||
65 | |||
66 | return dssdev; | ||
67 | } | ||
68 | EXPORT_SYMBOL(omap_dss_get_device); | ||
69 | |||
70 | void omap_dss_put_device(struct omap_dss_device *dssdev) | ||
71 | { | ||
72 | put_device(dssdev->dev); | ||
73 | module_put(dssdev->owner); | ||
74 | } | ||
75 | EXPORT_SYMBOL(omap_dss_put_device); | ||
diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h index 5f71f6885991..96011e42da05 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h | |||
@@ -492,6 +492,8 @@ void omapdss_display_init(struct omap_dss_device *dssdev); | |||
492 | 492 | ||
493 | void omapdss_device_register(struct omap_dss_device *dssdev); | 493 | void omapdss_device_register(struct omap_dss_device *dssdev); |
494 | void omapdss_device_unregister(struct omap_dss_device *dssdev); | 494 | void omapdss_device_unregister(struct omap_dss_device *dssdev); |
495 | struct omap_dss_device *omapdss_device_get(struct omap_dss_device *dssdev); | ||
496 | void omapdss_device_put(struct omap_dss_device *dssdev); | ||
495 | struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, | 497 | struct omap_dss_device *omapdss_find_device_by_port(struct device_node *src, |
496 | unsigned int port); | 498 | unsigned int port); |
497 | struct omap_dss_device *omapdss_device_get_next(struct omap_dss_device *from, | 499 | struct omap_dss_device *omapdss_device_get_next(struct omap_dss_device *from, |
@@ -501,9 +503,6 @@ int omapdss_device_connect(struct omap_dss_device *src, | |||
501 | void omapdss_device_disconnect(struct omap_dss_device *src, | 503 | void omapdss_device_disconnect(struct omap_dss_device *src, |
502 | struct omap_dss_device *dst); | 504 | struct omap_dss_device *dst); |
503 | 505 | ||
504 | struct omap_dss_device *omap_dss_get_device(struct omap_dss_device *dssdev); | ||
505 | void omap_dss_put_device(struct omap_dss_device *dssdev); | ||
506 | |||
507 | int omap_dss_get_num_overlay_managers(void); | 506 | int omap_dss_get_num_overlay_managers(void); |
508 | 507 | ||
509 | int omap_dss_get_num_overlays(void); | 508 | int omap_dss_get_num_overlays(void); |
diff --git a/drivers/gpu/drm/omapdrm/dss/output.c b/drivers/gpu/drm/omapdrm/dss/output.c index e62da96f83af..b5bf7a5e35d9 100644 --- a/drivers/gpu/drm/omapdrm/dss/output.c +++ b/drivers/gpu/drm/omapdrm/dss/output.c | |||
@@ -93,7 +93,7 @@ struct omap_dss_device *omapdss_find_output_from_display(struct omap_dss_device | |||
93 | dssdev = dssdev->src; | 93 | dssdev = dssdev->src; |
94 | 94 | ||
95 | if (dssdev->id != 0) | 95 | if (dssdev->id != 0) |
96 | return omap_dss_get_device(dssdev); | 96 | return omapdss_device_get(dssdev); |
97 | 97 | ||
98 | return NULL; | 98 | return NULL; |
99 | } | 99 | } |
diff --git a/drivers/gpu/drm/omapdrm/omap_connector.c b/drivers/gpu/drm/omapdrm/omap_connector.c index 3b60086f2938..69ebb0fa1df5 100644 --- a/drivers/gpu/drm/omapdrm/omap_connector.c +++ b/drivers/gpu/drm/omapdrm/omap_connector.c | |||
@@ -98,7 +98,7 @@ static void omap_connector_destroy(struct drm_connector *connector) | |||
98 | drm_connector_cleanup(connector); | 98 | drm_connector_cleanup(connector); |
99 | kfree(omap_connector); | 99 | kfree(omap_connector); |
100 | 100 | ||
101 | omap_dss_put_device(dssdev); | 101 | omapdss_device_put(dssdev); |
102 | } | 102 | } |
103 | 103 | ||
104 | #define MAX_EDID 512 | 104 | #define MAX_EDID 512 |
@@ -254,7 +254,7 @@ struct drm_connector *omap_connector_init(struct drm_device *dev, | |||
254 | 254 | ||
255 | DBG("%s", dssdev->name); | 255 | DBG("%s", dssdev->name); |
256 | 256 | ||
257 | omap_dss_get_device(dssdev); | 257 | omapdss_device_get(dssdev); |
258 | 258 | ||
259 | omap_connector = kzalloc(sizeof(*omap_connector), GFP_KERNEL); | 259 | omap_connector = kzalloc(sizeof(*omap_connector), GFP_KERNEL); |
260 | if (!omap_connector) | 260 | if (!omap_connector) |
diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.c b/drivers/gpu/drm/omapdrm/omap_crtc.c index 6c4d40b824e4..e18ca6cdc0d6 100644 --- a/drivers/gpu/drm/omapdrm/omap_crtc.c +++ b/drivers/gpu/drm/omapdrm/omap_crtc.c | |||
@@ -704,7 +704,7 @@ struct drm_crtc *omap_crtc_init(struct drm_device *dev, | |||
704 | 704 | ||
705 | out = omapdss_find_output_from_display(dssdev); | 705 | out = omapdss_find_output_from_display(dssdev); |
706 | channel = out->dispc_channel; | 706 | channel = out->dispc_channel; |
707 | omap_dss_put_device(out); | 707 | omapdss_device_put(out); |
708 | 708 | ||
709 | DBG("%s", channel_names[channel]); | 709 | DBG("%s", channel_names[channel]); |
710 | 710 | ||
diff --git a/drivers/gpu/drm/omapdrm/omap_drv.c b/drivers/gpu/drm/omapdrm/omap_drv.c index 4f402eb8088d..a3b7dbf1b92b 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.c +++ b/drivers/gpu/drm/omapdrm/omap_drv.c | |||
@@ -161,7 +161,7 @@ static void omap_disconnect_dssdevs(struct drm_device *ddev) | |||
161 | 161 | ||
162 | omapdss_device_disconnect(dssdev, NULL); | 162 | omapdss_device_disconnect(dssdev, NULL); |
163 | priv->dssdevs[i] = NULL; | 163 | priv->dssdevs[i] = NULL; |
164 | omap_dss_put_device(dssdev); | 164 | omapdss_device_put(dssdev); |
165 | } | 165 | } |
166 | 166 | ||
167 | priv->num_dssdevs = 0; | 167 | priv->num_dssdevs = 0; |
@@ -191,17 +191,17 @@ static int omap_connect_dssdevs(struct drm_device *ddev) | |||
191 | for_each_dss_display(dssdev) { | 191 | for_each_dss_display(dssdev) { |
192 | r = omapdss_device_connect(dssdev, NULL); | 192 | r = omapdss_device_connect(dssdev, NULL); |
193 | if (r == -EPROBE_DEFER) { | 193 | if (r == -EPROBE_DEFER) { |
194 | omap_dss_put_device(dssdev); | 194 | omapdss_device_put(dssdev); |
195 | goto cleanup; | 195 | goto cleanup; |
196 | } else if (r) { | 196 | } else if (r) { |
197 | dev_warn(dssdev->dev, "could not connect display: %s\n", | 197 | dev_warn(dssdev->dev, "could not connect display: %s\n", |
198 | dssdev->name); | 198 | dssdev->name); |
199 | } else { | 199 | } else { |
200 | omap_dss_get_device(dssdev); | 200 | omapdss_device_get(dssdev); |
201 | priv->dssdevs[priv->num_dssdevs++] = dssdev; | 201 | priv->dssdevs[priv->num_dssdevs++] = dssdev; |
202 | if (priv->num_dssdevs == ARRAY_SIZE(priv->dssdevs)) { | 202 | if (priv->num_dssdevs == ARRAY_SIZE(priv->dssdevs)) { |
203 | /* To balance the 'for_each_dss_display' loop */ | 203 | /* To balance the 'for_each_dss_display' loop */ |
204 | omap_dss_put_device(dssdev); | 204 | omapdss_device_put(dssdev); |
205 | break; | 205 | break; |
206 | } | 206 | } |
207 | } | 207 | } |