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