aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/base/firmware_loader/firmware.h
diff options
context:
space:
mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2018-06-05 19:29:19 -0400
committerLinus Torvalds <torvalds@linux-foundation.org>2018-06-05 19:29:19 -0400
commitec064d3c6b40697fd72f4b1eeabbf293b7947a04 (patch)
tree1c7dcd0105d2cc9da3861452da9708ca03f2ece6 /drivers/base/firmware_loader/firmware.h
parentabf7dba7c4f77d781f6df50fefb19a64c5dc331f (diff)
parent8c97a46af04b4f7c0a0dded031fef1806872e648 (diff)
Merge tag 'driver-core-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core
Pull driver core updates from Greg KH: "Here is the driver core patchset for 4.18-rc1. The large chunk of these are firmware core documentation and api updates. Nothing major there, just better descriptions for others to be able to understand the firmware code better. There's also a user for a new firmware api call. Other than that, there are some minor updates for debugfs, kernfs, and the driver core itself. All of these have been in linux-next for a while with no reported issues" * tag 'driver-core-4.18-rc1' of git://git.kernel.org/pub/scm/linux/kernel/git/gregkh/driver-core: (23 commits) driver core: hold dev's parent lock when needed driver-core: return EINVAL error instead of BUG_ON() driver core: add __printf verification to device_create_groups_vargs mm: memory_hotplug: use put_device() if device_register fail base: core: fix typo 'can by' to 'can be' debugfs: inode: debugfs_create_dir uses mode permission from parent debugfs: Re-use kstrtobool_from_user() Documentation: clarify firmware_class provenance and why we can't rename the module Documentation: remove stale firmware API reference Documentation: fix few typos and clarifications for the firmware loader ath10k: re-enable the firmware fallback mechanism for testmode ath10k: use firmware_request_nowarn() to load firmware firmware: add firmware_request_nowarn() - load firmware without warnings firmware_loader: make firmware_fallback_sysfs() print more useful firmware_loader: move kconfig FW_LOADER entries to its own file firmware_loader: replace ---help--- with help firmware_loader: enhance Kconfig documentation over FW_LOADER firmware_loader: document firmware_sysfs_fallback() firmware: rename fw_sysfs_fallback to firmware_fallback_sysfs() firmware: use () to terminate kernel-doc function names ...
Diffstat (limited to 'drivers/base/firmware_loader/firmware.h')
-rw-r--r--drivers/base/firmware_loader/firmware.h37
1 files changed, 29 insertions, 8 deletions
diff --git a/drivers/base/firmware_loader/firmware.h b/drivers/base/firmware_loader/firmware.h
index 64acbb1a392c..4c1395f8e7ed 100644
--- a/drivers/base/firmware_loader/firmware.h
+++ b/drivers/base/firmware_loader/firmware.h
@@ -2,6 +2,7 @@
2#ifndef __FIRMWARE_LOADER_H 2#ifndef __FIRMWARE_LOADER_H
3#define __FIRMWARE_LOADER_H 3#define __FIRMWARE_LOADER_H
4 4
5#include <linux/bitops.h>
5#include <linux/firmware.h> 6#include <linux/firmware.h>
6#include <linux/types.h> 7#include <linux/types.h>
7#include <linux/kref.h> 8#include <linux/kref.h>
@@ -10,13 +11,33 @@
10 11
11#include <generated/utsrelease.h> 12#include <generated/utsrelease.h>
12 13
13/* firmware behavior options */ 14/**
14#define FW_OPT_UEVENT (1U << 0) 15 * enum fw_opt - options to control firmware loading behaviour
15#define FW_OPT_NOWAIT (1U << 1) 16 *
16#define FW_OPT_USERHELPER (1U << 2) 17 * @FW_OPT_UEVENT: Enables the fallback mechanism to send a kobject uevent
17#define FW_OPT_NO_WARN (1U << 3) 18 * when the firmware is not found. Userspace is in charge to load the
18#define FW_OPT_NOCACHE (1U << 4) 19 * firmware using the sysfs loading facility.
19#define FW_OPT_NOFALLBACK (1U << 5) 20 * @FW_OPT_NOWAIT: Used to describe the firmware request is asynchronous.
21 * @FW_OPT_USERHELPER: Enable the fallback mechanism, in case the direct
22 * filesystem lookup fails at finding the firmware. For details refer to
23 * firmware_fallback_sysfs().
24 * @FW_OPT_NO_WARN: Quiet, avoid printing warning messages.
25 * @FW_OPT_NOCACHE: Disables firmware caching. Firmware caching is used to
26 * cache the firmware upon suspend, so that upon resume races against the
27 * firmware file lookup on storage is avoided. Used for calls where the
28 * file may be too big, or where the driver takes charge of its own
29 * firmware caching mechanism.
30 * @FW_OPT_NOFALLBACK: Disable the fallback mechanism. Takes precedence over
31 * &FW_OPT_UEVENT and &FW_OPT_USERHELPER.
32 */
33enum fw_opt {
34 FW_OPT_UEVENT = BIT(0),
35 FW_OPT_NOWAIT = BIT(1),
36 FW_OPT_USERHELPER = BIT(2),
37 FW_OPT_NO_WARN = BIT(3),
38 FW_OPT_NOCACHE = BIT(4),
39 FW_OPT_NOFALLBACK = BIT(5),
40};
20 41
21enum fw_status { 42enum fw_status {
22 FW_STATUS_UNKNOWN, 43 FW_STATUS_UNKNOWN,
@@ -110,6 +131,6 @@ static inline void fw_state_done(struct fw_priv *fw_priv)
110} 131}
111 132
112int assign_fw(struct firmware *fw, struct device *device, 133int assign_fw(struct firmware *fw, struct device *device,
113 unsigned int opt_flags); 134 enum fw_opt opt_flags);
114 135
115#endif /* __FIRMWARE_LOADER_H */ 136#endif /* __FIRMWARE_LOADER_H */