aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/drm_print.c
diff options
context:
space:
mode:
authorDave Airlie <airlied@redhat.com>2017-12-03 14:38:52 -0500
committerDave Airlie <airlied@redhat.com>2017-12-03 14:42:49 -0500
commit2c1c55cb75a9c72f9726fabb8c3607947711a8df (patch)
treefa835b954149545970eaa256107876d9a24bbf28 /drivers/gpu/drm/drm_print.c
parentae64f9bd1d3621b5e60d7363bc20afb46aede215 (diff)
parent2f51be0945b9e0b9baafe47289c802be6d4c7980 (diff)
Merge tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc into drm-next
Cross-subsystem Changes: - device tree doc for the Mitsubishi AA070MC01 and Tianma TM070RVHG71 panels (Lukasz Majewski) and for a 2nd endpoint on stm32 (Philippe Cornu) Core Changes: The most important changes are: - Add drm_driver .last_close and .output_poll_changed helpers to reduce fbdev emulation footprint in drivers (Noralf) - Fix plane clipping in core and for vmwgfx (Ville) Then we have a bunch of of improvement for print and debug such as the addition of a framebuffer debugfs file. ELD connector, HDMI and improvements. And a bunch of misc improvements, clean ups and style changes and doc updates [airlied: drop eld bits from amdgpu_dm] Driver Changes: - sii8620: filter unsupported modes and add DVI mode support (Maciej Purski) - rockchip: analogix_dp: Remove unnecessary init code (Jeffy Chen) - virtio, cirrus: add fb create_handle support to enable screenshots(Lepton Wu) - virtio: replace reference/unreference with get/put (Aastha Gupta) - vc4, gma500: Convert timers to use timer_setup() (Kees Cook) - vc4: Reject HDMI modes with too high of clocks (Eric) - vc4: Add support for more pixel formats (Dave Stevenson) - stm: dsi: Rename driver name to "stm32-display-dsi" (Philippe Cornu) - stm: ltdc: add a 2nd endpoint (Philippe Cornu) - via: use monotonic time for VIA_WAIT_IRQ (Arnd Bergmann) * tag 'drm-misc-next-2017-11-30' of git://anongit.freedesktop.org/drm/drm-misc: (96 commits) drm/bridge: tc358767: add copyright lines MAINTAINERS: change maintainer for Rockchip drm drivers drm/vblank: Fix vblank timestamp debugs drm/via: use monotonic time for VIA_WAIT_IRQ dma-buf: Fix ifnullfree.cocci warnings drm/printer: Add drm_vprintf() drm/edid: Allow HDMI infoframe without VIC or S3D video/hdmi: Allow "empty" HDMI infoframes dma-buf/fence: Fix lock inversion within dma-fence-array drm/sti: Handle return value of platform_get_irq_byname drm/vc4: Add support for NV21 and NV61. drm/vc4: Use .pixel_order instead of custom .flip_cbcr drm/vc4: Add support for DRM_FORMAT_RGB888 and DRM_FORMAT_BGR888 drm: Move drm_plane_helper_check_state() into drm_atomic_helper.c drm: Check crtc_state->enable rather than crtc->enabled in drm_plane_helper_check_state() drm/vmwgfx: Try to fix plane clipping drm/vmwgfx: Use drm_plane_helper_check_state() drm/vmwgfx: Remove bogus crtc coords vs fb size check gpu: gma500: remove unneeded DRIVER_LICENSE #define drm: don't link DP aux i2c adapter to the hardware device node ...
Diffstat (limited to 'drivers/gpu/drm/drm_print.c')
-rw-r--r--drivers/gpu/drm/drm_print.c54
1 files changed, 50 insertions, 4 deletions
diff --git a/drivers/gpu/drm/drm_print.c b/drivers/gpu/drm/drm_print.c
index 74c466aca622..781518fd88e3 100644
--- a/drivers/gpu/drm/drm_print.c
+++ b/drivers/gpu/drm/drm_print.c
@@ -23,6 +23,8 @@
23 * Rob Clark <robdclark@gmail.com> 23 * Rob Clark <robdclark@gmail.com>
24 */ 24 */
25 25
26#define DEBUG /* for pr_debug() */
27
26#include <stdarg.h> 28#include <stdarg.h>
27#include <linux/seq_file.h> 29#include <linux/seq_file.h>
28#include <drm/drmP.h> 30#include <drm/drmP.h>
@@ -53,13 +55,57 @@ EXPORT_SYMBOL(__drm_printfn_debug);
53 */ 55 */
54void drm_printf(struct drm_printer *p, const char *f, ...) 56void drm_printf(struct drm_printer *p, const char *f, ...)
55{ 57{
56 struct va_format vaf;
57 va_list args; 58 va_list args;
58 59
59 va_start(args, f); 60 va_start(args, f);
60 vaf.fmt = f; 61 drm_vprintf(p, f, &args);
61 vaf.va = &args;
62 p->printfn(p, &vaf);
63 va_end(args); 62 va_end(args);
64} 63}
65EXPORT_SYMBOL(drm_printf); 64EXPORT_SYMBOL(drm_printf);
65
66#define DRM_PRINTK_FMT "[" DRM_NAME ":%s]%s %pV"
67
68void drm_dev_printk(const struct device *dev, const char *level,
69 unsigned int category, const char *function_name,
70 const char *prefix, const char *format, ...)
71{
72 struct va_format vaf;
73 va_list args;
74
75 if (category != DRM_UT_NONE && !(drm_debug & category))
76 return;
77
78 va_start(args, format);
79 vaf.fmt = format;
80 vaf.va = &args;
81
82 if (dev)
83 dev_printk(level, dev, DRM_PRINTK_FMT, function_name, prefix,
84 &vaf);
85 else
86 printk("%s" DRM_PRINTK_FMT, level, function_name, prefix, &vaf);
87
88 va_end(args);
89}
90EXPORT_SYMBOL(drm_dev_printk);
91
92void drm_printk(const char *level, unsigned int category,
93 const char *format, ...)
94{
95 struct va_format vaf;
96 va_list args;
97
98 if (category != DRM_UT_NONE && !(drm_debug & category))
99 return;
100
101 va_start(args, format);
102 vaf.fmt = format;
103 vaf.va = &args;
104
105 printk("%s" "[" DRM_NAME ":%ps]%s %pV",
106 level, __builtin_return_address(0),
107 strcmp(level, KERN_ERR) == 0 ? " *ERROR*" : "", &vaf);
108
109 va_end(args);
110}
111EXPORT_SYMBOL(drm_printk);