1/*
2 * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
3 */
4#include <sys/cdefs.h>
5__FBSDID("$FreeBSD$");
6#include <sys/param.h>
7#include <sys/errno.h>
8#include <sys/kernel.h>
9#include <sys/module.h>
10#include <sys/linker.h>
11#include <sys/firmware.h>
12#include <sys/systm.h>
13#include <cxgb_t3fw.h>
14#include <t3b_protocol_sram.h>
15#include <t3b_tp_eeprom.h>
16#include <t3c_protocol_sram.h>
17#include <t3c_tp_eeprom.h>
18
19static int
20cxgb_t3fw_modevent(module_t mod, int type, void *unused)
21{
22	const struct firmware *fp, *parent;
23	int error;
24	switch (type) {
25	case MOD_LOAD:
26
27		fp = firmware_register("cxgb_t3fw", t3fw,
28				       (size_t)t3fw_length,
29				       0, NULL);
30		if (fp == NULL)
31			goto fail_0;
32		parent = fp;
33		return (0);
34	fail_0:
35		return (ENXIO);
36	case MOD_UNLOAD:
37		error = firmware_unregister("cxgb_t3fw");
38		return (error);
39	}
40	return (EINVAL);
41}
42
43static moduledata_t cxgb_t3fw_mod = {
44        "cxgb_t3fw",
45        cxgb_t3fw_modevent,
46        0
47};
48DECLARE_MODULE(cxgb_t3fw, cxgb_t3fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
49MODULE_VERSION(cxgb_t3fw, 1);
50MODULE_DEPEND(cxgb_t3fw, firmware, 1, 1, 1);
51
52static int
53cxgb_t3b_protocol_sram_modevent(module_t mod, int type, void *unused)
54{
55	const struct firmware *fp, *parent;
56	int error;
57	switch (type) {
58	case MOD_LOAD:
59
60		fp = firmware_register("cxgb_t3b_protocol_sram", t3b_protocol_sram,
61				       (size_t)t3b_protocol_sram_length,
62				       0, NULL);
63		if (fp == NULL)
64			goto fail_0;
65		parent = fp;
66		return (0);
67	fail_0:
68		return (ENXIO);
69	case MOD_UNLOAD:
70		error = firmware_unregister("cxgb_t3b_protocol_sram");
71		return (error);
72	}
73	return (EINVAL);
74}
75
76static moduledata_t cxgb_t3b_protocol_sram_mod = {
77        "cxgb_t3b_protocol_sram",
78        cxgb_t3b_protocol_sram_modevent,
79        0
80};
81DECLARE_MODULE(cxgb_t3b_protocol_sram, cxgb_t3b_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
82MODULE_VERSION(cxgb_t3b_protocol_sram, 1);
83MODULE_DEPEND(cxgb_t3b_protocol_sram, firmware, 1, 1, 1);
84
85static int
86cxgb_t3b_tp_eeprom_modevent(module_t mod, int type, void *unused)
87{
88	const struct firmware *fp, *parent;
89	int error;
90	switch (type) {
91	case MOD_LOAD:
92
93		fp = firmware_register("cxgb_t3b_tp_eeprom", t3b_tp_eeprom,
94				       (size_t)t3b_tp_eeprom_length,
95				       0, NULL);
96		if (fp == NULL)
97			goto fail_0;
98		parent = fp;
99		return (0);
100	fail_0:
101		return (ENXIO);
102	case MOD_UNLOAD:
103		error = firmware_unregister("cxgb_t3b_tp_eeprom");
104		return (error);
105	}
106	return (EINVAL);
107}
108
109static moduledata_t cxgb_t3b_tp_eeprom_mod = {
110        "cxgb_t3b_tp_eeprom",
111        cxgb_t3b_tp_eeprom_modevent,
112        0
113};
114DECLARE_MODULE(cxgb_t3b_tp_eeprom, cxgb_t3b_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
115MODULE_VERSION(cxgb_t3b_tp_eeprom, 1);
116MODULE_DEPEND(cxgb_t3b_tp_eeprom, firmware, 1, 1, 1);
117
118static int
119cxgb_t3c_protocol_sram_modevent(module_t mod, int type, void *unused)
120{
121	const struct firmware *fp, *parent;
122	int error;
123	switch (type) {
124	case MOD_LOAD:
125
126		fp = firmware_register("cxgb_t3c_protocol_sram", t3c_protocol_sram,
127				       (size_t)t3c_protocol_sram_length,
128				       0, NULL);
129		if (fp == NULL)
130			goto fail_0;
131		parent = fp;
132		return (0);
133	fail_0:
134		return (ENXIO);
135	case MOD_UNLOAD:
136		error = firmware_unregister("cxgb_t3c_protocol_sram");
137		return (error);
138	}
139	return (EINVAL);
140}
141
142static moduledata_t cxgb_t3c_protocol_sram_mod = {
143        "cxgb_t3c_protocol_sram",
144        cxgb_t3c_protocol_sram_modevent,
145        0
146};
147DECLARE_MODULE(cxgb_t3c_protocol_sram, cxgb_t3c_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
148MODULE_VERSION(cxgb_t3c_protocol_sram, 1);
149MODULE_DEPEND(cxgb_t3c_protocol_sram, firmware, 1, 1, 1);
150
151static int
152cxgb_t3c_tp_eeprom_modevent(module_t mod, int type, void *unused)
153{
154	const struct firmware *fp, *parent;
155	int error;
156	switch (type) {
157	case MOD_LOAD:
158
159		fp = firmware_register("cxgb_t3c_tp_eeprom", t3c_tp_eeprom,
160				       (size_t)t3c_tp_eeprom_length,
161				       0, NULL);
162		if (fp == NULL)
163			goto fail_0;
164		parent = fp;
165		return (0);
166	fail_0:
167		return (ENXIO);
168	case MOD_UNLOAD:
169		error = firmware_unregister("cxgb_t3c_tp_eeprom");
170		return (error);
171	}
172	return (EINVAL);
173}
174
175static moduledata_t cxgb_t3c_tp_eeprom_mod = {
176        "cxgb_t3c_tp_eeprom",
177        cxgb_t3c_tp_eeprom_modevent,
178        0
179};
180DECLARE_MODULE(cxgb_t3c_tp_eeprom, cxgb_t3c_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
181MODULE_VERSION(cxgb_t3c_tp_eeprom, 1);
182MODULE_DEPEND(cxgb_t3c_tp_eeprom, firmware, 1, 1, 1);
183