forked from luck/tmp_suning_uos_patched
drm: Switch DRIVER_ flags to an enum
And move the documenation we alreay have into kerneldoc, plus a bit of polish while at it. v2: - Ditch FIXME from commit message, I've resolved that already before sending out the first version. - Put the legacy DRIVER_ flags at the end (Sam). Cc: Sam Ravnborg <sam@ravnborg.org> Reviewed-by: Emil Velikov <emil.velikov@collabora.com> Reviewed-by: Sam Ravnborg <sam@ravnborg.org> Signed-off-by: Daniel Vetter <daniel.vetter@intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20190129104248.26607-2-daniel.vetter@ffwll.ch
This commit is contained in:
parent
5b38e7475e
commit
0e2a933b02
|
@ -39,68 +39,6 @@ sections.
|
|||
Driver Information
|
||||
------------------
|
||||
|
||||
Driver Features
|
||||
~~~~~~~~~~~~~~~
|
||||
|
||||
Drivers inform the DRM core about their requirements and supported
|
||||
features by setting appropriate flags in the driver_features field.
|
||||
Since those flags influence the DRM core behaviour since registration
|
||||
time, most of them must be set to registering the :c:type:`struct
|
||||
drm_driver <drm_driver>` instance.
|
||||
|
||||
u32 driver_features;
|
||||
|
||||
DRIVER_USE_AGP
|
||||
Driver uses AGP interface, the DRM core will manage AGP resources.
|
||||
|
||||
DRIVER_LEGACY
|
||||
Denote a legacy driver using shadow attach. Don't use.
|
||||
|
||||
DRIVER_KMS_LEGACY_CONTEXT
|
||||
Used only by nouveau for backwards compatibility with existing userspace.
|
||||
Don't use.
|
||||
|
||||
DRIVER_PCI_DMA
|
||||
Driver is capable of PCI DMA, mapping of PCI DMA buffers to
|
||||
userspace will be enabled. Deprecated.
|
||||
|
||||
DRIVER_SG
|
||||
Driver can perform scatter/gather DMA, allocation and mapping of
|
||||
scatter/gather buffers will be enabled. Deprecated.
|
||||
|
||||
DRIVER_HAVE_DMA
|
||||
Driver supports DMA, the userspace DMA API will be supported.
|
||||
Deprecated.
|
||||
|
||||
DRIVER_HAVE_IRQ; DRIVER_IRQ_SHARED
|
||||
DRIVER_HAVE_IRQ indicates whether the driver has an IRQ handler
|
||||
managed by the DRM Core. The core will support simple IRQ handler
|
||||
installation when the flag is set. The installation process is
|
||||
described in ?.
|
||||
|
||||
DRIVER_IRQ_SHARED indicates whether the device & handler support
|
||||
shared IRQs (note that this is required of PCI drivers).
|
||||
|
||||
DRIVER_GEM
|
||||
Driver use the GEM memory manager.
|
||||
|
||||
DRIVER_MODESET
|
||||
Driver supports mode setting interfaces (KMS).
|
||||
|
||||
DRIVER_PRIME
|
||||
Driver implements DRM PRIME buffer sharing.
|
||||
|
||||
DRIVER_RENDER
|
||||
Driver supports dedicated render nodes.
|
||||
|
||||
DRIVER_ATOMIC
|
||||
Driver supports atomic properties. In this case the driver must
|
||||
implement appropriate obj->atomic_get_property() vfuncs for any
|
||||
modeset objects with driver specific properties.
|
||||
|
||||
DRIVER_SYNCOBJ
|
||||
Driver support drm sync objects.
|
||||
|
||||
Major, Minor and Patchlevel
|
||||
~~~~~~~~~~~~~~~~~~~~~~~~~~~
|
||||
|
||||
|
|
|
@ -41,21 +41,123 @@ struct drm_display_mode;
|
|||
struct drm_mode_create_dumb;
|
||||
struct drm_printer;
|
||||
|
||||
/* driver capabilities and requirements mask */
|
||||
#define DRIVER_USE_AGP 0x1
|
||||
#define DRIVER_LEGACY 0x2
|
||||
#define DRIVER_PCI_DMA 0x8
|
||||
#define DRIVER_SG 0x10
|
||||
#define DRIVER_HAVE_DMA 0x20
|
||||
#define DRIVER_HAVE_IRQ 0x40
|
||||
#define DRIVER_IRQ_SHARED 0x80
|
||||
#define DRIVER_GEM 0x1000
|
||||
#define DRIVER_MODESET 0x2000
|
||||
#define DRIVER_PRIME 0x4000
|
||||
#define DRIVER_RENDER 0x8000
|
||||
#define DRIVER_ATOMIC 0x10000
|
||||
#define DRIVER_KMS_LEGACY_CONTEXT 0x20000
|
||||
#define DRIVER_SYNCOBJ 0x40000
|
||||
/**
|
||||
* enum drm_driver_feature - feature flags
|
||||
*
|
||||
* See &drm_driver.driver_features, drm_device.driver_features and
|
||||
* drm_core_check_feature().
|
||||
*/
|
||||
enum drm_driver_feature {
|
||||
/**
|
||||
* @DRIVER_GEM:
|
||||
*
|
||||
* Driver use the GEM memory manager. This should be set for all modern
|
||||
* drivers.
|
||||
*/
|
||||
DRIVER_GEM = BIT(0),
|
||||
/**
|
||||
* @DRIVER_MODESET:
|
||||
*
|
||||
* Driver supports mode setting interfaces (KMS).
|
||||
*/
|
||||
DRIVER_MODESET = BIT(1),
|
||||
/**
|
||||
* @DRIVER_PRIME:
|
||||
*
|
||||
* Driver implements DRM PRIME buffer sharing.
|
||||
*/
|
||||
DRIVER_PRIME = BIT(2),
|
||||
/**
|
||||
* @DRIVER_RENDER:
|
||||
*
|
||||
* Driver supports dedicated render nodes. See also the :ref:`section on
|
||||
* render nodes <drm_render_node>` for details.
|
||||
*/
|
||||
DRIVER_RENDER = BIT(3),
|
||||
/**
|
||||
* @DRIVER_ATOMIC:
|
||||
*
|
||||
* Driver supports the full atomic modesetting userspace API. Drivers
|
||||
* which only use atomic internally, but do not the support the full
|
||||
* userspace API (e.g. not all properties converted to atomic, or
|
||||
* multi-plane updates are not guaranteed to be tear-free) should not
|
||||
* set this flag.
|
||||
*/
|
||||
DRIVER_ATOMIC = BIT(4),
|
||||
/**
|
||||
* @DRIVER_SYNCOBJ:
|
||||
*
|
||||
* Driver supports &drm_syncobj for explicit synchronization of command
|
||||
* submission.
|
||||
*/
|
||||
DRIVER_SYNCOBJ = BIT(5),
|
||||
|
||||
/* IMPORTANT: Below are all the legacy flags, add new ones above. */
|
||||
|
||||
/**
|
||||
* @DRIVER_USE_AGP:
|
||||
*
|
||||
* Set up DRM AGP support, see drm_agp_init(), the DRM core will manage
|
||||
* AGP resources. New drivers don't need this.
|
||||
*/
|
||||
DRIVER_USE_AGP = BIT(24),
|
||||
/**
|
||||
* @DRIVER_LEGACY:
|
||||
*
|
||||
* Denote a legacy driver using shadow attach. Do not use.
|
||||
*/
|
||||
DRIVER_LEGACY = BIT(25),
|
||||
/**
|
||||
* @DRIVER_PCI_DMA:
|
||||
*
|
||||
* Driver is capable of PCI DMA, mapping of PCI DMA buffers to userspace
|
||||
* will be enabled. Only for legacy drivers. Do not use.
|
||||
*/
|
||||
DRIVER_PCI_DMA = BIT(26),
|
||||
/**
|
||||
* @DRIVER_SG:
|
||||
*
|
||||
* Driver can perform scatter/gather DMA, allocation and mapping of
|
||||
* scatter/gather buffers will be enabled. Only for legacy drivers. Do
|
||||
* not use.
|
||||
*/
|
||||
DRIVER_SG = BIT(27),
|
||||
|
||||
/**
|
||||
* @DRIVER_HAVE_DMA:
|
||||
*
|
||||
* Driver supports DMA, the userspace DMA API will be supported. Only
|
||||
* for legacy drivers. Do not use.
|
||||
*/
|
||||
DRIVER_HAVE_DMA = BIT(28),
|
||||
/**
|
||||
* @DRIVER_HAVE_IRQ:
|
||||
*
|
||||
* Legacy irq support. Only for legacy drivers. Do not use.
|
||||
*
|
||||
* New drivers can either use the drm_irq_install() and
|
||||
* drm_irq_uninstall() helper functions, or roll their own irq support
|
||||
* code by calling request_irq() directly.
|
||||
*/
|
||||
DRIVER_HAVE_IRQ = BIT(29),
|
||||
/**
|
||||
* @DRIVER_IRQ_SHARED:
|
||||
*
|
||||
* Indicates to drm_irq_install() that a shared irq should be requested.
|
||||
*
|
||||
* FIXME: This should be an explicit argument for non-legacy drivers, or
|
||||
* at least the default for PCI devices (which would cover all current
|
||||
* users).
|
||||
*/
|
||||
DRIVER_IRQ_SHARED = BIT(30),
|
||||
/**
|
||||
* @DRIVER_KMS_LEGACY_CONTEXT:
|
||||
*
|
||||
* Used only by nouveau for backwards compatibility with existing
|
||||
* userspace. Do not use.
|
||||
*/
|
||||
DRIVER_KMS_LEGACY_CONTEXT = BIT(31),
|
||||
};
|
||||
|
||||
/**
|
||||
* struct drm_driver - DRM driver structure
|
||||
|
@ -579,7 +681,12 @@ struct drm_driver {
|
|||
/** @date: driver date */
|
||||
char *date;
|
||||
|
||||
/** @driver_features: driver features */
|
||||
/**
|
||||
* @driver_features:
|
||||
* Driver features, see &enum drm_driver_feature. Drivers can disable
|
||||
* some features on a per-instance basis using
|
||||
* &drm_device.driver_features.
|
||||
*/
|
||||
u32 driver_features;
|
||||
|
||||
/**
|
||||
|
@ -666,7 +773,7 @@ static inline bool drm_dev_is_unplugged(struct drm_device *dev)
|
|||
* @feature: feature flag
|
||||
*
|
||||
* This checks @dev for driver features, see &drm_driver.driver_features,
|
||||
* &drm_device.driver_features, and the various DRIVER_\* flags.
|
||||
* &drm_device.driver_features, and the various &enum drm_driver_feature flags.
|
||||
*
|
||||
* Returns true if the @feature is supported, false otherwise.
|
||||
*/
|
||||
|
|
Loading…
Reference in New Issue
Block a user