1
2#ifndef _LINUX_FIRMWARE_H
3#define _LINUX_FIRMWARE_H
4
5#include <linux/types.h>
6#include <linux/compiler.h>
7#include <linux/gfp.h>
8
9#define FW_ACTION_NOUEVENT 0
10#define FW_ACTION_UEVENT 1
11
12struct firmware {
13 size_t size;
14 const u8 *data;
15
16
17 void *priv;
18};
19
20struct module;
21struct device;
22
23
24
25
26
27#ifdef CONFIG_FW_LOADER
28bool firmware_request_builtin(struct firmware *fw, const char *name);
29#else
30static inline bool firmware_request_builtin(struct firmware *fw,
31 const char *name)
32{
33 return false;
34}
35#endif
36
37#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
38int request_firmware(const struct firmware **fw, const char *name,
39 struct device *device);
40int firmware_request_nowarn(const struct firmware **fw, const char *name,
41 struct device *device);
42int firmware_request_platform(const struct firmware **fw, const char *name,
43 struct device *device);
44int request_firmware_nowait(
45 struct module *module, bool uevent,
46 const char *name, struct device *device, gfp_t gfp, void *context,
47 void (*cont)(const struct firmware *fw, void *context));
48int request_firmware_direct(const struct firmware **fw, const char *name,
49 struct device *device);
50int request_firmware_into_buf(const struct firmware **firmware_p,
51 const char *name, struct device *device, void *buf, size_t size);
52int request_partial_firmware_into_buf(const struct firmware **firmware_p,
53 const char *name, struct device *device,
54 void *buf, size_t size, size_t offset);
55
56void release_firmware(const struct firmware *fw);
57#else
58static inline int request_firmware(const struct firmware **fw,
59 const char *name,
60 struct device *device)
61{
62 return -EINVAL;
63}
64
65static inline int firmware_request_nowarn(const struct firmware **fw,
66 const char *name,
67 struct device *device)
68{
69 return -EINVAL;
70}
71
72static inline int firmware_request_platform(const struct firmware **fw,
73 const char *name,
74 struct device *device)
75{
76 return -EINVAL;
77}
78
79static inline int request_firmware_nowait(
80 struct module *module, bool uevent,
81 const char *name, struct device *device, gfp_t gfp, void *context,
82 void (*cont)(const struct firmware *fw, void *context))
83{
84 return -EINVAL;
85}
86
87static inline void release_firmware(const struct firmware *fw)
88{
89}
90
91static inline int request_firmware_direct(const struct firmware **fw,
92 const char *name,
93 struct device *device)
94{
95 return -EINVAL;
96}
97
98static inline int request_firmware_into_buf(const struct firmware **firmware_p,
99 const char *name, struct device *device, void *buf, size_t size)
100{
101 return -EINVAL;
102}
103
104static inline int request_partial_firmware_into_buf
105 (const struct firmware **firmware_p,
106 const char *name,
107 struct device *device,
108 void *buf, size_t size, size_t offset)
109{
110 return -EINVAL;
111}
112
113#endif
114
115int firmware_request_cache(struct device *device, const char *name);
116
117#endif
118