History

Merge tag 'drm-misc-next-2021-01-06' of git://anongit.freedesktop.org/drm/drm-misc into drm-next

drm-misc-next for v5.12: Core Changes: - Lots of drm documentation updates by Simor Ser. - Require that each crtc has a unique primary plane. - Add fixme that fbdev_generic_setup is confusing. Driver Changes: - Update addresses for TI display drivers maintainers. - Make DRM_VIRTIO_GPU select VIRTIO. - Small fixes to qxl, virtio, hisilicon, tve200, panel/s6e63m0.

Daniel Vetter committed 5 years ago

Commit cb3cfbf2 parents 73dc923 cf9a4be15 files · +174 −99Browse files

Unified · Split

15 files
  1. Documentation/gpu/drm-kms.rst +35 −17
  2. Documentation/gpu/drm-uapi.rst +3 −0
  3. MAINTAINERS +5 −5
  4. drivers/gpu/drm/drm_blend.c +0 −6
  5. drivers/gpu/drm/drm_fb_helper.c +5 −0
  6. drivers/gpu/drm/drm_mode_config.c +30 −0
  7. drivers/gpu/drm/drm_plane.c +18 −0
  8. drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c +4 −8
  9. drivers/gpu/drm/panel/panel-samsung-s6e63m0.c +13 −4
  10. drivers/gpu/drm/qxl/qxl_dev.h +8 −8
  11. drivers/gpu/drm/tve200/tve200_display.c +0 −1
  12. drivers/gpu/drm/tve200/tve200_drv.c +0 −1
  13. drivers/gpu/drm/virtio/Kconfig +2 −1
  14. drivers/gpu/drm/virtio/virtgpu_vram.c +2 −0
  15. include/uapi/drm/drm.h +49 −48
