cxgb_t3fw.c revision 176613
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: head/sys/dev/cxgb/cxgb_t3fw.c 176613 2008-02-26 23:05:05Z kmacy $");
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 <dev/cxgb/cxgb_t3fw.h>
14#include <dev/cxgb/t3b_protocol_sram.h>
15#include <dev/cxgb/t3b_tp_eeprom.h>
16
17static int
18cxgb_t3fw_modevent(module_t mod, int type, void *unused)
19{
20	const struct firmware *fp, *parent;
21	int error;
22	switch (type) {
23	case MOD_LOAD:
24
25		fp = firmware_register("cxgb_t3fw", t3fw,
26				       (size_t)t3fw_length,
27				       0, NULL);
28		if (fp == NULL)
29			goto fail_0;
30		parent = fp;
31		return (0);
32	fail_0:
33		return (ENXIO);
34	case MOD_UNLOAD:
35		error = firmware_unregister("cxgb_t3fw");
36		return (error);
37	}
38	return (EINVAL);
39}
40
41static moduledata_t cxgb_t3fw_mod = {
42        "cxgb_t3fw",
43        cxgb_t3fw_modevent,
44        0
45};
46DECLARE_MODULE(cxgb_t3fw, cxgb_t3fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
47MODULE_VERSION(cxgb_t3fw, 1);
48MODULE_DEPEND(cxgb_t3fw, firmware, 1, 1, 1);
49
50static int
51cxgb_t3b_protocol_sram_modevent(module_t mod, int type, void *unused)
52{
53	const struct firmware *fp, *parent;
54	int error;
55	switch (type) {
56	case MOD_LOAD:
57
58		fp = firmware_register("cxgb_t3b_protocol_sram", t3b_protocol_sram,
59				       (size_t)t3b_protocol_sram_length,
60				       0, NULL);
61		if (fp == NULL)
62			goto fail_0;
63		parent = fp;
64		return (0);
65	fail_0:
66		return (ENXIO);
67	case MOD_UNLOAD:
68		error = firmware_unregister("cxgb_t3b_protocol_sram");
69		return (error);
70	}
71	return (EINVAL);
72}
73
74static moduledata_t cxgb_t3b_protocol_sram_mod = {
75        "cxgb_t3b_protocol_sram",
76        cxgb_t3b_protocol_sram_modevent,
77        0
78};
79DECLARE_MODULE(cxgb_t3b_protocol_sram, cxgb_t3b_protocol_sram_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
80MODULE_VERSION(cxgb_t3b_protocol_sram, 1);
81MODULE_DEPEND(cxgb_t3b_protocol_sram, firmware, 1, 1, 1);
82
83
84static int
85cxgb_t3b_tp_eeprom_modevent(module_t mod, int type, void *unused)
86{
87	const struct firmware *fp, *parent;
88	int error;
89	switch (type) {
90	case MOD_LOAD:
91
92		fp = firmware_register("cxgb_t3b_tp_eeprom", t3b_tp_eeprom,
93				       (size_t)t3b_tp_eeprom_length,
94				       0, NULL);
95		if (fp == NULL)
96			goto fail_0;
97		parent = fp;
98		return (0);
99	fail_0:
100		return (ENXIO);
101	case MOD_UNLOAD:
102		error = firmware_unregister("cxgb_t3b_tp_eeprom");
103		return (error);
104	}
105	return (EINVAL);
106}
107
108static moduledata_t cxgb_t3b_tp_eeprom_mod = {
109        "cxgb_t3b_tp_eeprom",
110        cxgb_t3b_tp_eeprom_modevent,
111        0
112};
113DECLARE_MODULE(cxgb_t3b_tp_eeprom, cxgb_t3b_tp_eeprom_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
114MODULE_VERSION(cxgb_t3b_tp_eeprom, 1);
115MODULE_DEPEND(cxgb_t3b_tp_eeprom, firmware, 1, 1, 1);
116