diff options
author | Steffen Trumtrar <s.trumtrar@pengutronix.de> | 2012-10-28 13:28:06 -0400 |
---|---|---|
committer | Steffen Trumtrar <s.trumtrar@pengutronix.de> | 2013-01-24 03:04:14 -0500 |
commit | edb37a95c58147f89713e6c5cd220fa8fdfb4833 (patch) | |
tree | f4f344a417e57d115e80f2bffc05d2b81c08986c /drivers/gpu/drm/drm_modes.c | |
parent | ebc64e453857e93b230881f48126257be9aa8830 (diff) |
drm_modes: add of_videomode helpers
Add helper to get drm_display_mode from devicetree.
Signed-off-by: Steffen Trumtrar <s.trumtrar@pengutronix.de>
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/gpu/drm/drm_modes.c')
-rw-r--r-- | drivers/gpu/drm/drm_modes.c | 33 |
1 files changed, 33 insertions, 0 deletions
diff --git a/drivers/gpu/drm/drm_modes.c b/drivers/gpu/drm/drm_modes.c index 9f3f20bde399..04fa6f1808d1 100644 --- a/drivers/gpu/drm/drm_modes.c +++ b/drivers/gpu/drm/drm_modes.c | |||
@@ -35,6 +35,7 @@ | |||
35 | #include <linux/export.h> | 35 | #include <linux/export.h> |
36 | #include <drm/drmP.h> | 36 | #include <drm/drmP.h> |
37 | #include <drm/drm_crtc.h> | 37 | #include <drm/drm_crtc.h> |
38 | #include <video/of_videomode.h> | ||
38 | #include <video/videomode.h> | 39 | #include <video/videomode.h> |
39 | 40 | ||
40 | /** | 41 | /** |
@@ -541,6 +542,38 @@ int drm_display_mode_from_videomode(const struct videomode *vm, | |||
541 | EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); | 542 | EXPORT_SYMBOL_GPL(drm_display_mode_from_videomode); |
542 | #endif | 543 | #endif |
543 | 544 | ||
545 | #if IS_ENABLED(CONFIG_OF_VIDEOMODE) | ||
546 | /** | ||
547 | * of_get_drm_display_mode - get a drm_display_mode from devicetree | ||
548 | * @np: device_node with the timing specification | ||
549 | * @dmode: will be set to the return value | ||
550 | * @index: index into the list of display timings in devicetree | ||
551 | * | ||
552 | * This function is expensive and should only be used, if only one mode is to be | ||
553 | * read from DT. To get multiple modes start with of_get_display_timings and | ||
554 | * work with that instead. | ||
555 | */ | ||
556 | int of_get_drm_display_mode(struct device_node *np, | ||
557 | struct drm_display_mode *dmode, int index) | ||
558 | { | ||
559 | struct videomode vm; | ||
560 | int ret; | ||
561 | |||
562 | ret = of_get_videomode(np, &vm, index); | ||
563 | if (ret) | ||
564 | return ret; | ||
565 | |||
566 | drm_display_mode_from_videomode(&vm, dmode); | ||
567 | |||
568 | pr_debug("%s: got %dx%d display mode from %s\n", | ||
569 | of_node_full_name(np), vm.hactive, vm.vactive, np->name); | ||
570 | drm_mode_debug_printmodeline(dmode); | ||
571 | |||
572 | return 0; | ||
573 | } | ||
574 | EXPORT_SYMBOL_GPL(of_get_drm_display_mode); | ||
575 | #endif | ||
576 | |||
544 | /** | 577 | /** |
545 | * drm_mode_set_name - set the name on a mode | 578 | * drm_mode_set_name - set the name on a mode |
546 | * @mode: name will be set in this mode | 579 | * @mode: name will be set in this mode |