root/include/linux/firmware.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


DEFINITIONS

This source file includes following definitions.
  1. request_firmware
  2. firmware_request_nowarn
  3. request_firmware_nowait
  4. release_firmware
  5. request_firmware_direct
  6. request_firmware_into_buf

   1 /* SPDX-License-Identifier: GPL-2.0 */
   2 #ifndef _LINUX_FIRMWARE_H
   3 #define _LINUX_FIRMWARE_H
   4 
   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 
  12 struct firmware {
  13         size_t size;
  14         const u8 *data;
  15         struct page **pages;
  16 
  17         /* firmware loader private fields */
  18         void *priv;
  19 };
  20 
  21 struct module;
  22 struct device;
  23 
  24 struct builtin_fw {
  25         char *name;
  26         void *data;
  27         unsigned long size;
  28 };
  29 
  30 /* We have to play tricks here much like stringify() to get the
  31    __COUNTER__ macro to be expanded as we want it */
  32 #define __fw_concat1(x, y) x##y
  33 #define __fw_concat(x, y) __fw_concat1(x, y)
  34 
  35 #define DECLARE_BUILTIN_FIRMWARE(name, blob)                                 \
  36         DECLARE_BUILTIN_FIRMWARE_SIZE(name, &(blob), sizeof(blob))
  37 
  38 #define DECLARE_BUILTIN_FIRMWARE_SIZE(name, blob, size)                      \
  39         static const struct builtin_fw __fw_concat(__builtin_fw,__COUNTER__) \
  40         __used __section(.builtin_fw) = { name, blob, size }
  41 
  42 #if defined(CONFIG_FW_LOADER) || (defined(CONFIG_FW_LOADER_MODULE) && defined(MODULE))
  43 int request_firmware(const struct firmware **fw, const char *name,
  44                      struct device *device);
  45 int firmware_request_nowarn(const struct firmware **fw, const char *name,
  46                             struct device *device);
  47 int request_firmware_nowait(
  48         struct module *module, bool uevent,
  49         const char *name, struct device *device, gfp_t gfp, void *context,
  50         void (*cont)(const struct firmware *fw, void *context));
  51 int request_firmware_direct(const struct firmware **fw, const char *name,
  52                             struct device *device);
  53 int request_firmware_into_buf(const struct firmware **firmware_p,
  54         const char *name, struct device *device, void *buf, size_t size);
  55 
  56 void release_firmware(const struct firmware *fw);
  57 #else
  58 static inline int request_firmware(const struct firmware **fw,
  59                                    const char *name,
  60                                    struct device *device)
  61 {
  62         return -EINVAL;
  63 }
  64 
  65 static inline int firmware_request_nowarn(const struct firmware **fw,
  66                                           const char *name,
  67                                           struct device *device)
  68 {
  69         return -EINVAL;
  70 }
  71 
  72 static inline int request_firmware_nowait(
  73         struct module *module, bool uevent,
  74         const char *name, struct device *device, gfp_t gfp, void *context,
  75         void (*cont)(const struct firmware *fw, void *context))
  76 {
  77         return -EINVAL;
  78 }
  79 
  80 static inline void release_firmware(const struct firmware *fw)
  81 {
  82 }
  83 
  84 static inline int request_firmware_direct(const struct firmware **fw,
  85                                           const char *name,
  86                                           struct device *device)
  87 {
  88         return -EINVAL;
  89 }
  90 
  91 static inline int request_firmware_into_buf(const struct firmware **firmware_p,
  92         const char *name, struct device *device, void *buf, size_t size)
  93 {
  94         return -EINVAL;
  95 }
  96 
  97 #endif
  98 
  99 int firmware_request_cache(struct device *device, const char *name);
 100 
 101 #endif

/* [<][>][^][v][top][bottom][index][help] */