Subversion Repositories Kolibri OS

Rev

Rev 1221 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
1221 serge 1
#ifndef _LINUX_FIRMWARE_H
2
#define _LINUX_FIRMWARE_H
3
 
4
#include 
5
#include 
6
//#include 
7
 
8
#define FW_ACTION_NOHOTPLUG 0
9
#define FW_ACTION_HOTPLUG 1
10
 
11
struct firmware {
12
	size_t size;
13
	const u8 *data;
14
};
15
 
16
struct device;
17
 
18
struct builtin_fw {
19
	char *name;
20
	void *data;
21
	unsigned long size;
22
};
23
 
24
/* We have to play tricks here much like stringify() to get the
25
   __COUNTER__ macro to be expanded as we want it */
26
#define __fw_concat1(x, y) x##y
27
#define __fw_concat(x, y) __fw_concat1(x, y)
28
 
29
#define DECLARE_BUILTIN_FIRMWARE(name, blob)				     \
30
	DECLARE_BUILTIN_FIRMWARE_SIZE(name, &(blob), sizeof(blob))
31
 
32
#define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size)			     \
33
	static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \
34
	__used __section(.builtin_fw) = { name, blob, size }
35
 
36
#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
37
int request_firmware(const struct firmware **fw, const char *name,
38
		     struct device *device);
39
int request_firmware_nowait(
40
	struct module *module, int uevent,
41
	const char *name, struct device *device, void *context,
42
	void (*cont)(const struct firmware *fw, void *context));
43
 
44
void release_firmware(const struct firmware *fw);
45
#else
46
static inline int request_firmware(const struct firmware **fw,
47
				   const char *name,
48
				   struct device *device)
49
{
50
	return -EINVAL;
51
}
52
static inline int request_firmware_nowait(
53
	struct module *module, int uevent,
54
	const char *name, struct device *device, void *context,
55
	void (*cont)(const struct firmware *fw, void *context))
56
{
57
	return -EINVAL;
58
}
59
 
60
static inline void release_firmware(const struct firmware *fw)
61
{
62
}
63
#endif
64
 
65
#endif