On sparc64 obtain the initiator ID from the Open Firmware device tree

in order to match what the PROM built-in driver uses.

Approved by:	mjacob
This commit is contained in:
Marius Strobl 2010-05-03 18:39:40 +00:00
parent 59879e52c1
commit 17bc427d0b
2 changed files with 12 additions and 5 deletions

View File

@ -46,6 +46,11 @@ __FBSDID("$FreeBSD$");
#include <sys/malloc.h>
#include <sys/uio.h>
#ifdef __sparc64__
#include <dev/ofw/openfirm.h>
#include <machine/ofw_machdep.h>
#endif
#include <dev/isp/isp_freebsd.h>
static uint32_t isp_pci_rd_reg(ispsoftc_t *, int);
@ -517,7 +522,11 @@ isp_get_specific_options(device_t dev, int chan, ispsoftc_t *isp)
if (IS_FC(isp)) {
ISP_FC_PC(isp, chan)->default_id = 109 - chan;
} else {
#ifdef __sparc64__
ISP_SPI_PC(isp, chan)->iid = OF_getscsinitid(dev);
#else
ISP_SPI_PC(isp, chan)->iid = 7;
#endif
}
} else {
if (IS_FC(isp)) {

View File

@ -41,8 +41,10 @@ __FBSDID("$FreeBSD$");
#include <sys/resource.h>
#include <dev/ofw/ofw_bus.h>
#include <dev/ofw/openfirm.h>
#include <machine/bus.h>
#include <machine/ofw_machdep.h>
#include <machine/resource.h>
#include <sys/rman.h>
#include <sparc64/sbus/sbusvar.h>
@ -264,11 +266,7 @@ isp_sbus_attach(device_t dev)
isp->isp_confopts |= ISP_CFG_OWNLOOPID;
}
if (default_id == -1) {
/*
* XXX: should be a way to get properties w/o having
* XXX: to call OF_xxx functions
*/
default_id = 7;
default_id = OF_getscsinitid(dev);
}
ISP_SPI_PC(isp, 0)->iid = default_id;