1176572Skmacy/*
2176572Skmacy * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
3176572Skmacy */
4176572Skmacy#include <sys/cdefs.h>
5176572Skmacy__FBSDID("$FreeBSD$");
6176572Skmacy#include <sys/param.h>
7176572Skmacy#include <sys/errno.h>
8176572Skmacy#include <sys/kernel.h>
9176572Skmacy#include <sys/module.h>
10176572Skmacy#include <sys/linker.h>
11176572Skmacy#include <sys/firmware.h>
12176572Skmacy#include <sys/systm.h>
13183292Skmacy#include <cxgb_t3fw.h>
14183292Skmacy#include <t3b_protocol_sram.h>
15183292Skmacy#include <t3b_tp_eeprom.h>
16189643Sgnn#include <t3c_protocol_sram.h>
17189643Sgnn#include <t3c_tp_eeprom.h>
18176572Skmacy
19176572Skmacystatic int
20176572Skmacycxgb_t3fw_modevent(module_t mod, int type, void *unused)
21176572Skmacy{
22176572Skmacy	const struct firmware *fp, *parent;
23176572Skmacy	int error;
24176572Skmacy	switch (type) {
25176572Skmacy	case MOD_LOAD:
26176572Skmacy
27176572Skmacy		fp = firmware_register("cxgb_t3fw", t3fw,
28176572Skmacy				       (size_t)t3fw_length,
29176572Skmacy				       0, NULL);
30176572Skmacy		if (fp == NULL)
31176572Skmacy			goto fail_0;
32176572Skmacy		parent = fp;
33176572Skmacy		return (0);
34176572Skmacy	fail_0:
35176572Skmacy		return (ENXIO);
36176572Skmacy	case MOD_UNLOAD:
37176572Skmacy		error = firmware_unregister("cxgb_t3fw");
38176572Skmacy		return (error);
39176572Skmacy	}
40176572Skmacy	return (EINVAL);
41176572Skmacy}
42176572Skmacy
43176572Skmacystatic moduledata_t cxgb_t3fw_mod = {
44176572Skmacy        "cxgb_t3fw",
45176572Skmacy        cxgb_t3fw_modevent,
46241394Skevlo        0
47176572Skmacy};
48176572SkmacyDECLARE_MODULE(cxgb_t3fw, cxgb_t3fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
49176572SkmacyMODULE_VERSION(cxgb_t3fw, 1);
50176572SkmacyMODULE_DEPEND(cxgb_t3fw, firmware, 1, 1, 1);
51176572Skmacy
52176613Skmacystatic int
53176613Skmacycxgb_t3b_protocol_sram_modevent(module_t mod, int type, void *unused)
54176613Skmacy{
55176613Skmacy	const struct firmware *fp, *parent;
56176613Skmacy	int error;
57176613Skmacy	switch (type) {
58176613Skmacy	case MOD_LOAD:
59176613Skmacy
60176613Skmacy		fp = firmware_register("cxgb_t3b_protocol_sram", t3b_protocol_sram,
61176613Skmacy				       (size_t)t3b_protocol_sram_length,
62176613Skmacy				       0, NULL);
63176613Skmacy		if (fp == NULL)
64176613Skmacy			goto fail_0;
65176613Skmacy		parent = fp;
66176613Skmacy		return (0);
67176613Skmacy	fail_0:
68176613Skmacy		return (ENXIO);
69176613Skmacy	case MOD_UNLOAD:
70176613Skmacy		error = firmware_unregister("cxgb_t3b_protocol_sram");
71176613Skmacy		return (error);
72176613Skmacy	}
73176613Skmacy	return (EINVAL);
74176613Skmacy}
75176613Skmacy
76176613Skmacystatic moduledata_t cxgb_t3b_protocol_sram_mod = {
77176613Skmacy        "cxgb_t3b_protocol_sram",
78176613Skmacy        cxgb_t3b_protocol_sram_modevent,
79241394Skevlo        0
80176613Skmacy};
81176613SkmacyDECLARE_MODULE(cxgb_t3b_protocol_sram, cxgb_t3b_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
82176613SkmacyMODULE_VERSION(cxgb_t3b_protocol_sram, 1);
83176613SkmacyMODULE_DEPEND(cxgb_t3b_protocol_sram, firmware, 1, 1, 1);
84176613Skmacy
85176613Skmacystatic int
86176613Skmacycxgb_t3b_tp_eeprom_modevent(module_t mod, int type, void *unused)
87176613Skmacy{
88176613Skmacy	const struct firmware *fp, *parent;
89176613Skmacy	int error;
90176613Skmacy	switch (type) {
91176613Skmacy	case MOD_LOAD:
92176613Skmacy
93176613Skmacy		fp = firmware_register("cxgb_t3b_tp_eeprom", t3b_tp_eeprom,
94176613Skmacy				       (size_t)t3b_tp_eeprom_length,
95176613Skmacy				       0, NULL);
96176613Skmacy		if (fp == NULL)
97176613Skmacy			goto fail_0;
98176613Skmacy		parent = fp;
99176613Skmacy		return (0);
100176613Skmacy	fail_0:
101176613Skmacy		return (ENXIO);
102176613Skmacy	case MOD_UNLOAD:
103176613Skmacy		error = firmware_unregister("cxgb_t3b_tp_eeprom");
104176613Skmacy		return (error);
105176613Skmacy	}
106176613Skmacy	return (EINVAL);
107176613Skmacy}
108176613Skmacy
109176613Skmacystatic moduledata_t cxgb_t3b_tp_eeprom_mod = {
110176613Skmacy        "cxgb_t3b_tp_eeprom",
111176613Skmacy        cxgb_t3b_tp_eeprom_modevent,
112241394Skevlo        0
113176613Skmacy};
114176613SkmacyDECLARE_MODULE(cxgb_t3b_tp_eeprom, cxgb_t3b_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
115176613SkmacyMODULE_VERSION(cxgb_t3b_tp_eeprom, 1);
116176613SkmacyMODULE_DEPEND(cxgb_t3b_tp_eeprom, firmware, 1, 1, 1);
117189643Sgnn
118189643Sgnnstatic int
119189643Sgnncxgb_t3c_protocol_sram_modevent(module_t mod, int type, void *unused)
120189643Sgnn{
121189643Sgnn	const struct firmware *fp, *parent;
122189643Sgnn	int error;
123189643Sgnn	switch (type) {
124189643Sgnn	case MOD_LOAD:
125189643Sgnn
126189643Sgnn		fp = firmware_register("cxgb_t3c_protocol_sram", t3c_protocol_sram,
127189643Sgnn				       (size_t)t3c_protocol_sram_length,
128189643Sgnn				       0, NULL);
129189643Sgnn		if (fp == NULL)
130189643Sgnn			goto fail_0;
131189643Sgnn		parent = fp;
132189643Sgnn		return (0);
133189643Sgnn	fail_0:
134189643Sgnn		return (ENXIO);
135189643Sgnn	case MOD_UNLOAD:
136189643Sgnn		error = firmware_unregister("cxgb_t3c_protocol_sram");
137189643Sgnn		return (error);
138189643Sgnn	}
139189643Sgnn	return (EINVAL);
140189643Sgnn}
141189643Sgnn
142189643Sgnnstatic moduledata_t cxgb_t3c_protocol_sram_mod = {
143189643Sgnn        "cxgb_t3c_protocol_sram",
144189643Sgnn        cxgb_t3c_protocol_sram_modevent,
145241394Skevlo        0
146189643Sgnn};
147189643SgnnDECLARE_MODULE(cxgb_t3c_protocol_sram, cxgb_t3c_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
148189643SgnnMODULE_VERSION(cxgb_t3c_protocol_sram, 1);
149189643SgnnMODULE_DEPEND(cxgb_t3c_protocol_sram, firmware, 1, 1, 1);
150189643Sgnn
151189643Sgnnstatic int
152189643Sgnncxgb_t3c_tp_eeprom_modevent(module_t mod, int type, void *unused)
153189643Sgnn{
154189643Sgnn	const struct firmware *fp, *parent;
155189643Sgnn	int error;
156189643Sgnn	switch (type) {
157189643Sgnn	case MOD_LOAD:
158189643Sgnn
159189643Sgnn		fp = firmware_register("cxgb_t3c_tp_eeprom", t3c_tp_eeprom,
160189643Sgnn				       (size_t)t3c_tp_eeprom_length,
161189643Sgnn				       0, NULL);
162189643Sgnn		if (fp == NULL)
163189643Sgnn			goto fail_0;
164189643Sgnn		parent = fp;
165189643Sgnn		return (0);
166189643Sgnn	fail_0:
167189643Sgnn		return (ENXIO);
168189643Sgnn	case MOD_UNLOAD:
169189643Sgnn		error = firmware_unregister("cxgb_t3c_tp_eeprom");
170189643Sgnn		return (error);
171189643Sgnn	}
172189643Sgnn	return (EINVAL);
173189643Sgnn}
174189643Sgnn
175189643Sgnnstatic moduledata_t cxgb_t3c_tp_eeprom_mod = {
176189643Sgnn        "cxgb_t3c_tp_eeprom",
177189643Sgnn        cxgb_t3c_tp_eeprom_modevent,
178241394Skevlo        0
179189643Sgnn};
180189643SgnnDECLARE_MODULE(cxgb_t3c_tp_eeprom, cxgb_t3c_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
181189643SgnnMODULE_VERSION(cxgb_t3c_tp_eeprom, 1);
182189643SgnnMODULE_DEPEND(cxgb_t3c_tp_eeprom, firmware, 1, 1, 1);
183