1171500Sgallatin/*
2171500Sgallatin * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
3171500Sgallatin */
4171500Sgallatin#include <sys/cdefs.h>
5171500Sgallatin__FBSDID("$FreeBSD$");
6171500Sgallatin#include <sys/param.h>
7171500Sgallatin#include <sys/errno.h>
8171500Sgallatin#include <sys/kernel.h>
9171500Sgallatin#include <sys/module.h>
10171500Sgallatin#include <sys/linker.h>
11171500Sgallatin#include <sys/firmware.h>
12171500Sgallatin#include <sys/systm.h>
13171500Sgallatin#include <dev/mxge/eth_z8e.h>
14171500Sgallatin
15171500Sgallatinstatic int
16171500Sgallatinmxge_eth_z8e_fw_modevent(module_t mod, int type, void *unused)
17171500Sgallatin{
18171500Sgallatin	const struct firmware *fp, *parent;
19171500Sgallatin	int error;
20171500Sgallatin	switch (type) {
21171500Sgallatin	case MOD_LOAD:
22171500Sgallatin
23171500Sgallatin		fp = firmware_register("mxge_eth_z8e", eth_z8e,
24171500Sgallatin				       (size_t)eth_z8e_length,
25171500Sgallatin				       eth_z8e_uncompressed_length, NULL);
26171500Sgallatin		if (fp == NULL)
27171500Sgallatin			goto fail_0;
28171500Sgallatin		parent = fp;
29171500Sgallatin		return (0);
30171500Sgallatin	fail_0:
31171500Sgallatin		return (ENXIO);
32171500Sgallatin	case MOD_UNLOAD:
33171500Sgallatin		error = firmware_unregister("mxge_eth_z8e");
34171500Sgallatin		return (error);
35171500Sgallatin	}
36171500Sgallatin	return (EINVAL);
37171500Sgallatin}
38171500Sgallatin
39171500Sgallatinstatic moduledata_t mxge_eth_z8e_fw_mod = {
40171500Sgallatin        "mxge_eth_z8e_fw",
41171500Sgallatin        mxge_eth_z8e_fw_modevent,
42171500Sgallatin        0
43171500Sgallatin};
44171500SgallatinDECLARE_MODULE(mxge_eth_z8e_fw, mxge_eth_z8e_fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
45171500SgallatinMODULE_VERSION(mxge_eth_z8e_fw, 1);
46171500SgallatinMODULE_DEPEND(mxge_eth_z8e_fw, firmware, 1, 1, 1);
47171500Sgallatin
48