int scsi_hba_attach_setup(dev_info_t *dip, ddi_dma_attr_t *hba_dma_attr, scsi_hba_tran_t *hba_tran, int hba_flags);
int scsi_hba_attach(dev_info_t *dip, ddi_dma_lim_t *hba_lim, scsi_hba_tran_t *hba_tran, int hba_flags, void *hba_options);
int scsi_hba_detach(dev_info_t *dip);
Solaris architecture specific (Solaris DDI).
scsi_hba_attach_setup() is the recommended interface over scsi_hba_attach().
scsi_hba_attach() and scsi_hba_attach_setup() use the dev_bus_ops field in the dev_ops(9S) structure. The HBA driver should initialize this field to NULL before calling scsi_hba_attach() or scsi_hba_attach_setup().
If SCSI_HBA_TRAN_CLONE is requested in hba_flags, the hba_tran structure will be cloned once for each target attached to the HBA . The cloning of the structure will occur before the tran_tgt_init(9E) entry point is called to initialize a target. At all subsequent HBA entry points, including tran_tgt_init(9E) , the scsi_hba_tran_t structure passed as an argument or found in a scsi_address structure will be the ’cloned’ scsi_hba_tran_t structure, thus allowing the HBA to use the tran_tgt_private field in the scsi_hba_tran_t structure to point to per-target data. The HBA must take care to free only the same scsi_hba_tran_t structure it allocated when detaching; all ’cloned’ scsi_hba_tran_t structures allocated by the system will be freed by the system.
scsi_hba_attach()
and scsi_hba_attach_setup() attach a number of integer-valued properties
to dip, unless properties of the same name are already attached to the
node. An HBA
driver should retrieve these configuration parameters via
ddi_prop_get_int(9F)
, and respect any settings for features provided the
HBA
.
- SCSI_OPTIONS_DR
- if not set, the HBA should not grant Disconnect privileges to target devices.
- SCSI_OPTIONS_LINK
- if not set, the HBA should not enable Linked Commands.
- SCSI_OPTIONS_TAG
- if not set, the HBA should not operate in Command Tagged Queueing mode.
- SCSI_OPTIONS_FAST
- if not set, the HBA should not operate the bus in FAST SCSI mode.
- SCSI_OPTIONS_FAST20
- if not set, the HBA should not operate the bus in FAST20 SCSI mode.
- SCSI_OPTIONS_WIDE
- if not set, the HBA should not operate the bus in WIDE SCSI mode.
- SCSI_OPTIONS_SYNC
- if not set, the HBA should not operate the bus in synchronous transfer mode.
scsi_hba_attach(), scsi_hba_attach_setup(), and scsi_hba_detach() return DDI_SUCCESS if the function call succeeds, and return DDI_FAILURE on failure.
scsi_hba_attach() and scsi_hba_attach_setup()
should be called from attach(9E)
. scsi_hba_detach() should be called from
detach(9E)
.