User`s manual

siop_init()
SBCSCSI/D1 3-5
3
NOTES
The Firmware needs to be initialized only once but may be initialized
many times as long as there are no outstanding command requests to the
Firmware when siop_init() is called. If a user calls the initialization
routine while commands are outstanding to the Firmware, then
unpredictable results will occur. However, a user may call this module
any number of times before calling the command entry module to
reinitialize the firmware.
The siop data area (siopdata), pointed to by siopdatap, is for use by the
Firmware only and cannot be modified at any time by the caller.The value
of siopdatap passed to siop_init() establishes the value of siopdatap
passed on all subsequent calls to the SIOP other than siop_init(). Only
subsequent calls to siop_init() where a new value of siopdatap is passed
can change the current value. Successive calls to siop_init() with the same
siopdatap has no effect on the current value of siopdatap. The user is
responsible for clearing the siopdata area before calling siop_init() and
must ensure that the siopdata area is cache coherent.
If initialization is called after a call to the command entry point
(siop_cmd()), then all synchronous data transfer information and tagged
command queuing information will be lost. Also refer to the section in
Chapter 5 on Use of the Firmware After Use by the SBC ROM Debugger for
more information.
The user may change the SIOP interrupt level and SIOP SCSI address after
initialization through a CONFIG command to siop_cmd().
The siop data area, pointed to by siopdatap, is for use by the firmware
only and cannot be modified at any time by the caller.
The size of the siop data area pointed to by siopdatap must be of at least
sizeof(struct siopdata) bytes, and must be aligned to a four-byte
boundary.
When using the Firmware Debug Log, the user must call the debug trace
initialization routine sdt_tinit() prior to initializing the firmware.