xref: /freebsd/sys/dev/cxgb/cxgb_t3fw.c (revision fdafd315ad0d0f28a11b9fb4476a9ab059c62b92)
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