diff options
| author | Matt Jacob <mjacob@FreeBSD.org> | 2006-07-09 17:50:20 +0000 |
|---|---|---|
| committer | Matt Jacob <mjacob@FreeBSD.org> | 2006-07-09 17:50:20 +0000 |
| commit | 9a5af41076070ffd3bd3cfd053cbed3653bb63e5 (patch) | |
| tree | 02927e03d3704d09891594870139269cd8f3c287 /sys/dev/isp/isp_sbus.c | |
| parent | 626b06c711c18ffa86fb92a5a966fb963a55840f (diff) | |
Notes
Diffstat (limited to 'sys/dev/isp/isp_sbus.c')
| -rw-r--r-- | sys/dev/isp/isp_sbus.c | 24 |
1 files changed, 22 insertions, 2 deletions
diff --git a/sys/dev/isp/isp_sbus.c b/sys/dev/isp/isp_sbus.c index dc05871f4fcc6..2addae246da7b 100644 --- a/sys/dev/isp/isp_sbus.c +++ b/sys/dev/isp/isp_sbus.c @@ -32,6 +32,10 @@ __FBSDID("$FreeBSD$"); #include <sys/param.h> #include <sys/systm.h> +#if __FreeBSD_version >= 700000 +#include <sys/linker.h> +#include <sys/firmware.h> +#endif #include <sys/bus.h> #include <sys/kernel.h> #include <sys/module.h> @@ -92,7 +96,6 @@ struct isp_sbussoftc { struct resource * sbus_ires; }; -extern ispfwfunc *isp_get_firmware_p; static device_method_t isp_sbus_methods[] = { /* Device interface */ @@ -107,6 +110,12 @@ static driver_t isp_sbus_driver = { }; static devclass_t isp_devclass; DRIVER_MODULE(isp, sbus, isp_sbus_driver, isp_devclass, 0, 0); +#if __FreeBSD_version >= 700000 +MODULE_DEPEND(isp, firmware, 1, 1, 1); +#else +typedef void ispfwfunc(int, int, int, uint16_t **); +extern ispfwfunc *isp_get_firmware_p; +#endif static int isp_sbus_probe(device_t dev) @@ -249,13 +258,24 @@ isp_sbus_attach(device_t dev) isp->isp_confopts |= ISP_CFG_NONVRAM; +#if __FreeBSD_version >= 700000 + isp->isp_osinfo.fw = firmware_get("isp_1000"); + if (isp->isp_osinfo.fw) { + union { + const void *cp; + uint16_t *sp; + } stupid; + stupid.cp = isp->isp_osinfo.fw->data; + isp->isp_mdvec->dv_ispfw = stupid.sp; + } +#else /* * Try and find firmware for this device. */ - if (isp_get_firmware_p) { (*isp_get_firmware_p)(0, 0, 0x1000, &sbs->sbus_mdvec.dv_ispfw); } +#endif iqd = 0; sbs->sbus_ires = bus_alloc_resource_any(dev, SYS_RES_IRQ, &iqd, |
