![]() |
|
|||
0001 /* 0002 * Copyright © 2006 Keith Packard 0003 * Copyright © 2007-2008 Dave Airlie 0004 * Copyright © 2007-2008 Intel Corporation 0005 * Jesse Barnes <jesse.barnes@intel.com> 0006 * Copyright © 2014 Intel Corporation 0007 * Daniel Vetter <daniel.vetter@ffwll.ch> 0008 * 0009 * Permission is hereby granted, free of charge, to any person obtaining a 0010 * copy of this software and associated documentation files (the "Software"), 0011 * to deal in the Software without restriction, including without limitation 0012 * the rights to use, copy, modify, merge, publish, distribute, sublicense, 0013 * and/or sell copies of the Software, and to permit persons to whom the 0014 * Software is furnished to do so, subject to the following conditions: 0015 * 0016 * The above copyright notice and this permission notice shall be included in 0017 * all copies or substantial portions of the Software. 0018 * 0019 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 0020 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 0021 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 0022 * THE COPYRIGHT HOLDER(S) OR AUTHOR(S) BE LIABLE FOR ANY CLAIM, DAMAGES OR 0023 * OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, 0024 * ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR 0025 * OTHER DEALINGS IN THE SOFTWARE. 0026 */ 0027 #ifndef __DRM_MODES_H__ 0028 #define __DRM_MODES_H__ 0029 0030 #include <linux/hdmi.h> 0031 0032 #include <drm/drm_mode_object.h> 0033 #include <drm/drm_connector.h> 0034 0035 struct videomode; 0036 0037 /* 0038 * Note on terminology: here, for brevity and convenience, we refer to connector 0039 * control chips as 'CRTCs'. They can control any type of connector, VGA, LVDS, 0040 * DVI, etc. And 'screen' refers to the whole of the visible display, which 0041 * may span multiple monitors (and therefore multiple CRTC and connector 0042 * structures). 0043 */ 0044 0045 /** 0046 * enum drm_mode_status - hardware support status of a mode 0047 * @MODE_OK: Mode OK 0048 * @MODE_HSYNC: hsync out of range 0049 * @MODE_VSYNC: vsync out of range 0050 * @MODE_H_ILLEGAL: mode has illegal horizontal timings 0051 * @MODE_V_ILLEGAL: mode has illegal vertical timings 0052 * @MODE_BAD_WIDTH: requires an unsupported linepitch 0053 * @MODE_NOMODE: no mode with a matching name 0054 * @MODE_NO_INTERLACE: interlaced mode not supported 0055 * @MODE_NO_DBLESCAN: doublescan mode not supported 0056 * @MODE_NO_VSCAN: multiscan mode not supported 0057 * @MODE_MEM: insufficient video memory 0058 * @MODE_VIRTUAL_X: mode width too large for specified virtual size 0059 * @MODE_VIRTUAL_Y: mode height too large for specified virtual size 0060 * @MODE_MEM_VIRT: insufficient video memory given virtual size 0061 * @MODE_NOCLOCK: no fixed clock available 0062 * @MODE_CLOCK_HIGH: clock required is too high 0063 * @MODE_CLOCK_LOW: clock required is too low 0064 * @MODE_CLOCK_RANGE: clock/mode isn't in a ClockRange 0065 * @MODE_BAD_HVALUE: horizontal timing was out of range 0066 * @MODE_BAD_VVALUE: vertical timing was out of range 0067 * @MODE_BAD_VSCAN: VScan value out of range 0068 * @MODE_HSYNC_NARROW: horizontal sync too narrow 0069 * @MODE_HSYNC_WIDE: horizontal sync too wide 0070 * @MODE_HBLANK_NARROW: horizontal blanking too narrow 0071 * @MODE_HBLANK_WIDE: horizontal blanking too wide 0072 * @MODE_VSYNC_NARROW: vertical sync too narrow 0073 * @MODE_VSYNC_WIDE: vertical sync too wide 0074 * @MODE_VBLANK_NARROW: vertical blanking too narrow 0075 * @MODE_VBLANK_WIDE: vertical blanking too wide 0076 * @MODE_PANEL: exceeds panel dimensions 0077 * @MODE_INTERLACE_WIDTH: width too large for interlaced mode 0078 * @MODE_ONE_WIDTH: only one width is supported 0079 * @MODE_ONE_HEIGHT: only one height is supported 0080 * @MODE_ONE_SIZE: only one resolution is supported 0081 * @MODE_NO_REDUCED: monitor doesn't accept reduced blanking 0082 * @MODE_NO_STEREO: stereo modes not supported 0083 * @MODE_NO_420: ycbcr 420 modes not supported 0084 * @MODE_STALE: mode has become stale 0085 * @MODE_BAD: unspecified reason 0086 * @MODE_ERROR: error condition 0087 * 0088 * This enum is used to filter out modes not supported by the driver/hardware 0089 * combination. 0090 */ 0091 enum drm_mode_status { 0092 MODE_OK = 0, 0093 MODE_HSYNC, 0094 MODE_VSYNC, 0095 MODE_H_ILLEGAL, 0096 MODE_V_ILLEGAL, 0097 MODE_BAD_WIDTH, 0098 MODE_NOMODE, 0099 MODE_NO_INTERLACE, 0100 MODE_NO_DBLESCAN, 0101 MODE_NO_VSCAN, 0102 MODE_MEM, 0103 MODE_VIRTUAL_X, 0104 MODE_VIRTUAL_Y, 0105 MODE_MEM_VIRT, 0106 MODE_NOCLOCK, 0107 MODE_CLOCK_HIGH, 0108 MODE_CLOCK_LOW, 0109 MODE_CLOCK_RANGE, 0110 MODE_BAD_HVALUE, 0111 MODE_BAD_VVALUE, 0112 MODE_BAD_VSCAN, 0113 MODE_HSYNC_NARROW, 0114 MODE_HSYNC_WIDE, 0115 MODE_HBLANK_NARROW, 0116 MODE_HBLANK_WIDE, 0117 MODE_VSYNC_NARROW, 0118 MODE_VSYNC_WIDE, 0119 MODE_VBLANK_NARROW, 0120 MODE_VBLANK_WIDE, 0121 MODE_PANEL, 0122 MODE_INTERLACE_WIDTH, 0123 MODE_ONE_WIDTH, 0124 MODE_ONE_HEIGHT, 0125 MODE_ONE_SIZE, 0126 MODE_NO_REDUCED, 0127 MODE_NO_STEREO, 0128 MODE_NO_420, 0129 MODE_STALE = -3, 0130 MODE_BAD = -2, 0131 MODE_ERROR = -1 0132 }; 0133 0134 #define DRM_MODE(nm, t, c, hd, hss, hse, ht, hsk, vd, vss, vse, vt, vs, f) \ 0135 .name = nm, .status = 0, .type = (t), .clock = (c), \ 0136 .hdisplay = (hd), .hsync_start = (hss), .hsync_end = (hse), \ 0137 .htotal = (ht), .hskew = (hsk), .vdisplay = (vd), \ 0138 .vsync_start = (vss), .vsync_end = (vse), .vtotal = (vt), \ 0139 .vscan = (vs), .flags = (f) 0140 0141 /** 0142 * DRM_SIMPLE_MODE - Simple display mode 0143 * @hd: Horizontal resolution, width 0144 * @vd: Vertical resolution, height 0145 * @hd_mm: Display width in millimeters 0146 * @vd_mm: Display height in millimeters 0147 * 0148 * This macro initializes a &drm_display_mode that only contains info about 0149 * resolution and physical size. 0150 */ 0151 #define DRM_SIMPLE_MODE(hd, vd, hd_mm, vd_mm) \ 0152 .type = DRM_MODE_TYPE_DRIVER, .clock = 1 /* pass validation */, \ 0153 .hdisplay = (hd), .hsync_start = (hd), .hsync_end = (hd), \ 0154 .htotal = (hd), .vdisplay = (vd), .vsync_start = (vd), \ 0155 .vsync_end = (vd), .vtotal = (vd), .width_mm = (hd_mm), \ 0156 .height_mm = (vd_mm) 0157 0158 #define CRTC_INTERLACE_HALVE_V (1 << 0) /* halve V values for interlacing */ 0159 #define CRTC_STEREO_DOUBLE (1 << 1) /* adjust timings for stereo modes */ 0160 #define CRTC_NO_DBLSCAN (1 << 2) /* don't adjust doublescan */ 0161 #define CRTC_NO_VSCAN (1 << 3) /* don't adjust doublescan */ 0162 #define CRTC_STEREO_DOUBLE_ONLY (CRTC_STEREO_DOUBLE | CRTC_NO_DBLSCAN | CRTC_NO_VSCAN) 0163 0164 #define DRM_MODE_FLAG_3D_MAX DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF 0165 0166 #define DRM_MODE_MATCH_TIMINGS (1 << 0) 0167 #define DRM_MODE_MATCH_CLOCK (1 << 1) 0168 #define DRM_MODE_MATCH_FLAGS (1 << 2) 0169 #define DRM_MODE_MATCH_3D_FLAGS (1 << 3) 0170 #define DRM_MODE_MATCH_ASPECT_RATIO (1 << 4) 0171 0172 /** 0173 * struct drm_display_mode - DRM kernel-internal display mode structure 0174 * @hdisplay: horizontal display size 0175 * @hsync_start: horizontal sync start 0176 * @hsync_end: horizontal sync end 0177 * @htotal: horizontal total size 0178 * @hskew: horizontal skew?! 0179 * @vdisplay: vertical display size 0180 * @vsync_start: vertical sync start 0181 * @vsync_end: vertical sync end 0182 * @vtotal: vertical total size 0183 * @vscan: vertical scan?! 0184 * @crtc_hdisplay: hardware mode horizontal display size 0185 * @crtc_hblank_start: hardware mode horizontal blank start 0186 * @crtc_hblank_end: hardware mode horizontal blank end 0187 * @crtc_hsync_start: hardware mode horizontal sync start 0188 * @crtc_hsync_end: hardware mode horizontal sync end 0189 * @crtc_htotal: hardware mode horizontal total size 0190 * @crtc_hskew: hardware mode horizontal skew?! 0191 * @crtc_vdisplay: hardware mode vertical display size 0192 * @crtc_vblank_start: hardware mode vertical blank start 0193 * @crtc_vblank_end: hardware mode vertical blank end 0194 * @crtc_vsync_start: hardware mode vertical sync start 0195 * @crtc_vsync_end: hardware mode vertical sync end 0196 * @crtc_vtotal: hardware mode vertical total size 0197 * 0198 * This is the kernel API display mode information structure. For the 0199 * user-space version see struct drm_mode_modeinfo. 0200 * 0201 * The horizontal and vertical timings are defined per the following diagram. 0202 * 0203 * :: 0204 * 0205 * 0206 * Active Front Sync Back 0207 * Region Porch Porch 0208 * <-----------------------><----------------><-------------><--------------> 0209 * //////////////////////| 0210 * ////////////////////// | 0211 * ////////////////////// |.................. ................ 0212 * _______________ 0213 * <----- [hv]display -----> 0214 * <------------- [hv]sync_start ------------> 0215 * <--------------------- [hv]sync_end ---------------------> 0216 * <-------------------------------- [hv]total ----------------------------->* 0217 * 0218 * This structure contains two copies of timings. First are the plain timings, 0219 * which specify the logical mode, as it would be for a progressive 1:1 scanout 0220 * at the refresh rate userspace can observe through vblank timestamps. Then 0221 * there's the hardware timings, which are corrected for interlacing, 0222 * double-clocking and similar things. They are provided as a convenience, and 0223 * can be appropriately computed using drm_mode_set_crtcinfo(). 0224 * 0225 * For printing you can use %DRM_MODE_FMT and DRM_MODE_ARG(). 0226 */ 0227 struct drm_display_mode { 0228 /** 0229 * @clock: 0230 * 0231 * Pixel clock in kHz. 0232 */ 0233 int clock; /* in kHz */ 0234 u16 hdisplay; 0235 u16 hsync_start; 0236 u16 hsync_end; 0237 u16 htotal; 0238 u16 hskew; 0239 u16 vdisplay; 0240 u16 vsync_start; 0241 u16 vsync_end; 0242 u16 vtotal; 0243 u16 vscan; 0244 /** 0245 * @flags: 0246 * 0247 * Sync and timing flags: 0248 * 0249 * - DRM_MODE_FLAG_PHSYNC: horizontal sync is active high. 0250 * - DRM_MODE_FLAG_NHSYNC: horizontal sync is active low. 0251 * - DRM_MODE_FLAG_PVSYNC: vertical sync is active high. 0252 * - DRM_MODE_FLAG_NVSYNC: vertical sync is active low. 0253 * - DRM_MODE_FLAG_INTERLACE: mode is interlaced. 0254 * - DRM_MODE_FLAG_DBLSCAN: mode uses doublescan. 0255 * - DRM_MODE_FLAG_CSYNC: mode uses composite sync. 0256 * - DRM_MODE_FLAG_PCSYNC: composite sync is active high. 0257 * - DRM_MODE_FLAG_NCSYNC: composite sync is active low. 0258 * - DRM_MODE_FLAG_HSKEW: hskew provided (not used?). 0259 * - DRM_MODE_FLAG_BCAST: <deprecated> 0260 * - DRM_MODE_FLAG_PIXMUX: <deprecated> 0261 * - DRM_MODE_FLAG_DBLCLK: double-clocked mode. 0262 * - DRM_MODE_FLAG_CLKDIV2: half-clocked mode. 0263 * 0264 * Additionally there's flags to specify how 3D modes are packed: 0265 * 0266 * - DRM_MODE_FLAG_3D_NONE: normal, non-3D mode. 0267 * - DRM_MODE_FLAG_3D_FRAME_PACKING: 2 full frames for left and right. 0268 * - DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: interleaved like fields. 0269 * - DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: interleaved lines. 0270 * - DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: side-by-side full frames. 0271 * - DRM_MODE_FLAG_3D_L_DEPTH: ? 0272 * - DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: ? 0273 * - DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: frame split into top and bottom 0274 * parts. 0275 * - DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: frame split into left and 0276 * right parts. 0277 */ 0278 u32 flags; 0279 0280 /** 0281 * @crtc_clock: 0282 * 0283 * Actual pixel or dot clock in the hardware. This differs from the 0284 * logical @clock when e.g. using interlacing, double-clocking, stereo 0285 * modes or other fancy stuff that changes the timings and signals 0286 * actually sent over the wire. 0287 * 0288 * This is again in kHz. 0289 * 0290 * Note that with digital outputs like HDMI or DP there's usually a 0291 * massive confusion between the dot clock and the signal clock at the 0292 * bit encoding level. Especially when a 8b/10b encoding is used and the 0293 * difference is exactly a factor of 10. 0294 */ 0295 int crtc_clock; 0296 u16 crtc_hdisplay; 0297 u16 crtc_hblank_start; 0298 u16 crtc_hblank_end; 0299 u16 crtc_hsync_start; 0300 u16 crtc_hsync_end; 0301 u16 crtc_htotal; 0302 u16 crtc_hskew; 0303 u16 crtc_vdisplay; 0304 u16 crtc_vblank_start; 0305 u16 crtc_vblank_end; 0306 u16 crtc_vsync_start; 0307 u16 crtc_vsync_end; 0308 u16 crtc_vtotal; 0309 0310 /** 0311 * @width_mm: 0312 * 0313 * Addressable size of the output in mm, projectors should set this to 0314 * 0. 0315 */ 0316 u16 width_mm; 0317 0318 /** 0319 * @height_mm: 0320 * 0321 * Addressable size of the output in mm, projectors should set this to 0322 * 0. 0323 */ 0324 u16 height_mm; 0325 0326 /** 0327 * @type: 0328 * 0329 * A bitmask of flags, mostly about the source of a mode. Possible flags 0330 * are: 0331 * 0332 * - DRM_MODE_TYPE_PREFERRED: Preferred mode, usually the native 0333 * resolution of an LCD panel. There should only be one preferred 0334 * mode per connector at any given time. 0335 * - DRM_MODE_TYPE_DRIVER: Mode created by the driver, which is all of 0336 * them really. Drivers must set this bit for all modes they create 0337 * and expose to userspace. 0338 * - DRM_MODE_TYPE_USERDEF: Mode defined or selected via the kernel 0339 * command line. 0340 * 0341 * Plus a big list of flags which shouldn't be used at all, but are 0342 * still around since these flags are also used in the userspace ABI. 0343 * We no longer accept modes with these types though: 0344 * 0345 * - DRM_MODE_TYPE_BUILTIN: Meant for hard-coded modes, unused. 0346 * Use DRM_MODE_TYPE_DRIVER instead. 0347 * - DRM_MODE_TYPE_DEFAULT: Again a leftover, use 0348 * DRM_MODE_TYPE_PREFERRED instead. 0349 * - DRM_MODE_TYPE_CLOCK_C and DRM_MODE_TYPE_CRTC_C: Define leftovers 0350 * which are stuck around for hysterical raisins only. No one has an 0351 * idea what they were meant for. Don't use. 0352 */ 0353 u8 type; 0354 0355 /** 0356 * @expose_to_userspace: 0357 * 0358 * Indicates whether the mode is to be exposed to the userspace. 0359 * This is to maintain a set of exposed modes while preparing 0360 * user-mode's list in drm_mode_getconnector ioctl. The purpose of 0361 * this only lies in the ioctl function, and is not to be used 0362 * outside the function. 0363 */ 0364 bool expose_to_userspace; 0365 0366 /** 0367 * @head: 0368 * 0369 * struct list_head for mode lists. 0370 */ 0371 struct list_head head; 0372 0373 /** 0374 * @name: 0375 * 0376 * Human-readable name of the mode, filled out with drm_mode_set_name(). 0377 */ 0378 char name[DRM_DISPLAY_MODE_LEN]; 0379 0380 /** 0381 * @status: 0382 * 0383 * Status of the mode, used to filter out modes not supported by the 0384 * hardware. See enum &drm_mode_status. 0385 */ 0386 enum drm_mode_status status; 0387 0388 /** 0389 * @picture_aspect_ratio: 0390 * 0391 * Field for setting the HDMI picture aspect ratio of a mode. 0392 */ 0393 enum hdmi_picture_aspect picture_aspect_ratio; 0394 0395 }; 0396 0397 /** 0398 * DRM_MODE_FMT - printf string for &struct drm_display_mode 0399 */ 0400 #define DRM_MODE_FMT "\"%s\": %d %d %d %d %d %d %d %d %d %d 0x%x 0x%x" 0401 0402 /** 0403 * DRM_MODE_ARG - printf arguments for &struct drm_display_mode 0404 * @m: display mode 0405 */ 0406 #define DRM_MODE_ARG(m) \ 0407 (m)->name, drm_mode_vrefresh(m), (m)->clock, \ 0408 (m)->hdisplay, (m)->hsync_start, (m)->hsync_end, (m)->htotal, \ 0409 (m)->vdisplay, (m)->vsync_start, (m)->vsync_end, (m)->vtotal, \ 0410 (m)->type, (m)->flags 0411 0412 #define obj_to_mode(x) container_of(x, struct drm_display_mode, base) 0413 0414 /** 0415 * drm_mode_is_stereo - check for stereo mode flags 0416 * @mode: drm_display_mode to check 0417 * 0418 * Returns: 0419 * True if the mode is one of the stereo modes (like side-by-side), false if 0420 * not. 0421 */ 0422 static inline bool drm_mode_is_stereo(const struct drm_display_mode *mode) 0423 { 0424 return mode->flags & DRM_MODE_FLAG_3D_MASK; 0425 } 0426 0427 struct drm_connector; 0428 struct drm_cmdline_mode; 0429 0430 struct drm_display_mode *drm_mode_create(struct drm_device *dev); 0431 void drm_mode_destroy(struct drm_device *dev, struct drm_display_mode *mode); 0432 void drm_mode_convert_to_umode(struct drm_mode_modeinfo *out, 0433 const struct drm_display_mode *in); 0434 int drm_mode_convert_umode(struct drm_device *dev, 0435 struct drm_display_mode *out, 0436 const struct drm_mode_modeinfo *in); 0437 void drm_mode_probed_add(struct drm_connector *connector, struct drm_display_mode *mode); 0438 void drm_mode_debug_printmodeline(const struct drm_display_mode *mode); 0439 bool drm_mode_is_420_only(const struct drm_display_info *display, 0440 const struct drm_display_mode *mode); 0441 bool drm_mode_is_420_also(const struct drm_display_info *display, 0442 const struct drm_display_mode *mode); 0443 bool drm_mode_is_420(const struct drm_display_info *display, 0444 const struct drm_display_mode *mode); 0445 0446 struct drm_display_mode *drm_cvt_mode(struct drm_device *dev, 0447 int hdisplay, int vdisplay, int vrefresh, 0448 bool reduced, bool interlaced, 0449 bool margins); 0450 struct drm_display_mode *drm_gtf_mode(struct drm_device *dev, 0451 int hdisplay, int vdisplay, int vrefresh, 0452 bool interlaced, int margins); 0453 struct drm_display_mode *drm_gtf_mode_complex(struct drm_device *dev, 0454 int hdisplay, int vdisplay, 0455 int vrefresh, bool interlaced, 0456 int margins, 0457 int GTF_M, int GTF_2C, 0458 int GTF_K, int GTF_2J); 0459 void drm_display_mode_from_videomode(const struct videomode *vm, 0460 struct drm_display_mode *dmode); 0461 void drm_display_mode_to_videomode(const struct drm_display_mode *dmode, 0462 struct videomode *vm); 0463 void drm_bus_flags_from_videomode(const struct videomode *vm, u32 *bus_flags); 0464 0465 #if defined(CONFIG_OF) 0466 int of_get_drm_display_mode(struct device_node *np, 0467 struct drm_display_mode *dmode, u32 *bus_flags, 0468 int index); 0469 int of_get_drm_panel_display_mode(struct device_node *np, 0470 struct drm_display_mode *dmode, u32 *bus_flags); 0471 #else 0472 static inline int of_get_drm_display_mode(struct device_node *np, 0473 struct drm_display_mode *dmode, 0474 u32 *bus_flags, int index) 0475 { 0476 return -EINVAL; 0477 } 0478 0479 static inline int of_get_drm_panel_display_mode(struct device_node *np, 0480 struct drm_display_mode *dmode, u32 *bus_flags) 0481 { 0482 return -EINVAL; 0483 } 0484 #endif 0485 0486 void drm_mode_set_name(struct drm_display_mode *mode); 0487 int drm_mode_vrefresh(const struct drm_display_mode *mode); 0488 void drm_mode_get_hv_timing(const struct drm_display_mode *mode, 0489 int *hdisplay, int *vdisplay); 0490 0491 void drm_mode_set_crtcinfo(struct drm_display_mode *p, 0492 int adjust_flags); 0493 void drm_mode_copy(struct drm_display_mode *dst, 0494 const struct drm_display_mode *src); 0495 void drm_mode_init(struct drm_display_mode *dst, 0496 const struct drm_display_mode *src); 0497 struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev, 0498 const struct drm_display_mode *mode); 0499 bool drm_mode_match(const struct drm_display_mode *mode1, 0500 const struct drm_display_mode *mode2, 0501 unsigned int match_flags); 0502 bool drm_mode_equal(const struct drm_display_mode *mode1, 0503 const struct drm_display_mode *mode2); 0504 bool drm_mode_equal_no_clocks(const struct drm_display_mode *mode1, 0505 const struct drm_display_mode *mode2); 0506 bool drm_mode_equal_no_clocks_no_stereo(const struct drm_display_mode *mode1, 0507 const struct drm_display_mode *mode2); 0508 0509 /* for use by the crtc helper probe functions */ 0510 enum drm_mode_status drm_mode_validate_driver(struct drm_device *dev, 0511 const struct drm_display_mode *mode); 0512 enum drm_mode_status drm_mode_validate_size(const struct drm_display_mode *mode, 0513 int maxX, int maxY); 0514 enum drm_mode_status 0515 drm_mode_validate_ycbcr420(const struct drm_display_mode *mode, 0516 struct drm_connector *connector); 0517 void drm_mode_prune_invalid(struct drm_device *dev, 0518 struct list_head *mode_list, bool verbose); 0519 void drm_mode_sort(struct list_head *mode_list); 0520 void drm_connector_list_update(struct drm_connector *connector); 0521 0522 /* parsing cmdline modes */ 0523 bool 0524 drm_mode_parse_command_line_for_connector(const char *mode_option, 0525 const struct drm_connector *connector, 0526 struct drm_cmdline_mode *mode); 0527 struct drm_display_mode * 0528 drm_mode_create_from_cmdline_mode(struct drm_device *dev, 0529 struct drm_cmdline_mode *cmd); 0530 0531 #endif /* __DRM_MODES_H__ */
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.1.0 LXR engine. The LXR team |
![]() ![]() |