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