diff options
author | Jani Nikula <jani.nikula@intel.com> | 2020-01-23 14:48:00 +0200 |
---|---|---|
committer | Jani Nikula <jani.nikula@intel.com> | 2020-01-25 15:49:01 +0200 |
commit | 12a1d4e093acf2baf85f5d25b3c56b1d36bb920d (patch) | |
tree | 6334c3dfa3deb7cceadda137c5befaae31fed98b /include/drm/drm_drv.h | |
parent | c6cccafa9191f087154f44b94987076617244227 (diff) | |
download | linux-12a1d4e093acf2baf85f5d25b3c56b1d36bb920d.tar.gz linux-12a1d4e093acf2baf85f5d25b3c56b1d36bb920d.tar.bz2 linux-12a1d4e093acf2baf85f5d25b3c56b1d36bb920d.zip |
drm: add drm_core_check_all_features() to check for a mask of features
Add new drm_core_check_all_features() function to check for a mask of
features. All features in the mask are required.
Redefine existing drm_core_check_feature() in terms of this function,
using the drm_driver_feature enum for the parameter.
v3:
- add drm_core_check_all_features() (Thomas)
v2:
- fix kernel-doc (Ville)
- add an extra variable for clarity (Ville)
Cc: Ville Syrjälä <ville.syrjala@linux.intel.com>
Cc: Thomas Zimmermann <tzimmermann@suse.de>
Reviewed-by: Thomas Zimmermann <tzimmermann@suse.de>
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200123124801.14958-1-jani.nikula@intel.com
Diffstat (limited to 'include/drm/drm_drv.h')
-rw-r--r-- | include/drm/drm_drv.h | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h index cf13470810a5..23b636691fb4 100644 --- a/include/drm/drm_drv.h +++ b/include/drm/drm_drv.h @@ -824,6 +824,25 @@ static inline bool drm_dev_is_unplugged(struct drm_device *dev) } /** + * drm_core_check_all_features - check driver feature flags mask + * @dev: DRM device to check + * @features: feature flag(s) mask + * + * This checks @dev for driver features, see &drm_driver.driver_features, + * &drm_device.driver_features, and the various &enum drm_driver_feature flags. + * + * Returns true if all features in the @features mask are supported, false + * otherwise. + */ +static inline bool drm_core_check_all_features(const struct drm_device *dev, + u32 features) +{ + u32 supported = dev->driver->driver_features & dev->driver_features; + + return features && (supported & features) == features; +} + +/** * drm_core_check_feature - check driver feature flags * @dev: DRM device to check * @feature: feature flag @@ -833,9 +852,10 @@ static inline bool drm_dev_is_unplugged(struct drm_device *dev) * * Returns true if the @feature is supported, false otherwise. */ -static inline bool drm_core_check_feature(const struct drm_device *dev, u32 feature) +static inline bool drm_core_check_feature(const struct drm_device *dev, + enum drm_driver_feature feature) { - return dev->driver->driver_features & dev->driver_features & feature; + return drm_core_check_all_features(dev, feature); } /** |