Commit | Line | Data |
---|---|---|
ae4df11a LP |
1 | /* |
2 | * Copyright (c) 2016 Laurent Pinchart <laurent.pinchart@ideasonboard.com> | |
3 | * | |
4 | * Permission to use, copy, modify, distribute, and sell this software and its | |
5 | * documentation for any purpose is hereby granted without fee, provided that | |
6 | * the above copyright notice appear in all copies and that both that copyright | |
7 | * notice and this permission notice appear in supporting documentation, and | |
8 | * that the name of the copyright holders not be used in advertising or | |
9 | * publicity pertaining to distribution of the software without specific, | |
10 | * written prior permission. The copyright holders make no representations | |
11 | * about the suitability of this software for any purpose. It is provided "as | |
12 | * is" without express or implied warranty. | |
13 | * | |
14 | * THE COPYRIGHT HOLDERS DISCLAIM ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, | |
15 | * INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO | |
16 | * EVENT SHALL THE COPYRIGHT HOLDERS BE LIABLE FOR ANY SPECIAL, INDIRECT OR | |
17 | * CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, | |
18 | * DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER | |
19 | * TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE | |
20 | * OF THIS SOFTWARE. | |
21 | */ | |
22 | #ifndef __DRM_FOURCC_H__ | |
23 | #define __DRM_FOURCC_H__ | |
24 | ||
25 | #include <linux/types.h> | |
26 | #include <uapi/drm/drm_fourcc.h> | |
27 | ||
6a0f9ebf VS |
28 | struct drm_device; |
29 | struct drm_mode_fb_cmd2; | |
30 | ||
84770cc2 LP |
31 | /** |
32 | * struct drm_format_info - information about a DRM format | |
33 | * @format: 4CC format identifier (DRM_FORMAT_*) | |
34 | * @depth: Color depth (number of bits per pixel excluding padding bits), | |
35 | * valid for a subset of RGB formats only. This is a legacy field, do not | |
36 | * use in new code and set to 0 for new formats. | |
37 | * @num_planes: Number of color planes (1 to 3) | |
38 | * @cpp: Number of bytes per pixel (per plane) | |
39 | * @hsub: Horizontal chroma subsampling factor | |
40 | * @vsub: Vertical chroma subsampling factor | |
41 | */ | |
42 | struct drm_format_info { | |
43 | u32 format; | |
44 | u8 depth; | |
45 | u8 num_planes; | |
46 | u8 cpp[3]; | |
47 | u8 hsub; | |
48 | u8 vsub; | |
49 | }; | |
50 | ||
b3c11ac2 EE |
51 | /** |
52 | * struct drm_format_name_buf - name of a DRM format | |
53 | * @str: string buffer containing the format name | |
54 | */ | |
55 | struct drm_format_name_buf { | |
56 | char str[32]; | |
57 | }; | |
58 | ||
333d2da5 | 59 | const struct drm_format_info *__drm_format_info(u32 format); |
84770cc2 | 60 | const struct drm_format_info *drm_format_info(u32 format); |
6a0f9ebf VS |
61 | const struct drm_format_info * |
62 | drm_get_format_info(struct drm_device *dev, | |
63 | const struct drm_mode_fb_cmd2 *mode_cmd); | |
ec5e3047 | 64 | uint32_t drm_mode_legacy_fb_format(uint32_t bpp, uint32_t depth); |
ae4df11a LP |
65 | int drm_format_num_planes(uint32_t format); |
66 | int drm_format_plane_cpp(uint32_t format, int plane); | |
67 | int drm_format_horz_chroma_subsampling(uint32_t format); | |
68 | int drm_format_vert_chroma_subsampling(uint32_t format); | |
69 | int drm_format_plane_width(int width, uint32_t format, int plane); | |
70 | int drm_format_plane_height(int height, uint32_t format, int plane); | |
b3c11ac2 | 71 | const char *drm_get_format_name(uint32_t format, struct drm_format_name_buf *buf); |
ae4df11a LP |
72 | |
73 | #endif /* __DRM_FOURCC_H__ */ |