Something went wrong. Try again.
(I'm so sorry!) Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
Something went wrong. Try again.
1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889/* SPDX-License-Identifier: GPL-2.0 or MIT */
/* * Copyright (c) 2024 Intel * Copyright (c) 2024 Red Hat */
#ifndef __DRM_PANIC_H__#define __DRM_PANIC_H__
#include <linux/types.h>#include <linux/iosys-map.h>
#include <drm/drm_fourcc.h>
struct page;
enum drm_panic_type { DRM_PANIC_TYPE_KMSG, DRM_PANIC_TYPE_USER, DRM_PANIC_TYPE_QR,};
/** * struct drm_scanout_buffer - DRM scanout buffer * * This structure holds the information necessary for drm_panic to draw the * panic screen, and display it. */struct drm_scanout_buffer { /** * @format: * * drm format of the scanout buffer. */ const struct drm_format_info *format;
/** * @map: * * Virtual address of the scanout buffer, either in memory or iomem. * The scanout buffer should be in linear format, and can be directly * sent to the display hardware. Tearing is not an issue for the panic * screen. */ struct iosys_map map[DRM_FORMAT_MAX_PLANES];
/** * @pages: Optional, if the scanout buffer is not mapped, set this field * to the array of pages of the scanout buffer. The panic code will use * kmap_local_page_try_from_panic() to map one page at a time to write * all the pixels. This array shouldn't be allocated from the * get_scanoutbuffer() callback. * The scanout buffer should be in linear format. */ struct page **pages;
/** * @width: Width of the scanout buffer, in pixels. */ unsigned int width;
/** * @height: Height of the scanout buffer, in pixels. */ unsigned int height;
/** * @pitch: Length in bytes between the start of two consecutive lines. */ unsigned int pitch[DRM_FORMAT_MAX_PLANES];
/** * @set_pixel: Optional function, to set a pixel color on the * framebuffer. It allows to handle special tiling format inside the * driver. It takes precedence over the @map and @pages fields. */ void (*set_pixel)(struct drm_scanout_buffer *sb, unsigned int x, unsigned int y, u32 color);
/** * @private: private pointer that you can use in the callbacks * set_pixel() */ void *private;};
#endif /* __DRM_PANIC_H__ */