1175365Sgallatin/*
2175365Sgallatin * from: FreeBSD: src/sys/tools/fw_stub.awk,v 1.6 2007/03/02 11:42:53 flz
3175365Sgallatin */
4175365Sgallatin#include <sys/cdefs.h>
5175365Sgallatin__FBSDID("$FreeBSD$");
6175365Sgallatin#include <sys/param.h>
7175365Sgallatin#include <sys/errno.h>
8175365Sgallatin#include <sys/kernel.h>
9175365Sgallatin#include <sys/module.h>
10175365Sgallatin#include <sys/linker.h>
11175365Sgallatin#include <sys/firmware.h>
12175365Sgallatin#include <sys/systm.h>
13175365Sgallatin#include <dev/mxge/rss_ethp_z8e.h>
14175365Sgallatin
15175365Sgallatinstatic int
16175365Sgallatinmxge_rss_ethp_z8e_fw_modevent(module_t mod, int type, void *unused)
17175365Sgallatin{
18175365Sgallatin	const struct firmware *fp, *parent;
19175365Sgallatin	int error;
20175365Sgallatin	switch (type) {
21175365Sgallatin	case MOD_LOAD:
22175365Sgallatin
23175365Sgallatin		fp = firmware_register("mxge_rss_ethp_z8e", rss_ethp_z8e,
24175365Sgallatin				       (size_t)rss_ethp_z8e_length,
25175365Sgallatin				       rss_ethp_z8e_uncompressed_length, NULL);
26175365Sgallatin		if (fp == NULL)
27175365Sgallatin			goto fail_0;
28175365Sgallatin		parent = fp;
29175365Sgallatin		return (0);
30175365Sgallatin	fail_0:
31175365Sgallatin		return (ENXIO);
32175365Sgallatin	case MOD_UNLOAD:
33175365Sgallatin		error = firmware_unregister("mxge_rss_ethp_z8e");
34175365Sgallatin		return (error);
35175365Sgallatin	}
36175365Sgallatin	return (EINVAL);
37175365Sgallatin}
38175365Sgallatin
39175365Sgallatinstatic moduledata_t mxge_rss_ethp_z8e_fw_mod = {
40175365Sgallatin        "mxge_rss_ethp_z8e_fw",
41175365Sgallatin        mxge_rss_ethp_z8e_fw_modevent,
42175365Sgallatin        0
43175365Sgallatin};
44175365SgallatinDECLARE_MODULE(mxge_rss_ethp_z8e_fw, mxge_rss_ethp_z8e_fw_mod, SI_SUB_DRIVERS, SI_ORDER_FIRST);
45175365SgallatinMODULE_VERSION(mxge_rss_ethp_z8e_fw, 1);
46175365SgallatinMODULE_DEPEND(mxge_rss_ethp_z8e_fw, firmware, 1, 1, 1);
47175365Sgallatin
48