Subversion Repositories Kolibri OS

Rev

Rev 1221 | Go to most recent revision | Blame | Last modification | View Log | Download | RSS feed

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