diff options
Diffstat (limited to 'drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c')
-rw-r--r-- | drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | 83 |
1 files changed, 5 insertions, 78 deletions
diff --git a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c index abfd1f6e3327..529a017602e4 100644 --- a/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c +++ b/drivers/gpu/drm/omapdrm/displays/panel-sharp-ls037v7dw01.c | |||
@@ -18,7 +18,6 @@ | |||
18 | #include <linux/slab.h> | 18 | #include <linux/slab.h> |
19 | #include <linux/regulator/consumer.h> | 19 | #include <linux/regulator/consumer.h> |
20 | #include <video/omapdss.h> | 20 | #include <video/omapdss.h> |
21 | #include <video/omap-panel-data.h> | ||
22 | 21 | ||
23 | struct panel_drv_data { | 22 | struct panel_drv_data { |
24 | struct omap_dss_device dssdev; | 23 | struct omap_dss_device dssdev; |
@@ -197,73 +196,6 @@ static struct omap_dss_driver sharp_ls_ops = { | |||
197 | .get_resolution = omapdss_default_get_resolution, | 196 | .get_resolution = omapdss_default_get_resolution, |
198 | }; | 197 | }; |
199 | 198 | ||
200 | static int sharp_ls_get_gpio(struct device *dev, int gpio, unsigned long flags, | ||
201 | char *desc, struct gpio_desc **gpiod) | ||
202 | { | ||
203 | struct gpio_desc *gd; | ||
204 | int r; | ||
205 | |||
206 | *gpiod = NULL; | ||
207 | |||
208 | r = devm_gpio_request_one(dev, gpio, flags, desc); | ||
209 | if (r) | ||
210 | return r == -ENOENT ? 0 : r; | ||
211 | |||
212 | gd = gpio_to_desc(gpio); | ||
213 | if (IS_ERR(gd)) | ||
214 | return PTR_ERR(gd) == -ENOENT ? 0 : PTR_ERR(gd); | ||
215 | |||
216 | *gpiod = gd; | ||
217 | return 0; | ||
218 | } | ||
219 | |||
220 | static int sharp_ls_probe_pdata(struct platform_device *pdev) | ||
221 | { | ||
222 | const struct panel_sharp_ls037v7dw01_platform_data *pdata; | ||
223 | struct panel_drv_data *ddata = platform_get_drvdata(pdev); | ||
224 | struct omap_dss_device *dssdev, *in; | ||
225 | int r; | ||
226 | |||
227 | pdata = dev_get_platdata(&pdev->dev); | ||
228 | |||
229 | in = omap_dss_find_output(pdata->source); | ||
230 | if (in == NULL) { | ||
231 | dev_err(&pdev->dev, "failed to find video source '%s'\n", | ||
232 | pdata->source); | ||
233 | return -EPROBE_DEFER; | ||
234 | } | ||
235 | |||
236 | ddata->in = in; | ||
237 | |||
238 | ddata->data_lines = pdata->data_lines; | ||
239 | |||
240 | dssdev = &ddata->dssdev; | ||
241 | dssdev->name = pdata->name; | ||
242 | |||
243 | r = sharp_ls_get_gpio(&pdev->dev, pdata->mo_gpio, GPIOF_OUT_INIT_LOW, | ||
244 | "lcd MO", &ddata->mo_gpio); | ||
245 | if (r) | ||
246 | return r; | ||
247 | r = sharp_ls_get_gpio(&pdev->dev, pdata->lr_gpio, GPIOF_OUT_INIT_HIGH, | ||
248 | "lcd LR", &ddata->lr_gpio); | ||
249 | if (r) | ||
250 | return r; | ||
251 | r = sharp_ls_get_gpio(&pdev->dev, pdata->ud_gpio, GPIOF_OUT_INIT_HIGH, | ||
252 | "lcd UD", &ddata->ud_gpio); | ||
253 | if (r) | ||
254 | return r; | ||
255 | r = sharp_ls_get_gpio(&pdev->dev, pdata->resb_gpio, GPIOF_OUT_INIT_LOW, | ||
256 | "lcd RESB", &ddata->resb_gpio); | ||
257 | if (r) | ||
258 | return r; | ||
259 | r = sharp_ls_get_gpio(&pdev->dev, pdata->ini_gpio, GPIOF_OUT_INIT_LOW, | ||
260 | "lcd INI", &ddata->ini_gpio); | ||
261 | if (r) | ||
262 | return r; | ||
263 | |||
264 | return 0; | ||
265 | } | ||
266 | |||
267 | static int sharp_ls_get_gpio_of(struct device *dev, int index, int val, | 199 | static int sharp_ls_get_gpio_of(struct device *dev, int index, int val, |
268 | const char *desc, struct gpio_desc **gpiod) | 200 | const char *desc, struct gpio_desc **gpiod) |
269 | { | 201 | { |
@@ -340,17 +272,12 @@ static int sharp_ls_probe(struct platform_device *pdev) | |||
340 | 272 | ||
341 | platform_set_drvdata(pdev, ddata); | 273 | platform_set_drvdata(pdev, ddata); |
342 | 274 | ||
343 | if (dev_get_platdata(&pdev->dev)) { | 275 | if (!pdev->dev.of_node) |
344 | r = sharp_ls_probe_pdata(pdev); | ||
345 | if (r) | ||
346 | return r; | ||
347 | } else if (pdev->dev.of_node) { | ||
348 | r = sharp_ls_probe_of(pdev); | ||
349 | if (r) | ||
350 | return r; | ||
351 | } else { | ||
352 | return -ENODEV; | 276 | return -ENODEV; |
353 | } | 277 | |
278 | r = sharp_ls_probe_of(pdev); | ||
279 | if (r) | ||
280 | return r; | ||
354 | 281 | ||
355 | ddata->videomode = sharp_ls_timings; | 282 | ddata->videomode = sharp_ls_timings; |
356 | 283 | ||