Rev 6082 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 6082 | Rev 6936 | ||
---|---|---|---|
Line 33... | Line 33... | ||
33 | * DVI, etc. And 'screen' refers to the whole of the visible display, which |
33 | * DVI, etc. And 'screen' refers to the whole of the visible display, which |
34 | * may span multiple monitors (and therefore multiple CRTC and connector |
34 | * may span multiple monitors (and therefore multiple CRTC and connector |
35 | * structures). |
35 | * structures). |
36 | */ |
36 | */ |
Line -... | Line 37... | ||
- | 37 | ||
- | 38 | /** |
|
- | 39 | * enum drm_mode_status - hardware support status of a mode |
|
- | 40 | * @MODE_OK: Mode OK |
|
- | 41 | * @MODE_HSYNC: hsync out of range |
|
- | 42 | * @MODE_VSYNC: vsync out of range |
|
- | 43 | * @MODE_H_ILLEGAL: mode has illegal horizontal timings |
|
- | 44 | * @MODE_V_ILLEGAL: mode has illegal horizontal timings |
|
- | 45 | * @MODE_BAD_WIDTH: requires an unsupported linepitch |
|
- | 46 | * @MODE_NOMODE: no mode with a matching name |
|
- | 47 | * @MODE_NO_INTERLACE: interlaced mode not supported |
|
- | 48 | * @MODE_NO_DBLESCAN: doublescan mode not supported |
|
- | 49 | * @MODE_NO_VSCAN: multiscan mode not supported |
|
- | 50 | * @MODE_MEM: insufficient video memory |
|
- | 51 | * @MODE_VIRTUAL_X: mode width too large for specified virtual size |
|
- | 52 | * @MODE_VIRTUAL_Y: mode height too large for specified virtual size |
|
- | 53 | * @MODE_MEM_VIRT: insufficient video memory given virtual size |
|
- | 54 | * @MODE_NOCLOCK: no fixed clock available |
|
- | 55 | * @MODE_CLOCK_HIGH: clock required is too high |
|
- | 56 | * @MODE_CLOCK_LOW: clock required is too low |
|
- | 57 | * @MODE_CLOCK_RANGE: clock/mode isn't in a ClockRange |
|
- | 58 | * @MODE_BAD_HVALUE: horizontal timing was out of range |
|
- | 59 | * @MODE_BAD_VVALUE: vertical timing was out of range |
|
- | 60 | * @MODE_BAD_VSCAN: VScan value out of range |
|
- | 61 | * @MODE_HSYNC_NARROW: horizontal sync too narrow |
|
- | 62 | * @MODE_HSYNC_WIDE: horizontal sync too wide |
|
- | 63 | * @MODE_HBLANK_NARROW: horizontal blanking too narrow |
|
- | 64 | * @MODE_HBLANK_WIDE: horizontal blanking too wide |
|
- | 65 | * @MODE_VSYNC_NARROW: vertical sync too narrow |
|
- | 66 | * @MODE_VSYNC_WIDE: vertical sync too wide |
|
- | 67 | * @MODE_VBLANK_NARROW: vertical blanking too narrow |
|
- | 68 | * @MODE_VBLANK_WIDE: vertical blanking too wide |
|
- | 69 | * @MODE_PANEL: exceeds panel dimensions |
|
- | 70 | * @MODE_INTERLACE_WIDTH: width too large for interlaced mode |
|
- | 71 | * @MODE_ONE_WIDTH: only one width is supported |
|
- | 72 | * @MODE_ONE_HEIGHT: only one height is supported |
|
- | 73 | * @MODE_ONE_SIZE: only one resolution is supported |
|
- | 74 | * @MODE_NO_REDUCED: monitor doesn't accept reduced blanking |
|
- | 75 | * @MODE_NO_STEREO: stereo modes not supported |
|
- | 76 | * @MODE_STALE: mode has become stale |
|
- | 77 | * @MODE_BAD: unspecified reason |
|
- | 78 | * @MODE_ERROR: error condition |
|
- | 79 | * |
|
- | 80 | * This enum is used to filter out modes not supported by the driver/hardware |
|
- | 81 | * combination. |
|
37 | 82 | */ |
|
38 | enum drm_mode_status { |
83 | enum drm_mode_status { |
39 | MODE_OK = 0, /* Mode OK */ |
84 | MODE_OK = 0, |
40 | MODE_HSYNC, /* hsync out of range */ |
85 | MODE_HSYNC, |
41 | MODE_VSYNC, /* vsync out of range */ |
86 | MODE_VSYNC, |
42 | MODE_H_ILLEGAL, /* mode has illegal horizontal timings */ |
87 | MODE_H_ILLEGAL, |
43 | MODE_V_ILLEGAL, /* mode has illegal horizontal timings */ |
88 | MODE_V_ILLEGAL, |
44 | MODE_BAD_WIDTH, /* requires an unsupported linepitch */ |
89 | MODE_BAD_WIDTH, |
45 | MODE_NOMODE, /* no mode with a matching name */ |
90 | MODE_NOMODE, |
46 | MODE_NO_INTERLACE, /* interlaced mode not supported */ |
91 | MODE_NO_INTERLACE, |
47 | MODE_NO_DBLESCAN, /* doublescan mode not supported */ |
92 | MODE_NO_DBLESCAN, |
48 | MODE_NO_VSCAN, /* multiscan mode not supported */ |
93 | MODE_NO_VSCAN, |
49 | MODE_MEM, /* insufficient video memory */ |
94 | MODE_MEM, |
50 | MODE_VIRTUAL_X, /* mode width too large for specified virtual size */ |
95 | MODE_VIRTUAL_X, |
51 | MODE_VIRTUAL_Y, /* mode height too large for specified virtual size */ |
96 | MODE_VIRTUAL_Y, |
52 | MODE_MEM_VIRT, /* insufficient video memory given virtual size */ |
97 | MODE_MEM_VIRT, |
53 | MODE_NOCLOCK, /* no fixed clock available */ |
98 | MODE_NOCLOCK, |
54 | MODE_CLOCK_HIGH, /* clock required is too high */ |
99 | MODE_CLOCK_HIGH, |
55 | MODE_CLOCK_LOW, /* clock required is too low */ |
100 | MODE_CLOCK_LOW, |
56 | MODE_CLOCK_RANGE, /* clock/mode isn't in a ClockRange */ |
101 | MODE_CLOCK_RANGE, |
57 | MODE_BAD_HVALUE, /* horizontal timing was out of range */ |
102 | MODE_BAD_HVALUE, |
58 | MODE_BAD_VVALUE, /* vertical timing was out of range */ |
103 | MODE_BAD_VVALUE, |
59 | MODE_BAD_VSCAN, /* VScan value out of range */ |
104 | MODE_BAD_VSCAN, |
60 | MODE_HSYNC_NARROW, /* horizontal sync too narrow */ |
105 | MODE_HSYNC_NARROW, |
61 | MODE_HSYNC_WIDE, /* horizontal sync too wide */ |
106 | MODE_HSYNC_WIDE, |
62 | MODE_HBLANK_NARROW, /* horizontal blanking too narrow */ |
107 | MODE_HBLANK_NARROW, |
63 | MODE_HBLANK_WIDE, /* horizontal blanking too wide */ |
108 | MODE_HBLANK_WIDE, |
64 | MODE_VSYNC_NARROW, /* vertical sync too narrow */ |
109 | MODE_VSYNC_NARROW, |
65 | MODE_VSYNC_WIDE, /* vertical sync too wide */ |
110 | MODE_VSYNC_WIDE, |
66 | MODE_VBLANK_NARROW, /* vertical blanking too narrow */ |
111 | MODE_VBLANK_NARROW, |
67 | MODE_VBLANK_WIDE, /* vertical blanking too wide */ |
112 | MODE_VBLANK_WIDE, |
68 | MODE_PANEL, /* exceeds panel dimensions */ |
113 | MODE_PANEL, |
69 | MODE_INTERLACE_WIDTH, /* width too large for interlaced mode */ |
114 | MODE_INTERLACE_WIDTH, |
70 | MODE_ONE_WIDTH, /* only one width is supported */ |
115 | MODE_ONE_WIDTH, |
71 | MODE_ONE_HEIGHT, /* only one height is supported */ |
116 | MODE_ONE_HEIGHT, |
72 | MODE_ONE_SIZE, /* only one resolution is supported */ |
117 | MODE_ONE_SIZE, |
73 | MODE_NO_REDUCED, /* monitor doesn't accept reduced blanking */ |
118 | MODE_NO_REDUCED, |
74 | MODE_NO_STEREO, /* stereo modes not supported */ |
119 | MODE_NO_STEREO, |
75 | MODE_UNVERIFIED = -3, /* mode needs to reverified */ |
120 | MODE_STALE = -3, |
76 | MODE_BAD = -2, /* unspecified reason */ |
121 | MODE_BAD = -2, |
77 | MODE_ERROR = -1 /* error condition */ |
122 | MODE_ERROR = -1 |
Line 78... | Line 123... | ||
78 | }; |
123 | }; |
79 | 124 | ||
Line 94... | Line 139... | ||
94 | #define CRTC_NO_VSCAN (1 << 3) /* don't adjust doublescan */ |
139 | #define CRTC_NO_VSCAN (1 << 3) /* don't adjust doublescan */ |
95 | #define CRTC_STEREO_DOUBLE_ONLY (CRTC_STEREO_DOUBLE | CRTC_NO_DBLSCAN | CRTC_NO_VSCAN) |
140 | #define CRTC_STEREO_DOUBLE_ONLY (CRTC_STEREO_DOUBLE | CRTC_NO_DBLSCAN | CRTC_NO_VSCAN) |
Line 96... | Line 141... | ||
96 | 141 | ||
Line -... | Line 142... | ||
- | 142 | #define DRM_MODE_FLAG_3D_MAX DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF |
|
- | 143 | ||
- | 144 | /** |
|
- | 145 | * struct drm_display_mode - DRM kernel-internal display mode structure |
|
- | 146 | * @hdisplay: horizontal display size |
|
- | 147 | * @hsync_start: horizontal sync start |
|
- | 148 | * @hsync_end: horizontal sync end |
|
- | 149 | * @htotal: horizontal total size |
|
- | 150 | * @hskew: horizontal skew?! |
|
- | 151 | * @vdisplay: vertical display size |
|
- | 152 | * @vsync_start: vertical sync start |
|
- | 153 | * @vsync_end: vertical sync end |
|
- | 154 | * @vtotal: vertical total size |
|
- | 155 | * @vscan: vertical scan?! |
|
- | 156 | * @crtc_hdisplay: hardware mode horizontal display size |
|
- | 157 | * @crtc_hblank_start: hardware mode horizontal blank start |
|
- | 158 | * @crtc_hblank_end: hardware mode horizontal blank end |
|
- | 159 | * @crtc_hsync_start: hardware mode horizontal sync start |
|
- | 160 | * @crtc_hsync_end: hardware mode horizontal sync end |
|
- | 161 | * @crtc_htotal: hardware mode horizontal total size |
|
- | 162 | * @crtc_hskew: hardware mode horizontal skew?! |
|
- | 163 | * @crtc_vdisplay: hardware mode vertical display size |
|
- | 164 | * @crtc_vblank_start: hardware mode vertical blank start |
|
- | 165 | * @crtc_vblank_end: hardware mode vertical blank end |
|
- | 166 | * @crtc_vsync_start: hardware mode vertical sync start |
|
- | 167 | * @crtc_vsync_end: hardware mode vertical sync end |
|
- | 168 | * @crtc_vtotal: hardware mode vertical total size |
|
- | 169 | * |
|
- | 170 | * The horizontal and vertical timings are defined per the following diagram. |
|
- | 171 | * |
|
- | 172 | * |
|
- | 173 | * Active Front Sync Back |
|
- | 174 | * Region Porch Porch |
|
- | 175 | * <-----------------------><----------------><-------------><--------------> |
|
- | 176 | * //////////////////////| |
|
- | 177 | * ////////////////////// | |
|
- | 178 | * ////////////////////// |.................. ................ |
|
- | 179 | * _______________ |
|
- | 180 | * <----- [hv]display -----> |
|
- | 181 | * <------------- [hv]sync_start ------------> |
|
- | 182 | * <--------------------- [hv]sync_end ---------------------> |
|
- | 183 | * <-------------------------------- [hv]total ----------------------------->* |
|
- | 184 | * |
|
- | 185 | * This structure contains two copies of timings. First are the plain timings, |
|
- | 186 | * which specify the logical mode, as it would be for a progressive 1:1 scanout |
|
- | 187 | * at the refresh rate userspace can observe through vblank timestamps. Then |
|
- | 188 | * there's the hardware timings, which are corrected for interlacing, |
|
- | 189 | * double-clocking and similar things. They are provided as a convenience, and |
|
97 | #define DRM_MODE_FLAG_3D_MAX DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF |
190 | * can be appropriately computed using drm_mode_set_crtcinfo(). |
- | 191 | */ |
|
98 | 192 | struct drm_display_mode { |
|
- | 193 | /** |
|
- | 194 | * @head: |
|
- | 195 | * |
|
99 | struct drm_display_mode { |
196 | * struct list_head for mode lists. |
- | 197 | */ |
|
- | 198 | struct list_head head; |
|
- | 199 | ||
- | 200 | /** |
|
- | 201 | * @base: |
|
- | 202 | * |
|
- | 203 | * A display mode is a normal modeset object, possibly including public |
|
- | 204 | * userspace id. |
|
- | 205 | * |
|
- | 206 | * FIXME: |
|
- | 207 | * |
|
- | 208 | * This can probably be removed since the entire concept of userspace |
|
- | 209 | * managing modes explicitly has never landed in upstream kernel mode |
|
100 | /* Header */ |
210 | * setting support. |
Line -... | Line 211... | ||
- | 211 | */ |
|
- | 212 | struct drm_mode_object base; |
|
- | 213 | ||
- | 214 | /** |
|
- | 215 | * @name: |
|
101 | struct list_head head; |
216 | * |
Line -... | Line 217... | ||
- | 217 | * Human-readable name of the mode, filled out with drm_mode_set_name(). |
|
- | 218 | */ |
|
- | 219 | char name[DRM_DISPLAY_MODE_LEN]; |
|
- | 220 | ||
- | 221 | /** |
|
- | 222 | * @status: |
|
102 | struct drm_mode_object base; |
223 | * |
- | 224 | * Status of the mode, used to filter out modes not supported by the |
|
- | 225 | * hardware. See enum &drm_mode_status. |
|
- | 226 | */ |
|
- | 227 | enum drm_mode_status status; |
|
- | 228 | ||
- | 229 | /** |
|
- | 230 | * @type: |
|
- | 231 | * |
|
- | 232 | * A bitmask of flags, mostly about the source of a mode. Possible flags |
|
- | 233 | * are: |
|
- | 234 | * |
|
- | 235 | * - DRM_MODE_TYPE_BUILTIN: Meant for hard-coded modes, effectively |
|
- | 236 | * unused. |
|
- | 237 | * - DRM_MODE_TYPE_PREFERRED: Preferred mode, usually the native |
|
- | 238 | * resolution of an LCD panel. There should only be one preferred |
|
- | 239 | * mode per connector at any given time. |
|
- | 240 | * - DRM_MODE_TYPE_DRIVER: Mode created by the driver, which is all of |
|
- | 241 | * them really. Drivers must set this bit for all modes they create |
|
- | 242 | * and expose to userspace. |
|
- | 243 | * |
|
- | 244 | * Plus a big list of flags which shouldn't be used at all, but are |
|
- | 245 | * still around since these flags are also used in the userspace ABI: |
|
- | 246 | * |
|
- | 247 | * - DRM_MODE_TYPE_DEFAULT: Again a leftover, use |
|
- | 248 | * DRM_MODE_TYPE_PREFERRED instead. |
|
- | 249 | * - DRM_MODE_TYPE_CLOCK_C and DRM_MODE_TYPE_CRTC_C: Define leftovers |
|
- | 250 | * which are stuck around for hysterical raisins only. No one has an |
|
- | 251 | * idea what they were meant for. Don't use. |
|
103 | 252 | * - DRM_MODE_TYPE_USERDEF: Mode defined by userspace, again a vestige |
|
Line -... | Line 253... | ||
- | 253 | * from older kms designs where userspace had to first add a custom |
|
- | 254 | * mode to the kernel's mode list before it could use it. Don't use. |
|
- | 255 | */ |
|
104 | char name[DRM_DISPLAY_MODE_LEN]; |
256 | unsigned int type; |
- | 257 | ||
105 | 258 | /** |
|
106 | enum drm_mode_status status; |
259 | * @clock: |
107 | unsigned int type; |
260 | * |
108 | 261 | * Pixel clock in kHz. |
|
109 | /* Proposed mode values */ |
262 | */ |
Line 116... | Line 269... | ||
116 | int vdisplay; |
269 | int vdisplay; |
117 | int vsync_start; |
270 | int vsync_start; |
118 | int vsync_end; |
271 | int vsync_end; |
119 | int vtotal; |
272 | int vtotal; |
120 | int vscan; |
273 | int vscan; |
- | 274 | /** |
|
- | 275 | * @flags: |
|
- | 276 | * |
|
- | 277 | * Sync and timing flags: |
|
- | 278 | * |
|
- | 279 | * - DRM_MODE_FLAG_PHSYNC: horizontal sync is active high. |
|
- | 280 | * - DRM_MODE_FLAG_NHSYNC: horizontal sync is active low. |
|
- | 281 | * - DRM_MODE_FLAG_PVSYNC: vertical sync is active high. |
|
- | 282 | * - DRM_MODE_FLAG_NVSYNC: vertical sync is active low. |
|
- | 283 | * - DRM_MODE_FLAG_INTERLACE: mode is interlaced. |
|
- | 284 | * - DRM_MODE_FLAG_DBLSCAN: mode uses doublescan. |
|
- | 285 | * - DRM_MODE_FLAG_CSYNC: mode uses composite sync. |
|
- | 286 | * - DRM_MODE_FLAG_PCSYNC: composite sync is active high. |
|
- | 287 | * - DRM_MODE_FLAG_NCSYNC: composite sync is active low. |
|
- | 288 | * - DRM_MODE_FLAG_HSKEW: hskew provided (not used?). |
|
- | 289 | * - DRM_MODE_FLAG_BCAST: not used? |
|
- | 290 | * - DRM_MODE_FLAG_PIXMUX: not used? |
|
- | 291 | * - DRM_MODE_FLAG_DBLCLK: double-clocked mode. |
|
- | 292 | * - DRM_MODE_FLAG_CLKDIV2: half-clocked mode. |
|
- | 293 | * |
|
- | 294 | * Additionally there's flags to specify how 3D modes are packed: |
|
- | 295 | * |
|
- | 296 | * - DRM_MODE_FLAG_3D_NONE: normal, non-3D mode. |
|
- | 297 | * - DRM_MODE_FLAG_3D_FRAME_PACKING: 2 full frames for left and right. |
|
- | 298 | * - DRM_MODE_FLAG_3D_FIELD_ALTERNATIVE: interleaved like fields. |
|
- | 299 | * - DRM_MODE_FLAG_3D_LINE_ALTERNATIVE: interleaved lines. |
|
- | 300 | * - DRM_MODE_FLAG_3D_SIDE_BY_SIDE_FULL: side-by-side full frames. |
|
- | 301 | * - DRM_MODE_FLAG_3D_L_DEPTH: ? |
|
- | 302 | * - DRM_MODE_FLAG_3D_L_DEPTH_GFX_GFX_DEPTH: ? |
|
- | 303 | * - DRM_MODE_FLAG_3D_TOP_AND_BOTTOM: frame split into top and bottom |
|
- | 304 | * parts. |
|
- | 305 | * - DRM_MODE_FLAG_3D_SIDE_BY_SIDE_HALF: frame split into left and |
|
- | 306 | * right parts. |
|
- | 307 | */ |
|
121 | unsigned int flags; |
308 | unsigned int flags; |
Line -... | Line 309... | ||
- | 309 | ||
- | 310 | /** |
|
- | 311 | * @width_mm: |
|
122 | 312 | * |
|
- | 313 | * Addressable size of the output in mm, projectors should set this to |
|
- | 314 | * 0. |
|
123 | /* Addressable image size (may be 0 for projectors, etc.) */ |
315 | */ |
- | 316 | int width_mm; |
|
- | 317 | ||
- | 318 | /** |
|
- | 319 | * @height_mm: |
|
- | 320 | * |
|
- | 321 | * Addressable size of the output in mm, projectors should set this to |
|
- | 322 | * 0. |
|
124 | int width_mm; |
323 | */ |
Line -... | Line 324... | ||
- | 324 | int height_mm; |
|
- | 325 | ||
- | 326 | /** |
|
- | 327 | * @crtc_clock: |
|
- | 328 | * |
|
- | 329 | * Actual pixel or dot clock in the hardware. This differs from the |
|
125 | int height_mm; |
330 | * logical @clock when e.g. using interlacing, double-clocking, stereo |
- | 331 | * modes or other fancy stuff that changes the timings and signals |
|
- | 332 | * actually sent over the wire. |
|
- | 333 | * |
|
- | 334 | * This is again in kHz. |
|
- | 335 | * |
|
- | 336 | * Note that with digital outputs like HDMI or DP there's usually a |
|
- | 337 | * massive confusion between the dot clock and the signal clock at the |
|
- | 338 | * bit encoding level. Especially when a 8b/10b encoding is used and the |
|
126 | 339 | * difference is exactly a factor of 10. |
|
127 | /* Actual mode we give to hw */ |
340 | */ |
128 | int crtc_clock; /* in KHz */ |
341 | int crtc_clock; |
129 | int crtc_hdisplay; |
342 | int crtc_hdisplay; |
130 | int crtc_hblank_start; |
343 | int crtc_hblank_start; |
131 | int crtc_hblank_end; |
344 | int crtc_hblank_end; |
Line 138... | Line 351... | ||
138 | int crtc_vblank_end; |
351 | int crtc_vblank_end; |
139 | int crtc_vsync_start; |
352 | int crtc_vsync_start; |
140 | int crtc_vsync_end; |
353 | int crtc_vsync_end; |
141 | int crtc_vtotal; |
354 | int crtc_vtotal; |
Line -... | Line 355... | ||
- | 355 | ||
- | 356 | /** |
|
- | 357 | * @private: |
|
- | 358 | * |
|
- | 359 | * Pointer for driver private data. This can only be used for mode |
|
- | 360 | * objects passed to drivers in modeset operations. It shouldn't be used |
|
142 | 361 | * by atomic drivers since they can store any additional data by |
|
- | 362 | * subclassing state structures. |
|
143 | /* Driver private mode info */ |
363 | */ |
- | 364 | int *private; |
|
- | 365 | ||
- | 366 | /** |
|
- | 367 | * @private_flags: |
|
- | 368 | * |
|
- | 369 | * Similar to @private, but just an integer. |
|
144 | int *private; |
370 | */ |
Line -... | Line 371... | ||
- | 371 | int private_flags; |
|
- | 372 | ||
- | 373 | /** |
|
- | 374 | * @vrefresh: |
|
- | 375 | * |
|
- | 376 | * Vertical refresh rate, for debug output in human readable form. Not |
|
- | 377 | * used in a functional way. |
|
- | 378 | * |
|
145 | int private_flags; |
379 | * This value is in Hz. |
- | 380 | */ |
|
- | 381 | int vrefresh; |
|
- | 382 | ||
- | 383 | /** |
|
- | 384 | * @hsync: |
|
- | 385 | * |
|
- | 386 | * Horizontal refresh rate, for debug output in human readable form. Not |
|
146 | 387 | * used in a functional way. |
|
- | 388 | * |
|
- | 389 | * This value is in kHz. |
|
- | 390 | */ |
|
- | 391 | int hsync; |
|
- | 392 | ||
- | 393 | /** |
|
- | 394 | * @picture_aspect_ratio: |
|
- | 395 | * |
|
147 | int vrefresh; /* in Hz */ |
396 | * Field for setting the HDMI picture aspect ratio of a mode. |
148 | int hsync; /* in kHz */ |
397 | */ |
Line 149... | Line 398... | ||
149 | enum hdmi_picture_aspect picture_aspect_ratio; |
398 | enum hdmi_picture_aspect picture_aspect_ratio; |
150 | }; |
399 | }; |
Line 220... | Line 469... | ||
220 | const struct drm_display_mode *src); |
469 | const struct drm_display_mode *src); |
221 | struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev, |
470 | struct drm_display_mode *drm_mode_duplicate(struct drm_device *dev, |
222 | const struct drm_display_mode *mode); |
471 | const struct drm_display_mode *mode); |
223 | bool drm_mode_equal(const struct drm_display_mode *mode1, |
472 | bool drm_mode_equal(const struct drm_display_mode *mode1, |
224 | const struct drm_display_mode *mode2); |
473 | const struct drm_display_mode *mode2); |
- | 474 | bool drm_mode_equal_no_clocks(const struct drm_display_mode *mode1, |
|
- | 475 | const struct drm_display_mode *mode2); |
|
225 | bool drm_mode_equal_no_clocks_no_stereo(const struct drm_display_mode *mode1, |
476 | bool drm_mode_equal_no_clocks_no_stereo(const struct drm_display_mode *mode1, |
226 | const struct drm_display_mode *mode2); |
477 | const struct drm_display_mode *mode2); |
Line 227... | Line 478... | ||
227 | 478 | ||
228 | /* for use by the crtc helper probe functions */ |
479 | /* for use by the crtc helper probe functions */ |
229 | enum drm_mode_status drm_mode_validate_basic(const struct drm_display_mode *mode); |
480 | enum drm_mode_status drm_mode_validate_basic(const struct drm_display_mode *mode); |
230 | enum drm_mode_status drm_mode_validate_size(const struct drm_display_mode *mode, |
481 | enum drm_mode_status drm_mode_validate_size(const struct drm_display_mode *mode, |
231 | int maxX, int maxY); |
482 | int maxX, int maxY); |
232 | void drm_mode_prune_invalid(struct drm_device *dev, |
483 | void drm_mode_prune_invalid(struct drm_device *dev, |
233 | struct list_head *mode_list, bool verbose); |
484 | struct list_head *mode_list, bool verbose); |
234 | void drm_mode_sort(struct list_head *mode_list); |
485 | void drm_mode_sort(struct list_head *mode_list); |
Line 235... | Line 486... | ||
235 | void drm_mode_connector_list_update(struct drm_connector *connector, bool merge_type_bits); |
486 | void drm_mode_connector_list_update(struct drm_connector *connector); |
236 | 487 | ||
237 | /* parsing cmdline modes */ |
488 | /* parsing cmdline modes */ |
238 | bool |
489 | bool |