Documentation/gpu/drm-kms.rst+35−17
@@ -319,6 +319,15 @@ CRTC Functions Reference · 318 unmodified lines
319319 .. kernel-doc:: drivers/gpu/drm/drm_crtc.c
320320 :export:
321321
322+Color Management Functions Reference
323+------------------------------------
324+
325+.. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c
326+ :export:
327+
328+.. kernel-doc:: include/drm/drm_color_mgmt.h
329+ :internal:
330+
322331 Frame Buffer Abstraction
323332 ========================
324333
@@ -370,6 +379,21 @@ Plane Functions Reference · 45 unmodified lines
370379 .. kernel-doc:: drivers/gpu/drm/drm_plane.c
371380 :export:
372381
382+Plane Composition Functions Reference
383+-------------------------------------
384+
385+.. kernel-doc:: drivers/gpu/drm/drm_blend.c
386+ :export:
387+
388+Plane Damage Tracking Functions Reference
389+-----------------------------------------
390+
391+.. kernel-doc:: drivers/gpu/drm/drm_damage_helper.c
392+ :export:
393+
394+.. kernel-doc:: include/drm/drm_damage_helper.h
395+ :internal:
396+
373397 Display Modes Function Reference
374398 ================================
375399
@@ -436,6 +460,9 @@ KMS Locking · 60 unmodified lines
436460 KMS Properties
437461 ==============
438462
463+This section of the documentation is primarily aimed at user-space developers.
464+For the driver APIs, see the other sections.
465+
439466 Property Types and Blob Property Support
440467 ----------------------------------------
441468
@@ -466,39 +493,30 @@ Standard CRTC Properties · 24 unmodified lines
466493 .. kernel-doc:: drivers/gpu/drm/drm_crtc.c
467494 :doc: standard CRTC properties
468495
496+Standard Plane Properties
497+-------------------------
498+
499+.. kernel-doc:: drivers/gpu/drm/drm_plane.c
500+ :doc: standard plane properties
501+
469502 Plane Composition Properties
470503 ----------------------------
471504
472505 .. kernel-doc:: drivers/gpu/drm/drm_blend.c
473506 :doc: overview
474507
475−.. kernel-doc:: drivers/gpu/drm/drm_blend.c
476− :export:
477−
478−FB_DAMAGE_CLIPS
479−~~~~~~~~~~~~~~~
508+Damage Tracking Properties
509+--------------------------
480510
481511 .. kernel-doc:: drivers/gpu/drm/drm_damage_helper.c
482512 :doc: overview
483513
484−.. kernel-doc:: drivers/gpu/drm/drm_damage_helper.c
485− :export:
486−
487−.. kernel-doc:: include/drm/drm_damage_helper.h
488− :internal:
489−
490514 Color Management Properties
491515 ---------------------------
492516
493517 .. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c
494518 :doc: overview
495519
496−.. kernel-doc:: drivers/gpu/drm/drm_color_mgmt.c
497− :export:
498−
499−.. kernel-doc:: include/drm/drm_color_mgmt.h
500− :internal:
501−
502520 Tile Group Property
503521 -------------------
504522
Documentation/gpu/drm-uapi.rst+3−0
@@ -457,5 +457,8 @@ Userspace API Structures · 456 unmodified lines
457457 .. kernel-doc:: include/uapi/drm/drm_mode.h
458458 :doc: overview
459459
460+.. kernel-doc:: include/uapi/drm/drm.h
461+ :internal:
462+
460463 .. kernel-doc:: include/uapi/drm/drm_mode.h
461464 :internal:
MAINTAINERS+5−5
@@ -5985,8 +5985,8 @@ F: Documentation/devicetree/bindings/display/st,stm32-ltdc.yaml · 5984 unmodified lines
59855985 F: drivers/gpu/drm/stm
59865986
59875987 DRM DRIVERS FOR TI KEYSTONE
5988−M: Jyri Sarha <jsarha@ti.com>
5989−M: Tomi Valkeinen <tomi.valkeinen@ti.com>
5988+M: Jyri Sarha <jyri.sarha@iki.fi>
5989+M: Tomi Valkeinen <tomba@kernel.org>
59905990 L: dri-devel@lists.freedesktop.org
59915991 S: Maintained
59925992 T: git git://anongit.freedesktop.org/drm/drm-misc
@@ -5996,15 +5996,15 @@ F: Documentation/devicetree/bindings/display/ti/ti,k2g-dss.yaml · 3 unmodified lines
59965996 F: drivers/gpu/drm/tidss/
59975997
59985998 DRM DRIVERS FOR TI LCDC
5999−M: Jyri Sarha <jsarha@ti.com>
6000−R: Tomi Valkeinen <tomi.valkeinen@ti.com>
5999+M: Jyri Sarha <jyri.sarha@iki.fi>
6000+R: Tomi Valkeinen <tomba@kernel.org>
60016001 L: dri-devel@lists.freedesktop.org
60026002 S: Maintained
60036003 F: Documentation/devicetree/bindings/display/tilcdc/
60046004 F: drivers/gpu/drm/tilcdc/
60056005
60066006 DRM DRIVERS FOR TI OMAP
6007−M: Tomi Valkeinen <tomi.valkeinen@ti.com>
6007+M: Tomi Valkeinen <tomba@kernel.org>
60086008 L: dri-devel@lists.freedesktop.org
60096009 S: Maintained
60106010 F: Documentation/devicetree/bindings/display/ti/
drivers/gpu/drm/drm_blend.c+0−6
@@ -185,12 +185,6 @@ · 184 unmodified lines
185185 * plane does not expose the "alpha" property, then this is
186186 * assumed to be 1.0
187187 *
188− * IN_FORMATS:
189− * Blob property which contains the set of buffer format and modifier
190− * pairs supported by this plane. The blob is a drm_format_modifier_blob
191− * struct. Without this property the plane doesn't support buffers with
192− * modifiers. Userspace cannot change this property.
193− *
194188 * Note that all the property extensions described here apply either to the
195189 * plane or the CRTC (e.g. for the background color, which currently is not
196190 * exposed and assumed to be black).
drivers/gpu/drm/drm_fb_helper.c+5−0
@@ -2496,6 +2496,11 @@ void drm_fbdev_generic_setup(struct drm_device *dev, · 2495 unmodified lines
24962496 return;
24972497 }
24982498
2499+ /*
2500+ * FIXME: This mixes up depth with bpp, which results in a glorious
2501+ * mess, resulting in some drivers picking wrong fbdev defaults and
2502+ * others wrong preferred_depth defaults.
2503+ */
24992504 if (!preferred_bpp)
25002505 preferred_bpp = dev->mode_config.preferred_depth;
25012506 if (!preferred_bpp)
drivers/gpu/drm/drm_mode_config.c+30−0
@@ -626,6 +626,9 @@ void drm_mode_config_validate(struct drm_device *dev) · 625 unmodified lines
626626 {
627627 struct drm_encoder *encoder;
628628 struct drm_crtc *crtc;
629+ struct drm_plane *plane;
630+ u32 primary_with_crtc = 0, cursor_with_crtc = 0;
631+ unsigned int num_primary = 0;
629632
630633 if (!drm_core_check_feature(dev, DRIVER_MODESET))
631634 return;
@@ -642,17 +645,44 @@ void drm_mode_config_validate(struct drm_device *dev) · 10 unmodified lines
642645 WARN(!crtc->primary, "Missing primary plane on [CRTC:%d:%s]\n",
643646 crtc->base.id, crtc->name);
644647
648+ WARN(crtc->cursor && crtc->funcs->cursor_set,
649+ "[CRTC:%d:%s] must not have both a cursor plane and a cursor_set func",
650+ crtc->base.id, crtc->name);
651+ WARN(crtc->cursor && crtc->funcs->cursor_set2,
652+ "[CRTC:%d:%s] must not have both a cursor plane and a cursor_set2 func",
653+ crtc->base.id, crtc->name);
654+ WARN(crtc->cursor && crtc->funcs->cursor_move,
655+ "[CRTC:%d:%s] must not have both a cursor plane and a cursor_move func",
656+ crtc->base.id, crtc->name);
657+
645658 if (crtc->primary) {
646659 WARN(!(crtc->primary->possible_crtcs & drm_crtc_mask(crtc)),
647660 "Bogus primary plane possible_crtcs: [PLANE:%d:%s] must be compatible with [CRTC:%d:%s]\n",
648661 crtc->primary->base.id, crtc->primary->name,
649662 crtc->base.id, crtc->name);
663+ WARN(primary_with_crtc & drm_plane_mask(crtc->primary),
664+ "Primary plane [PLANE:%d:%s] used for multiple CRTCs",
665+ crtc->primary->base.id, crtc->primary->name);
666+ primary_with_crtc |= drm_plane_mask(crtc->primary);
650667 }
651668 if (crtc->cursor) {
652669 WARN(!(crtc->cursor->possible_crtcs & drm_crtc_mask(crtc)),
653670 "Bogus cursor plane possible_crtcs: [PLANE:%d:%s] must be compatible with [CRTC:%d:%s]\n",
654671 crtc->cursor->base.id, crtc->cursor->name,
655672 crtc->base.id, crtc->name);
673+ WARN(cursor_with_crtc & drm_plane_mask(crtc->cursor),
674+ "Cursor plane [PLANE:%d:%s] used for multiple CRTCs",
675+ crtc->cursor->base.id, crtc->cursor->name);
676+ cursor_with_crtc |= drm_plane_mask(crtc->cursor);
656677 }
657678 }
679+
680+ drm_for_each_plane(plane, dev) {
681+ if (plane->type == DRM_PLANE_TYPE_PRIMARY)
682+ num_primary++;
683+ }
684+
685+ WARN(num_primary != dev->mode_config.num_crtc,
686+ "Must have as many primary planes as there are CRTCs, but have %u primary planes and %u CRTCs",
687+ num_primary, dev->mode_config.num_crtc);
658688 }
drivers/gpu/drm/drm_plane.c+18−0
@@ -55,6 +55,12 @@ · 54 unmodified lines
5555 * enum drm_plane_type). A plane can be compatible with multiple CRTCs, see
5656 * &drm_plane.possible_crtcs.
5757 *
58+ * Each CRTC must have a unique primary plane userspace can attach to enable
59+ * the CRTC. In other words, userspace must be able to attach a different
60+ * primary plane to each CRTC at the same time. Primary planes can still be
61+ * compatible with multiple CRTCs. There must be exactly as many primary planes
62+ * as there are CRTCs.
63+ *
5864 * Legacy uAPI doesn't expose the primary and cursor planes directly. DRM core
5965 * relies on the driver to set the primary and optionally the cursor plane used
6066 * for legacy IOCTLs. This is done by calling drm_crtc_init_with_planes(). All
@@ -62,6 +68,18 @@ · 1 unmodified line
6268 * userspace too much.
6369 */
6470
71+/**
72+ * DOC: standard plane properties
73+ *
74+ * DRM planes have a few standardized properties:
75+ *
76+ * IN_FORMATS:
77+ * Blob property which contains the set of buffer format and modifier
78+ * pairs supported by this plane. The blob is a struct
79+ * drm_format_modifier_blob. Without this property the plane doesn't
80+ * support buffers with modifiers. Userspace cannot change this property.
81+ */
82+
6583 static unsigned int drm_num_planes(struct drm_device *dev)
6684 {
6785 unsigned int num = 0;
drivers/gpu/drm/hisilicon/hibmc/hibmc_drm_drv.c+4−8
@@ -329,16 +329,16 @@ static int hibmc_pci_probe(struct pci_dev *pdev, · 328 unmodified lines
329329 dev->pdev = pdev;
330330 pci_set_drvdata(pdev, dev);
331331
332− ret = pci_enable_device(pdev);
332+ ret = pcim_enable_device(pdev);
333333 if (ret) {
334334 drm_err(dev, "failed to enable pci device: %d\n", ret);
335− goto err_free;
335+ goto err_return;
336336 }
337337
338338 ret = hibmc_load(dev);
339339 if (ret) {
340340 drm_err(dev, "failed to load hibmc: %d\n", ret);
341− goto err_disable;
341+ goto err_return;
342342 }
343343
344344 ret = drm_dev_register(dev, 0);
@@ -354,11 +354,7 @@ static int hibmc_pci_probe(struct pci_dev *pdev, · 9 unmodified lines
354354
355355 err_unload:
356356 hibmc_unload(dev);
357−err_disable:
358− pci_disable_device(pdev);
359−err_free:
360− drm_dev_put(dev);
361−
357+err_return:
362358 return ret;
363359 }
364360
drivers/gpu/drm/panel/panel-samsung-s6e63m0.c+13−4
@@ -692,12 +692,12 @@ static const struct backlight_ops s6e63m0_backlight_ops = { · 691 unmodified lines
692692 .update_status = s6e63m0_set_brightness,
693693 };
694694
695−static int s6e63m0_backlight_register(struct s6e63m0 *ctx)
695+static int s6e63m0_backlight_register(struct s6e63m0 *ctx, u32 max_brightness)
696696 {
697697 struct backlight_properties props = {
698698 .type = BACKLIGHT_RAW,
699− .brightness = MAX_BRIGHTNESS,
700− .max_brightness = MAX_BRIGHTNESS
699+ .brightness = max_brightness,
700+ .max_brightness = max_brightness,
701701 };
702702 struct device *dev = ctx->dev;
703703 int ret = 0;
@@ -719,6 +719,7 @@ int s6e63m0_probe(struct device *dev, · 15 unmodified lines
719719 bool dsi_mode)
720720 {
721721 struct s6e63m0 *ctx;
722+ u32 max_brightness;
722723 int ret;
723724
724725 ctx = devm_kzalloc(dev, sizeof(struct s6e63m0), GFP_KERNEL);
@@ -734,6 +735,14 @@ int s6e63m0_probe(struct device *dev, · 9 unmodified lines
734735 ctx->enabled = false;
735736 ctx->prepared = false;
736737
738+ ret = device_property_read_u32(dev, "max-brightness", &max_brightness);
739+ if (ret)
740+ max_brightness = MAX_BRIGHTNESS;
741+ if (max_brightness > MAX_BRIGHTNESS) {
742+ dev_err(dev, "illegal max brightness specified\n");
743+ max_brightness = MAX_BRIGHTNESS;
744+ }
745+
737746 ctx->supplies[0].supply = "vdd3";
738747 ctx->supplies[1].supply = "vci";
739748 ret = devm_regulator_bulk_get(dev, ARRAY_SIZE(ctx->supplies),
@@ -753,7 +762,7 @@ int s6e63m0_probe(struct device *dev, · 13 unmodified lines
753762 dsi_mode ? DRM_MODE_CONNECTOR_DSI :
754763 DRM_MODE_CONNECTOR_DPI);
755764
756− ret = s6e63m0_backlight_register(ctx);
765+ ret = s6e63m0_backlight_register(ctx, max_brightness);
757766 if (ret < 0)
758767 return ret;
759768
drivers/gpu/drm/qxl/qxl_dev.h+8−8
@@ -271,7 +271,7 @@ struct qxl_mode { · 270 unmodified lines
271271 /* qxl-1 compat: fixed */
272272 struct qxl_modes {
273273 uint32_t n_modes;
274− struct qxl_mode modes[0];
274+ struct qxl_mode modes[];
275275 };
276276
277277 /* qxl-1 compat: append only */
@@ -382,12 +382,12 @@ struct qxl_data_chunk { · 104 unmodified lines
382382 uint32_t data_size;
383383 QXLPHYSICAL prev_chunk;
384384 QXLPHYSICAL next_chunk;
385− uint8_t data[0];
385+ uint8_t data[];
386386 };
387387
388388 struct qxl_message {
389389 union qxl_release_info release_info;
390− uint8_t data[0];
390+ uint8_t data[];
391391 };
392392
393393 struct qxl_compat_update_cmd {
@@ -469,7 +469,7 @@ struct qxl_raster_glyph { · 75 unmodified lines
469469 struct qxl_point glyph_origin;
470470 uint16_t width;
471471 uint16_t height;
472− uint8_t data[0];
472+ uint8_t data[];
473473 };
474474
475475 struct qxl_string {
@@ -768,7 +768,7 @@ enum { · 292 unmodified lines
768768 struct qxl_path_seg {
769769 uint32_t flags;
770770 uint32_t count;
771− struct qxl_point_fix points[0];
771+ struct qxl_point_fix points[];
772772 };
773773
774774 struct qxl_path {
@@ -819,7 +819,7 @@ struct qxl_image_descriptor { · 44 unmodified lines
819819 struct qxl_palette {
820820 uint64_t unique;
821821 uint16_t num_ents;
822− uint32_t ents[0];
822+ uint32_t ents[];
823823 };
824824
825825 struct qxl_bitmap {
@@ -838,7 +838,7 @@ struct qxl_surface_id { · 12 unmodified lines
838838
839839 struct qxl_encoder_data {
840840 uint32_t data_size;
841− uint8_t data[0];
841+ uint8_t data[];
842842 };
843843
844844 struct qxl_image {
@@ -868,7 +868,7 @@ struct qxl_monitors_config { · 23 unmodified lines
868868 uint16_t count;
869869 uint16_t max_allowed; /* If it is 0 no fixed limit is given by the
870870 driver */
871− struct qxl_head heads[0];
871+ struct qxl_head heads[];
872872 };
873873
874874 #pragma pack(pop)
drivers/gpu/drm/tve200/tve200_display.c+0−1
@@ -11,7 +11,6 @@ · 10 unmodified lines
1111 */
1212
1313 #include <linux/clk.h>
14−#include <linux/version.h>
1514 #include <linux/dma-buf.h>
1615 #include <linux/of_graph.h>
1716 #include <linux/delay.h>
drivers/gpu/drm/tve200/tve200_drv.c+0−1
@@ -35,7 +35,6 @@ · 34 unmodified lines
3535 #include <linux/platform_device.h>
3636 #include <linux/shmem_fs.h>
3737 #include <linux/slab.h>
38−#include <linux/version.h>
3938
4039 #include <drm/drm_atomic_helper.h>
4140 #include <drm/drm_bridge.h>
drivers/gpu/drm/virtio/Kconfig+2−1
@@ -1,7 +1,8 @@
11 # SPDX-License-Identifier: GPL-2.0-only
22 config DRM_VIRTIO_GPU
33 tristate "Virtio GPU driver"
4− depends on DRM && VIRTIO && VIRTIO_MENU && MMU
4+ depends on DRM && VIRTIO_MENU && MMU
5+ select VIRTIO
56 select DRM_KMS_HELPER
67 select DRM_GEM_SHMEM_HELPER
78 select VIRTIO_DMA_SHARED_BUFFER
drivers/gpu/drm/virtio/virtgpu_vram.c+2−0
@@ -134,6 +134,8 @@ int virtio_gpu_vram_create(struct virtio_gpu_device *vgdev, · 133 unmodified lines
134134
135135 obj = &vram->base.base.base;
136136 obj->funcs = &virtio_gpu_vram_funcs;
137+
138+ params->size = PAGE_ALIGN(params->size);
137139 drm_gem_private_object_init(vgdev->ddev, obj, params->size);
138140
139141 /* Create fake offset */
include/uapi/drm/drm.h+49−48
@@ -1,11 +1,10 @@
1−/**
2− * \file drm.h
1+/*
32 * Header for the Direct Rendering Manager
43 *
5− * \author Rickard E. (Rik) Faith <faith@valinux.com>
4+ * Author: Rickard E. (Rik) Faith <faith@valinux.com>
65 *
7− * \par Acknowledgments:
8− * Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic \c cmpxchg.
6+ * Acknowledgments:
7+ * Dec 1999, Richard Henderson <rth@twiddle.net>, move to generic cmpxchg.
98 */
109
1110 /*
@@ -85,7 +84,7 @@ typedef unsigned int drm_context_t; · 73 unmodified lines
8584 typedef unsigned int drm_drawable_t;
8685 typedef unsigned int drm_magic_t;
8786
88−/**
87+/*
8988 * Cliprect.
9089 *
9190 * \warning: If you change this structure, make sure you change
@@ -101,7 +100,7 @@ struct drm_clip_rect { · 9 unmodified lines
101100 unsigned short y2;
102101 };
103102
104−/**
103+/*
105104 * Drawable information.
106105 */
107106 struct drm_drawable_info {
@@ -109,7 +108,7 @@ struct drm_drawable_info { · 1 unmodified line
109108 struct drm_clip_rect *rects;
110109 };
111110
112−/**
111+/*
113112 * Texture region,
114113 */
115114 struct drm_tex_region {
@@ -120,7 +119,7 @@ struct drm_tex_region { · 4 unmodified lines
120119 unsigned int age;
121120 };
122121
123−/**
122+/*
124123 * Hardware lock.
125124 *
126125 * The lock structure is a simple cache-line aligned integer. To avoid
@@ -132,7 +131,7 @@ struct drm_hw_lock { · 5 unmodified lines
132131 char padding[60]; /**< Pad to cache line */
133132 };
134133
135−/**
134+/*
136135 * DRM_IOCTL_VERSION ioctl argument type.
137136 *
138137 * \sa drmGetVersion().
@@ -149,7 +148,7 @@ struct drm_version { · 10 unmodified lines
149148 char __user *desc; /**< User-space buffer to hold desc */
150149 };
151150
152−/**
151+/*
153152 * DRM_IOCTL_GET_UNIQUE ioctl argument type.
154153 *
155154 * \sa drmGetBusid() and drmSetBusId().
@@ -168,7 +167,7 @@ struct drm_block { · 12 unmodified lines
168167 int unused;
169168 };
170169
171−/**
170+/*
172171 * DRM_IOCTL_CONTROL ioctl argument type.
173172 *
174173 * \sa drmCtlInstHandler() and drmCtlUninstHandler().
@@ -183,7 +182,7 @@ struct drm_control { · 8 unmodified lines
183182 int irq;
184183 };
185184
186−/**
185+/*
187186 * Type of memory to map.
188187 */
189188 enum drm_map_type {
@@ -195,7 +194,7 @@ enum drm_map_type { · 5 unmodified lines
195194 _DRM_CONSISTENT = 5 /**< Consistent memory for PCI DMA */
196195 };
197196
198−/**
197+/*
199198 * Memory mapping flags.
200199 */
201200 enum drm_map_flags {
@@ -214,7 +213,7 @@ struct drm_ctx_priv_map { · 12 unmodified lines
214213 void *handle; /**< Handle of map */
215214 };
216215
217−/**
216+/*
218217 * DRM_IOCTL_GET_MAP, DRM_IOCTL_ADD_MAP and DRM_IOCTL_RM_MAP ioctls
219218 * argument type.
220219 *
@@ -231,7 +230,7 @@ struct drm_map { · 10 unmodified lines
231230 /* Private data */
232231 };
233232
234−/**
233+/*
235234 * DRM_IOCTL_GET_CLIENT ioctl argument type.
236235 */
237236 struct drm_client {
@@ -263,7 +262,7 @@ enum drm_stat_type { · 25 unmodified lines
263262 /* Add to the *END* of the list */
264263 };
265264
266−/**
265+/*
267266 * DRM_IOCTL_GET_STATS ioctl argument type.
268267 */
269268 struct drm_stats {
@@ -274,7 +273,7 @@ struct drm_stats { · 4 unmodified lines
274273 } data[15];
275274 };
276275
277−/**
276+/*
278277 * Hardware locking flags.
279278 */
280279 enum drm_lock_flags {
@@ -289,7 +288,7 @@ enum drm_lock_flags { · 8 unmodified lines
289288 _DRM_HALT_CUR_QUEUES = 0x20 /**< Halt all current queues */
290289 };
291290
292−/**
291+/*
293292 * DRM_IOCTL_LOCK, DRM_IOCTL_UNLOCK and DRM_IOCTL_FINISH ioctl argument type.
294293 *
295294 * \sa drmGetLock() and drmUnlock().
@@ -299,7 +298,7 @@ struct drm_lock { · 3 unmodified lines
299298 enum drm_lock_flags flags;
300299 };
301300
302−/**
301+/*
303302 * DMA flags
304303 *
305304 * \warning
@@ -328,7 +327,7 @@ enum drm_dma_flags { · 22 unmodified lines
328327 _DRM_DMA_LARGER_OK = 0x40 /**< Larger-than-requested buffers OK */
329328 };
330329
331−/**
330+/*
332331 * DRM_IOCTL_ADD_BUFS and DRM_IOCTL_MARK_BUFS ioctl argument type.
333332 *
334333 * \sa drmAddBufs().
@@ -351,7 +350,7 @@ struct drm_buf_desc { · 16 unmodified lines
351350 */
352351 };
353352
354−/**
353+/*
355354 * DRM_IOCTL_INFO_BUFS ioctl argument type.
356355 */
357356 struct drm_buf_info {
@@ -359,7 +358,7 @@ struct drm_buf_info { · 1 unmodified line
359358 struct drm_buf_desc __user *list;
360359 };
361360
362−/**
361+/*
363362 * DRM_IOCTL_FREE_BUFS ioctl argument type.
364363 */
365364 struct drm_buf_free {
@@ -367,7 +366,7 @@ struct drm_buf_free { · 1 unmodified line
367366 int __user *list;
368367 };
369368
370−/**
369+/*
371370 * Buffer information
372371 *
373372 * \sa drm_buf_map.
@@ -379,7 +378,7 @@ struct drm_buf_pub { · 5 unmodified lines
379378 void __user *address; /**< Address of buffer */
380379 };
381380
382−/**
381+/*
383382 * DRM_IOCTL_MAP_BUFS ioctl argument type.
384383 */
385384 struct drm_buf_map {
@@ -392,7 +391,7 @@ struct drm_buf_map { · 6 unmodified lines
392391 struct drm_buf_pub __user *list; /**< Buffer information */
393392 };
394393
395−/**
394+/*
396395 * DRM_IOCTL_DMA ioctl argument type.
397396 *
398397 * Indices here refer to the offset into the buffer list in drm_buf_get.
@@ -417,7 +416,7 @@ enum drm_ctx_flags { · 18 unmodified lines
417416 _DRM_CONTEXT_2DONLY = 0x02
418417 };
419418
420−/**
419+/*
421420 * DRM_IOCTL_ADD_CTX ioctl argument type.
422421 *
423422 * \sa drmCreateContext() and drmDestroyContext().
@@ -427,7 +426,7 @@ struct drm_ctx { · 3 unmodified lines
427426 enum drm_ctx_flags flags;
428427 };
429428
430−/**
429+/*
431430 * DRM_IOCTL_RES_CTX ioctl argument type.
432431 */
433432 struct drm_ctx_res {
@@ -435,14 +434,14 @@ struct drm_ctx_res { · 1 unmodified line
435434 struct drm_ctx __user *contexts;
436435 };
437436
438−/**
437+/*
439438 * DRM_IOCTL_ADD_DRAW and DRM_IOCTL_RM_DRAW ioctl argument type.
440439 */
441440 struct drm_draw {
442441 drm_drawable_t handle;
443442 };
444443
445−/**
444+/*
446445 * DRM_IOCTL_UPDATE_DRAW ioctl argument type.
447446 */
448447 typedef enum {
@@ -456,14 +455,14 @@ struct drm_update_draw { · 7 unmodified lines
456455 unsigned long long data;
457456 };
458457
459−/**
458+/*
460459 * DRM_IOCTL_GET_MAGIC and DRM_IOCTL_AUTH_MAGIC ioctl argument type.
461460 */
462461 struct drm_auth {
463462 drm_magic_t magic;
464463 };
465464
466−/**
465+/*
467466 * DRM_IOCTL_IRQ_BUSID ioctl argument type.
468467 *
469468 * \sa drmGetInterruptFromBusID().
@@ -505,7 +504,7 @@ struct drm_wait_vblank_reply { · 35 unmodified lines
505504 long tval_usec;
506505 };
507506
508−/**
507+/*
509508 * DRM_IOCTL_WAIT_VBLANK ioctl argument type.
510509 *
511510 * \sa drmWaitVBlank().
@@ -518,7 +517,7 @@ union drm_wait_vblank { · 6 unmodified lines
518517 #define _DRM_PRE_MODESET 1
519518 #define _DRM_POST_MODESET 2
520519
521−/**
520+/*
522521 * DRM_IOCTL_MODESET_CTL ioctl argument type
523522 *
524523 * \sa drmModesetCtl().
@@ -528,7 +527,7 @@ struct drm_modeset_ctl { · 3 unmodified lines
528527 __u32 cmd;
529528 };
530529
531−/**
530+/*
532531 * DRM_IOCTL_AGP_ENABLE ioctl argument type.
533532 *
534533 * \sa drmAgpEnable().
@@ -537,7 +536,7 @@ struct drm_agp_mode { · 2 unmodified lines
537536 unsigned long mode; /**< AGP mode */
538537 };
539538
540−/**
539+/*
541540 * DRM_IOCTL_AGP_ALLOC and DRM_IOCTL_AGP_FREE ioctls argument type.
542541 *
543542 * \sa drmAgpAlloc() and drmAgpFree().
@@ -549,7 +548,7 @@ struct drm_agp_buffer { · 5 unmodified lines
549548 unsigned long physical; /**< Physical used by i810 */
550549 };
551550
552−/**
551+/*
553552 * DRM_IOCTL_AGP_BIND and DRM_IOCTL_AGP_UNBIND ioctls argument type.
554553 *
555554 * \sa drmAgpBind() and drmAgpUnbind().
@@ -559,7 +558,7 @@ struct drm_agp_binding { · 3 unmodified lines
559558 unsigned long offset; /**< In bytes -- will round to page boundary */
560559 };
561560
562−/**
561+/*
563562 * DRM_IOCTL_AGP_INFO ioctl argument type.
564563 *
565564 * \sa drmAgpVersionMajor(), drmAgpVersionMinor(), drmAgpGetMode(),
@@ -580,7 +579,7 @@ struct drm_agp_info { · 14 unmodified lines
580579 unsigned short id_device;
581580 };
582581
583−/**
582+/*
584583 * DRM_IOCTL_SG_ALLOC ioctl argument type.
585584 */
586585 struct drm_scatter_gather {
@@ -588,7 +587,7 @@ struct drm_scatter_gather { · 1 unmodified line
588587 unsigned long handle; /**< Used for mapping / unmapping */
589588 };
590589
591−/**
590+/*
592591 * DRM_IOCTL_SET_VERSION ioctl argument type.
593592 */
594593 struct drm_set_version {
@@ -598,14 +597,14 @@ struct drm_set_version { · 3 unmodified lines
598597 int drm_dd_minor;
599598 };
600599
601−/** DRM_IOCTL_GEM_CLOSE ioctl argument type */
600+/* DRM_IOCTL_GEM_CLOSE ioctl argument type */
602601 struct drm_gem_close {
603602 /** Handle of the object to be closed. */
604603 __u32 handle;
605604 __u32 pad;
606605 };
607606
608−/** DRM_IOCTL_GEM_FLINK ioctl argument type */
607+/* DRM_IOCTL_GEM_FLINK ioctl argument type */
609608 struct drm_gem_flink {
610609 /** Handle for the object being named */
611610 __u32 handle;
@@ -614,7 +613,7 @@ struct drm_gem_flink { · 2 unmodified lines
614613 __u32 name;
615614 };
616615
617−/** DRM_IOCTL_GEM_OPEN ioctl argument type */
616+/* DRM_IOCTL_GEM_OPEN ioctl argument type */
618617 struct drm_gem_open {
619618 /** Name of object being opened */
620619 __u32 name;
@@ -652,7 +651,7 @@ struct drm_gem_open { · 31 unmodified lines
652651 #define DRM_CAP_SYNCOBJ 0x13
653652 #define DRM_CAP_SYNCOBJ_TIMELINE 0x14
654653
655−/** DRM_IOCTL_GET_CAP ioctl argument type */
654+/* DRM_IOCTL_GET_CAP ioctl argument type */
656655 struct drm_get_cap {
657656 __u64 capability;
658657 __u64 value;
@@ -678,7 +677,9 @@ struct drm_get_cap { · 19 unmodified lines
678677 /**
679678 * DRM_CLIENT_CAP_ATOMIC
680679 *
681− * If set to 1, the DRM core will expose atomic properties to userspace
680+ * If set to 1, the DRM core will expose atomic properties to userspace. This
681+ * implicitly enables &DRM_CLIENT_CAP_UNIVERSAL_PLANES and
682+ * &DRM_CLIENT_CAP_ASPECT_RATIO.
682683 */
683684 #define DRM_CLIENT_CAP_ATOMIC 3
684685
@@ -698,7 +699,7 @@ struct drm_get_cap { · 13 unmodified lines
698699 */
699700 #define DRM_CLIENT_CAP_WRITEBACK_CONNECTORS 5
700701
701−/** DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */
702+/* DRM_IOCTL_SET_CLIENT_CAP ioctl argument type */
702703 struct drm_set_client_cap {
703704 __u64 capability;
704705 __u64 value;
@@ -950,7 +951,7 @@ extern "C" { · 245 unmodified lines
950951
951952 #define DRM_IOCTL_MODE_GETFB2 DRM_IOWR(0xCE, struct drm_mode_fb_cmd2)
952953
953−/**
954+/*
954955 * Device specific ioctls should only be in their respective headers
955956 * The device specific ioctl range is from 0x40 to 0x9f.
956957 * Generic IOCTLS restart at 0xA0.
@@ -961,7 +962,7 @@ extern "C" { · 4 unmodified lines
961962 #define DRM_COMMAND_BASE 0x40
962963 #define DRM_COMMAND_END 0xA0
963964
964−/**
965+/*
965966 * Header for events written back to userspace on the drm fd. The
966967 * type defines the type of event, the length specifies the total
967968 * length of the event (including the header), and user_data is