blob: 4d10c7328d2dabafcee9cf285bf263ba6988b3cd [file] [log] [blame]
Linus Torvalds1da177e2005-04-16 15:20:36 -07001#ifndef _LINUX_FIRMWARE_H
2#define _LINUX_FIRMWARE_H
3#include <linux/module.h>
4#include <linux/types.h>
5#define FIRMWARE_NAME_MAX 30
Abhay Salunke6e3eaab2005-09-06 15:17:13 -07006#define FW_ACTION_NOHOTPLUG 0
7#define FW_ACTION_HOTPLUG 1
8
Linus Torvalds1da177e2005-04-16 15:20:36 -07009struct firmware {
10 size_t size;
11 u8 *data;
12};
James Bottomleyfbab9762008-03-07 08:57:54 -060013
Linus Torvalds1da177e2005-04-16 15:20:36 -070014struct device;
James Bottomleyfbab9762008-03-07 08:57:54 -060015
16#if defined(CONFIG_FW_LOADER) || defined(CONFIG_FW_LOADER_MODULE)
Linus Torvalds1da177e2005-04-16 15:20:36 -070017int request_firmware(const struct firmware **fw, const char *name,
18 struct device *device);
19int request_firmware_nowait(
Kay Sievers312c0042005-11-16 09:00:00 +010020 struct module *module, int uevent,
Linus Torvalds1da177e2005-04-16 15:20:36 -070021 const char *name, struct device *device, void *context,
22 void (*cont)(const struct firmware *fw, void *context));
23
24void release_firmware(const struct firmware *fw);
James Bottomleyfbab9762008-03-07 08:57:54 -060025#else
26static inline int request_firmware(const struct firmware **fw,
27 const char *name,
28 struct device *device)
29{
30 return -EINVAL;
31}
32static inline int request_firmware_nowait(
33 struct module *module, int uevent,
34 const char *name, struct device *device, void *context,
35 void (*cont)(const struct firmware *fw, void *context))
36{
37 return -EINVAL;
38}
39
40static inline void release_firmware(const struct firmware *fw)
41{
42}
43#endif
44
Linus Torvalds1da177e2005-04-16 15:20:36 -070045#endif