On Fri, May 22, 2020 at 11:00:25PM +0000, Luis Chamberlain wrote:
On Fri, May 22, 2020 at 03:49:05PM -0700, Scott Branden wrote:
Hi Luis,
On 2020-05-22 3:45 p.m., Luis Chamberlain wrote:
On Fri, May 22, 2020 at 02:46:58PM -0700, Scott Branden wrote:
/**
- enum fw_opt - options to control firmware loading behaviour
- fw_opt - options to control firmware loading behaviour
- @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
- when the firmware is not found. Userspace is in charge to load the
@@ -33,15 +33,13 @@
- the platform's main firmware. If both this fallback and the sysfs
fallback are enabled, then this fallback will be tried first.
*/ -enum fw_opt {
- FW_OPT_UEVENT = BIT(0),
- FW_OPT_NOWAIT = BIT(1),
- FW_OPT_USERHELPER = BIT(2),
- FW_OPT_NO_WARN = BIT(3),
- FW_OPT_NOCACHE = BIT(4),
- FW_OPT_NOFALLBACK_SYSFS = BIT(5),
- FW_OPT_FALLBACK_PLATFORM = BIT(6),
-}; +#define FW_OPT_UEVENT BIT(0) +#define FW_OPT_NOWAIT BIT(1) +#define FW_OPT_USERHELPER BIT(2) +#define FW_OPT_NO_WARN BIT(3) +#define FW_OPT_NOCACHE BIT(4) +#define FW_OPT_NOFALLBACK_SYSFS BIT(5) +#define FW_OPT_FALLBACK_PLATFORM BIT(6)
Everything looked good up to here. The enum defines each flag. We just want to use an enum for *one* flag represetnation, not a bundle.
I do not know exactly what you are looking for then. The FW_OPT_* values are OR'd together in the code. You still want the fw_opt enum above left in place entirely and then the values used in OR'd together?
Yes, exactly. If they are combined then we just use a u32 to represent these are then flags combined. An enum represents just *one* flag, not a set which are OR'd together. Let me know if this is still not clear.
If this is the case, why have an enum at all? What difference is it from a #define like was done here?
thanks,
greg k-h