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};
  16
  17struct device;
  18
  19struct builtin_fw {
  20        char *name;
  21        void *data;
  22        unsigned long size;
  23};
  24
  25/* We have to play tricks here much like stringify() to get the
  26   __COUNTER__ macro to be expanded as we want it */
  27#define __fw_concat1(x, y) x##y
  28#define __fw_concat(x, y) __fw_concat1(x, y)
  29
  30#define DECLARE_BUILTIN_FIRMWARE(name, blob)                                 \
  31        DECLARE_BUILTIN_FIRMWARE_SIZE(name, &(blob), sizeof(blob))
  32
  33#define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size)                      \
  34        static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \
  35        __used __section(.builtin_fw) = { name, blob, size }
  36
  37#if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
  38int request_firmware(const struct firmware **fw, const char *name,
  39                     struct device *device);
  40int request_firmware_nowait(
  41        struct module *module, int uevent,
  42        const char *name, struct device *device, gfp_t gfp, void *context,
  43        void (*cont)(const struct firmware *fw, void *context));
  44
  45void release_firmware(const struct firmware *fw);
  46#else
  47static inline int request_firmware(const struct firmware **fw,
  48                                   const char *name,
  49                                   struct device *device)
  50{
  51        return -EINVAL;
  52}
  53static inline int request_firmware_nowait(
  54        struct module *module, int uevent,
  55        const char *name, struct device *device, gfp_t gfp, void *context,
  56        void (*cont)(const struct firmware *fw, void *context))
  57{
  58        return -EINVAL;
  59}
  60
  61static inline void release_firmware(const struct firmware *fw)
  62{
  63}
  64#endif
  65
  66#endif
  67
lxr.linux.no kindly hosted by Redpill Linpro AS, provider of Linux consulting and operations services since 1995.