mxge_eth_z8e.c revision 259065
1273331Sbryanv/*
2273331Sbryanv * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
3273331Sbryanv */
4273331Sbryanv#include <sys/cdefs.h>
5273331Sbryanv__FBSDID("$FreeBSD: releng/10.0/sys/dev/mxge/mxge_eth_z8e.c 241394 2012-10-10 08:36:38Z kevlo $");
6273331Sbryanv#include <sys/param.h>
7273331Sbryanv#include <sys/errno.h>
8273331Sbryanv#include <sys/kernel.h>
9273331Sbryanv#include <sys/module.h>
10273331Sbryanv#include <sys/linker.h>
11273331Sbryanv#include <sys/firmware.h>
12273331Sbryanv#include <sys/systm.h>
13273331Sbryanv#include <dev/mxge/eth_z8e.h>
14273331Sbryanv
15273331Sbryanvstatic int
16273331Sbryanvmxge_eth_z8e_fw_modevent(module_t mod, int type, void *unused)
17273331Sbryanv{
18273331Sbryanv	const struct firmware *fp, *parent;
19273331Sbryanv	int error;
20273331Sbryanv	switch (type) {
21273331Sbryanv	case MOD_LOAD:
22273331Sbryanv
23273331Sbryanv		fp = firmware_register("mxge_eth_z8e", eth_z8e,
24273331Sbryanv				       (size_t)eth_z8e_length,
25273331Sbryanv				       eth_z8e_uncompressed_length, NULL);
26273331Sbryanv		if (fp == NULL)
27273331Sbryanv			goto fail_0;
28273331Sbryanv		parent = fp;
29273331Sbryanv		return (0);
30273331Sbryanv	fail_0:
31273331Sbryanv		return (ENXIO);
32273331Sbryanv	case MOD_UNLOAD:
33273331Sbryanv		error = firmware_unregister("mxge_eth_z8e");
34273331Sbryanv		return (error);
35273331Sbryanv	}
36273331Sbryanv	return (EINVAL);
37273331Sbryanv}
38273331Sbryanv
39273331Sbryanvstatic moduledata_t mxge_eth_z8e_fw_mod = {
40273331Sbryanv        "mxge_eth_z8e_fw",
41273331Sbryanv        mxge_eth_z8e_fw_modevent,
42273331Sbryanv        0
43273331Sbryanv};
44273331SbryanvDECLARE_MODULE(mxge_eth_z8e_fw, mxge_eth_z8e_fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
45273331SbryanvMODULE_VERSION(mxge_eth_z8e_fw, 1);
46273331SbryanvMODULE_DEPEND(mxge_eth_z8e_fw, firmware, 1, 1, 1);
47273331Sbryanv
48273331Sbryanv