aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/video/of_videomode.c
diff options
context:
space:
mode:
authorSteffen Trumtrar <s.trumtrar@pengutronix.de>2012-10-04 09:32:52 -0400
committerSteffen Trumtrar <s.trumtrar@pengutronix.de>2013-01-24 03:03:48 -0500
commitcc3f414cf2e404130584b63d373161ba6fd24bc2 (patch)
tree08d61d026631c79a176f514fb1364b71011599ba /drivers/video/of_videomode.c
parent8714c0cecfc28f7ce73a520be4831f09743c4fd7 (diff)
video: add of helper for display timings/videomode
This adds support for reading display timings from DT into a struct display_timings. The of_display_timing implementation supports multiple subnodes. All children are read into an array, that can be queried. If no native mode is specified, the first subnode will be used. For cases where the graphics driver knows there can be only one mode description or where the driver only supports one mode, a helper function of_get_videomode is added, that gets a struct videomode from DT. Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de> Signed-off-by: Philipp Zabel <p.zabel@pengutronix.de> Acked-by: Stephen Warren <swarren@nvidia.com> Reviewed-by: Thierry Reding <thierry.reding@avionic-design.de> Acked-by: Thierry Reding <thierry.reding@avionic-design.de> Tested-by: Thierry Reding <thierry.reding@avionic-design.de> Tested-by: Philipp Zabel <p.zabel@pengutronix.de> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Acked-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Tested-by: Afzal Mohammed <Afzal@ti.com> Tested-by: Rob Clark <robclark@gmail.com> Tested-by: Leela Krishna Amudala <leelakrishna.a@gmail.com>
Diffstat (limited to 'drivers/video/of_videomode.c')
-rw-r--r--drivers/video/of_videomode.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/drivers/video/of_videomode.c b/drivers/video/of_videomode.c
new file mode 100644
index 000000000000..5b8066cd397f
--- /dev/null
+++ b/drivers/video/of_videomode.c
@@ -0,0 +1,54 @@
1/*
2 * generic videomode helper
3 *
4 * Copyright (c) 2012 Steffen Trumtrar <s.trumtrar@pengutronix.de>, Pengutronix
5 *
6 * This file is released under the GPLv2
7 */
8#include <linux/errno.h>
9#include <linux/export.h>
10#include <linux/of.h>
11#include <video/display_timing.h>
12#include <video/of_display_timing.h>
13#include <video/of_videomode.h>
14#include <video/videomode.h>
15
16/**
17 * of_get_videomode - get the videomode #<index> from devicetree
18 * @np - devicenode with the display_timings
19 * @vm - set to return value
20 * @index - index into list of display_timings
21 * (Set this to OF_USE_NATIVE_MODE to use whatever mode is
22 * specified as native mode in the DT.)
23 *
24 * DESCRIPTION:
25 * Get a list of all display timings and put the one
26 * specified by index into *vm. This function should only be used, if
27 * only one videomode is to be retrieved. A driver that needs to work
28 * with multiple/all videomodes should work with
29 * of_get_display_timings instead.
30 **/
31int of_get_videomode(struct device_node *np, struct videomode *vm,
32 int index)
33{
34 struct display_timings *disp;
35 int ret;
36
37 disp = of_get_display_timings(np);
38 if (!disp) {
39 pr_err("%s: no timings specified\n", of_node_full_name(np));
40 return -EINVAL;
41 }
42
43 if (index == OF_USE_NATIVE_MODE)
44 index = disp->native_mode;
45
46 ret = videomode_from_timing(disp, vm, index);
47 if (ret)
48 return ret;
49
50 display_timings_release(disp);
51
52 return 0;
53}
54EXPORT_SYMBOL_GPL(of_get_videomode);