1404825a7SKip Macy /*
2404825a7SKip Macy * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
3404825a7SKip Macy */
4*fdafd315SWarner Losh
5404825a7SKip Macy #include <sys/param.h>
6404825a7SKip Macy #include <sys/errno.h>
7404825a7SKip Macy #include <sys/kernel.h>
8404825a7SKip Macy #include <sys/module.h>
9404825a7SKip Macy #include <sys/linker.h>
10404825a7SKip Macy #include <sys/firmware.h>
11404825a7SKip Macy #include <sys/systm.h>
1279775f8fSKip Macy #include <cxgb_t3fw.h>
1379775f8fSKip Macy #include <t3b_protocol_sram.h>
1479775f8fSKip Macy #include <t3b_tp_eeprom.h>
15f2d8ff04SGeorge V. Neville-Neil #include <t3c_protocol_sram.h>
16f2d8ff04SGeorge V. Neville-Neil #include <t3c_tp_eeprom.h>
17404825a7SKip Macy
18404825a7SKip Macy static int
cxgb_t3fw_modevent(module_t mod,int type,void * unused)19404825a7SKip Macy cxgb_t3fw_modevent(module_t mod, int type, void *unused)
20404825a7SKip Macy {
216792568fSNavdeep Parhar const struct firmware *fp;
22404825a7SKip Macy int error;
23404825a7SKip Macy switch (type) {
24404825a7SKip Macy case MOD_LOAD:
25404825a7SKip Macy
26404825a7SKip Macy fp = firmware_register("cxgb_t3fw", t3fw,
27404825a7SKip Macy (size_t)t3fw_length,
28404825a7SKip Macy 0, NULL);
29404825a7SKip Macy if (fp == NULL)
30404825a7SKip Macy goto fail_0;
31404825a7SKip Macy return (0);
32404825a7SKip Macy fail_0:
33404825a7SKip Macy return (ENXIO);
34404825a7SKip Macy case MOD_UNLOAD:
35404825a7SKip Macy error = firmware_unregister("cxgb_t3fw");
36404825a7SKip Macy return (error);
37404825a7SKip Macy }
38404825a7SKip Macy return (EINVAL);
39404825a7SKip Macy }
40404825a7SKip Macy
41404825a7SKip Macy static moduledata_t cxgb_t3fw_mod = {
42404825a7SKip Macy "cxgb_t3fw",
43404825a7SKip Macy cxgb_t3fw_modevent,
449823d527SKevin Lo 0
45404825a7SKip Macy };
46404825a7SKip Macy DECLARE_MODULE(cxgb_t3fw, cxgb_t3fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
47404825a7SKip Macy MODULE_VERSION(cxgb_t3fw, 1);
48404825a7SKip Macy MODULE_DEPEND(cxgb_t3fw, firmware, 1, 1, 1);
49404825a7SKip Macy
5064a37133SKip Macy static int
cxgb_t3b_protocol_sram_modevent(module_t mod,int type,void * unused)5164a37133SKip Macy cxgb_t3b_protocol_sram_modevent(module_t mod, int type, void *unused)
5264a37133SKip Macy {
536792568fSNavdeep Parhar const struct firmware *fp;
5464a37133SKip Macy int error;
5564a37133SKip Macy switch (type) {
5664a37133SKip Macy case MOD_LOAD:
5764a37133SKip Macy
5864a37133SKip Macy fp = firmware_register("cxgb_t3b_protocol_sram", t3b_protocol_sram,
5964a37133SKip Macy (size_t)t3b_protocol_sram_length,
6064a37133SKip Macy 0, NULL);
6164a37133SKip Macy if (fp == NULL)
6264a37133SKip Macy goto fail_0;
6364a37133SKip Macy return (0);
6464a37133SKip Macy fail_0:
6564a37133SKip Macy return (ENXIO);
6664a37133SKip Macy case MOD_UNLOAD:
6764a37133SKip Macy error = firmware_unregister("cxgb_t3b_protocol_sram");
6864a37133SKip Macy return (error);
6964a37133SKip Macy }
7064a37133SKip Macy return (EINVAL);
7164a37133SKip Macy }
7264a37133SKip Macy
7364a37133SKip Macy static moduledata_t cxgb_t3b_protocol_sram_mod = {
7464a37133SKip Macy "cxgb_t3b_protocol_sram",
7564a37133SKip Macy cxgb_t3b_protocol_sram_modevent,
769823d527SKevin Lo 0
7764a37133SKip Macy };
7864a37133SKip Macy DECLARE_MODULE(cxgb_t3b_protocol_sram, cxgb_t3b_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
7964a37133SKip Macy MODULE_VERSION(cxgb_t3b_protocol_sram, 1);
8064a37133SKip Macy MODULE_DEPEND(cxgb_t3b_protocol_sram, firmware, 1, 1, 1);
8164a37133SKip Macy
8264a37133SKip Macy static int
cxgb_t3b_tp_eeprom_modevent(module_t mod,int type,void * unused)8364a37133SKip Macy cxgb_t3b_tp_eeprom_modevent(module_t mod, int type, void *unused)
8464a37133SKip Macy {
856792568fSNavdeep Parhar const struct firmware *fp;
8664a37133SKip Macy int error;
8764a37133SKip Macy switch (type) {
8864a37133SKip Macy case MOD_LOAD:
8964a37133SKip Macy
9064a37133SKip Macy fp = firmware_register("cxgb_t3b_tp_eeprom", t3b_tp_eeprom,
9164a37133SKip Macy (size_t)t3b_tp_eeprom_length,
9264a37133SKip Macy 0, NULL);
9364a37133SKip Macy if (fp == NULL)
9464a37133SKip Macy goto fail_0;
9564a37133SKip Macy return (0);
9664a37133SKip Macy fail_0:
9764a37133SKip Macy return (ENXIO);
9864a37133SKip Macy case MOD_UNLOAD:
9964a37133SKip Macy error = firmware_unregister("cxgb_t3b_tp_eeprom");
10064a37133SKip Macy return (error);
10164a37133SKip Macy }
10264a37133SKip Macy return (EINVAL);
10364a37133SKip Macy }
10464a37133SKip Macy
10564a37133SKip Macy static moduledata_t cxgb_t3b_tp_eeprom_mod = {
10664a37133SKip Macy "cxgb_t3b_tp_eeprom",
10764a37133SKip Macy cxgb_t3b_tp_eeprom_modevent,
1089823d527SKevin Lo 0
10964a37133SKip Macy };
11064a37133SKip Macy DECLARE_MODULE(cxgb_t3b_tp_eeprom, cxgb_t3b_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
11164a37133SKip Macy MODULE_VERSION(cxgb_t3b_tp_eeprom, 1);
11264a37133SKip Macy MODULE_DEPEND(cxgb_t3b_tp_eeprom, firmware, 1, 1, 1);
113f2d8ff04SGeorge V. Neville-Neil
114f2d8ff04SGeorge V. Neville-Neil static int
cxgb_t3c_protocol_sram_modevent(module_t mod,int type,void * unused)115f2d8ff04SGeorge V. Neville-Neil cxgb_t3c_protocol_sram_modevent(module_t mod, int type, void *unused)
116f2d8ff04SGeorge V. Neville-Neil {
1176792568fSNavdeep Parhar const struct firmware *fp;
118f2d8ff04SGeorge V. Neville-Neil int error;
119f2d8ff04SGeorge V. Neville-Neil switch (type) {
120f2d8ff04SGeorge V. Neville-Neil case MOD_LOAD:
121f2d8ff04SGeorge V. Neville-Neil
122f2d8ff04SGeorge V. Neville-Neil fp = firmware_register("cxgb_t3c_protocol_sram", t3c_protocol_sram,
123f2d8ff04SGeorge V. Neville-Neil (size_t)t3c_protocol_sram_length,
124f2d8ff04SGeorge V. Neville-Neil 0, NULL);
125f2d8ff04SGeorge V. Neville-Neil if (fp == NULL)
126f2d8ff04SGeorge V. Neville-Neil goto fail_0;
127f2d8ff04SGeorge V. Neville-Neil return (0);
128f2d8ff04SGeorge V. Neville-Neil fail_0:
129f2d8ff04SGeorge V. Neville-Neil return (ENXIO);
130f2d8ff04SGeorge V. Neville-Neil case MOD_UNLOAD:
131f2d8ff04SGeorge V. Neville-Neil error = firmware_unregister("cxgb_t3c_protocol_sram");
132f2d8ff04SGeorge V. Neville-Neil return (error);
133f2d8ff04SGeorge V. Neville-Neil }
134f2d8ff04SGeorge V. Neville-Neil return (EINVAL);
135f2d8ff04SGeorge V. Neville-Neil }
136f2d8ff04SGeorge V. Neville-Neil
137f2d8ff04SGeorge V. Neville-Neil static moduledata_t cxgb_t3c_protocol_sram_mod = {
138f2d8ff04SGeorge V. Neville-Neil "cxgb_t3c_protocol_sram",
139f2d8ff04SGeorge V. Neville-Neil cxgb_t3c_protocol_sram_modevent,
1409823d527SKevin Lo 0
141f2d8ff04SGeorge V. Neville-Neil };
142f2d8ff04SGeorge V. Neville-Neil DECLARE_MODULE(cxgb_t3c_protocol_sram, cxgb_t3c_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
143f2d8ff04SGeorge V. Neville-Neil MODULE_VERSION(cxgb_t3c_protocol_sram, 1);
144f2d8ff04SGeorge V. Neville-Neil MODULE_DEPEND(cxgb_t3c_protocol_sram, firmware, 1, 1, 1);
145f2d8ff04SGeorge V. Neville-Neil
146f2d8ff04SGeorge V. Neville-Neil static int
cxgb_t3c_tp_eeprom_modevent(module_t mod,int type,void * unused)147f2d8ff04SGeorge V. Neville-Neil cxgb_t3c_tp_eeprom_modevent(module_t mod, int type, void *unused)
148f2d8ff04SGeorge V. Neville-Neil {
1496792568fSNavdeep Parhar const struct firmware *fp;
150f2d8ff04SGeorge V. Neville-Neil int error;
151f2d8ff04SGeorge V. Neville-Neil switch (type) {
152f2d8ff04SGeorge V. Neville-Neil case MOD_LOAD:
153f2d8ff04SGeorge V. Neville-Neil
154f2d8ff04SGeorge V. Neville-Neil fp = firmware_register("cxgb_t3c_tp_eeprom", t3c_tp_eeprom,
155f2d8ff04SGeorge V. Neville-Neil (size_t)t3c_tp_eeprom_length,
156f2d8ff04SGeorge V. Neville-Neil 0, NULL);
157f2d8ff04SGeorge V. Neville-Neil if (fp == NULL)
158f2d8ff04SGeorge V. Neville-Neil goto fail_0;
159f2d8ff04SGeorge V. Neville-Neil return (0);
160f2d8ff04SGeorge V. Neville-Neil fail_0:
161f2d8ff04SGeorge V. Neville-Neil return (ENXIO);
162f2d8ff04SGeorge V. Neville-Neil case MOD_UNLOAD:
163f2d8ff04SGeorge V. Neville-Neil error = firmware_unregister("cxgb_t3c_tp_eeprom");
164f2d8ff04SGeorge V. Neville-Neil return (error);
165f2d8ff04SGeorge V. Neville-Neil }
166f2d8ff04SGeorge V. Neville-Neil return (EINVAL);
167f2d8ff04SGeorge V. Neville-Neil }
168f2d8ff04SGeorge V. Neville-Neil
169f2d8ff04SGeorge V. Neville-Neil static moduledata_t cxgb_t3c_tp_eeprom_mod = {
170f2d8ff04SGeorge V. Neville-Neil "cxgb_t3c_tp_eeprom",
171f2d8ff04SGeorge V. Neville-Neil cxgb_t3c_tp_eeprom_modevent,
1729823d527SKevin Lo 0
173f2d8ff04SGeorge V. Neville-Neil };
174f2d8ff04SGeorge V. Neville-Neil DECLARE_MODULE(cxgb_t3c_tp_eeprom, cxgb_t3c_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
175f2d8ff04SGeorge V. Neville-Neil MODULE_VERSION(cxgb_t3c_tp_eeprom, 1);
176f2d8ff04SGeorge V. Neville-Neil MODULE_DEPEND(cxgb_t3c_tp_eeprom, firmware, 1, 1, 1);
177