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