mirror of https://github.com/Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
121 lines
3.3 KiB
121 lines
3.3 KiB
/* SPDX-License-Identifier: GPL-2.0 */ |
|
#ifndef _LINUX_FIRMWARE_H |
|
#define _LINUX_FIRMWARE_H |
|
|
|
#include <linux/types.h> |
|
#include <linux/compiler.h> |
|
#include <linux/gfp.h> |
|
|
|
#define FW_ACTION_NOHOTPLUG 0 |
|
#define FW_ACTION_HOTPLUG 1 |
|
|
|
struct firmware { |
|
size_t size; |
|
const u8 *data; |
|
|
|
/* firmware loader private fields */ |
|
void *priv; |
|
}; |
|
|
|
struct module; |
|
struct device; |
|
|
|
struct builtin_fw { |
|
char *name; |
|
void *data; |
|
unsigned long size; |
|
}; |
|
|
|
/* We have to play tricks here much like stringify() to get the |
|
__COUNTER__ macro to be expanded as we want it */ |
|
#define __fw_concat1(x, y) x##y |
|
#define __fw_concat(x, y) __fw_concat1(x, y) |
|
|
|
#define DECLARE_BUILTIN_FIRMWARE(name, blob) \ |
|
DECLARE_BUILTIN_FIRMWARE_SIZE(name, &(blob), sizeof(blob)) |
|
|
|
#define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size) \ |
|
static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \ |
|
__used __section(".builtin_fw") = { name, blob, size } |
|
|
|
#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE)) |
|
int request_firmware(const struct firmware **fw, const char *name, |
|
struct device *device); |
|
int firmware_request_nowarn(const struct firmware **fw, const char *name, |
|
struct device *device); |
|
int firmware_request_platform(const struct firmware **fw, const char *name, |
|
struct device *device); |
|
int request_firmware_nowait( |
|
struct module *module, bool uevent, |
|
const char *name, struct device *device, gfp_t gfp, void *context, |
|
void (*cont)(const struct firmware *fw, void *context)); |
|
int request_firmware_direct(const struct firmware **fw, const char *name, |
|
struct device *device); |
|
int request_firmware_into_buf(const struct firmware **firmware_p, |
|
const char *name, struct device *device, void *buf, size_t size); |
|
int request_partial_firmware_into_buf(const struct firmware **firmware_p, |
|
const char *name, struct device *device, |
|
void *buf, size_t size, size_t offset); |
|
|
|
void release_firmware(const struct firmware *fw); |
|
#else |
|
static inline int request_firmware(const struct firmware **fw, |
|
const char *name, |
|
struct device *device) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline int firmware_request_nowarn(const struct firmware **fw, |
|
const char *name, |
|
struct device *device) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline int firmware_request_platform(const struct firmware **fw, |
|
const char *name, |
|
struct device *device) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline int request_firmware_nowait( |
|
struct module *module, bool uevent, |
|
const char *name, struct device *device, gfp_t gfp, void *context, |
|
void (*cont)(const struct firmware *fw, void *context)) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline void release_firmware(const struct firmware *fw) |
|
{ |
|
} |
|
|
|
static inline int request_firmware_direct(const struct firmware **fw, |
|
const char *name, |
|
struct device *device) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline int request_firmware_into_buf(const struct firmware **firmware_p, |
|
const char *name, struct device *device, void *buf, size_t size) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
static inline int request_partial_firmware_into_buf |
|
(const struct firmware **firmware_p, |
|
const char *name, |
|
struct device *device, |
|
void *buf, size_t size, size_t offset) |
|
{ |
|
return -EINVAL; |
|
} |
|
|
|
#endif |
|
|
|
int firmware_request_cache(struct device *device, const char *name); |
|
|
|
#endif
|
|
|