[PATCH v2 1/2] drm: support feature masks in drm_core_check_feature()

Jani Nikula jani.nikula at intel.com
Wed Jan 22 14:02:58 UTC 2020


Allow a mask of features to be passed to drm_core_check_feature(). All
features in the mask are required.

v2:
- fix kernel-doc (Ville)
- add an extra variable for clarity (Ville)

Reviewed-by: Ville Syrjälä <ville.syrjala at linux.intel.com>
Signed-off-by: Jani Nikula <jani.nikula at intel.com>
---
 include/drm/drm_drv.h | 12 ++++++++----
 1 file changed, 8 insertions(+), 4 deletions(-)

diff --git a/include/drm/drm_drv.h b/include/drm/drm_drv.h
index cf13470810a5..f18e19f3f2d0 100644
--- a/include/drm/drm_drv.h
+++ b/include/drm/drm_drv.h
@@ -826,16 +826,20 @@ static inline bool drm_dev_is_unplugged(struct drm_device *dev)
 /**
  * drm_core_check_feature - check driver feature flags
  * @dev: DRM device to check
- * @feature: feature flag
+ * @features: feature flag(s)
  *
  * 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 the @feature is supported, false otherwise.
+ * Returns true if all features in the @features mask are 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,
+					  u32 features)
 {
-	return dev->driver->driver_features & dev->driver_features & feature;
+	u32 supported = dev->driver->driver_features & dev->driver_features;
+
+	return features && (supported & features) == features;
 }
 
 /**
-- 
2.20.1



More information about the dri-devel mailing list