4 #define FW_FLAG_LE 0x01 /* little endian? convert */
5 #define FW_FLAG_V4 0x02 /* b43 vs. b43legacy */
6 #define FW_FLAG_UNSUPPORTED 0x04 /* not supported/working */
8 #define fwcutter_stringify_1(x) #x
9 #define fwcutter_stringify(x) fwcutter_stringify_1(x)
10 #define FWCUTTER_VERSION fwcutter_stringify(FWCUTTER_VERSION_)
13 #define ARRAY_SIZE(array) (sizeof(array) / sizeof((array)[0]))
15 typedef uint16_t be16_t; /* Big-endian 16bit */
16 typedef uint32_t be32_t; /* Big-endian 32bit */
18 typedef uint32_t le32_t; /* Little-endian 32bit */
20 #if defined(__DragonFly__) || defined(__FreeBSD__)
21 #define bswap_16 bswap16
22 #define bswap_32 bswap32
23 #elif defined(__APPLE__)
24 #define bswap_16 OSSwapInt16
25 #define bswap_32 OSSwapInt32
33 FWCM_EXTRACT_B43 = 0, /* default */
36 FWCM_EXTRACT_BRCMSMAC,
41 const char *target_dir;
42 enum fwcutter_mode mode;
48 uint16_t op1, op2, op3;
51 /* The IV how it's done in the binary driver files. */
55 } __attribute__((__packed__));
58 EXT_UNDEFINED, /* error catcher */
59 EXT_UCODE_1, /* rev <= 4 ucode */
60 EXT_UCODE_2, /* rev 5..14 ucode */
61 EXT_UCODE_3, /* rev >= 15 ucode */
62 EXT_PCM, /* "pcm" values */
63 EXT_IV, /* initial values */
68 const uint32_t offset;
69 const uint32_t length;
70 const enum extract_type type;
73 #define EXTRACT_LIST_END { .name = NULL, }
77 const char *ucode_version;
79 const struct extract *extract;
83 /* The header that's put in to every .fw file */
85 /* Type of the firmware data */
87 /* Version number of the firmware data format */
90 /* Size of the data. For ucode and PCM this is in bytes.
91 * For IV this is in number-of-ivs. */
93 } __attribute__((__packed__));
95 #define FW_TYPE_UCODE 'u'
96 #define FW_TYPE_PCM 'p'
97 #define FW_TYPE_IV 'i'
99 #define FW_HDR_VER 0x01
101 /* The IV in the .fw file */
107 } data __attribute__((__packed__));
108 } __attribute__((__packed__));
110 #define FW_IV_OFFSET_MASK 0x7FFF
111 #define FW_IV_32BIT 0x8000
113 /* header format for brcmsmac firmware */
114 struct firmware_hdr {
120 /* numbers of firmware types for brcmsmac firmware */
121 enum firmware_brcmsmac {
122 D11UCODE_NAMETAG_START = 0,
132 D11UCODE_OVERSIGHT16_MIMO,
133 D11UCODE_OVERSIGHT16_MIMOSZ,
134 D11UCODE_OVERSIGHT24_LCN,
135 D11UCODE_OVERSIGHT24_LCNSZ,
136 D11UCODE_OVERSIGHT_BOMMAJOR,
137 D11UCODE_OVERSIGHT_BOMMINOR
140 #endif /* _FWCUTTER_H_ */