scsi_hba_attach(9F)




NAME

     scsi_hba_attach_setup,  scsi_hba_attach,  scsi_hba_detach  -
     SCSI HBA attach and detach routines


SYNOPSIS

     #include <sys/scsi/scsi.h>

     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);


INTERFACE LEVEL

     Solaris architecture specific (Solaris DDI).


PARAMETERS

     dip   A pointer to the dev_info_t  structure,  referring  to
           the instance of the HBA device.

     hba_lim
           A pointer to a ddi_dma_lim(9S) structure.

     hba_tran
           A pointer to a scsi_hba_tran(9S) structure.

     hba_flags
           Flag  modifiers.  The  only  defined  flag  value   is
           SCSI_HBA_TRAN_CLONE.

     hba_options
           Optional features  provided  by  the  HBA  driver  for
           future extensions; must be NULL.

     hba_dma_attr
           A pointer to a ddi_dma_attr(9S) structure.


DESCRIPTION

     scsi_hba_attach_setup() is the  recommended  interface  over
     scsi_hba_attach().

     For scsi_hba_attach_setup() and scsi_hba_attach():

     scsi_hba_attach() registers the DMA limits hba_lim  and  the
     transport  vectors hba_tran of each instance of the HBA dev-
     ice defined by dip.  scsi_hba_attach_setup()  registers  the
     DMA   attributes  hba_dma_attr  and  the  transport  vectors
     hba_tran of each instance of the HBA device defined by  dip.
     The  HBA  driver  can  pass  different  DMA  limits  or  DMA
     attributes, and transport vectors for each instance  of  the
     device,  as necessary, to support any constraints imposed by
     the HBA itself.

     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 ini-
     tialize 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 allow-
     ing 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 proper-
     ties 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
                Optional SCSI configuration bits

                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_PARITY
                      If not set, the HBA should not  operate  in
                      parity mode.

                SCSI_OPTIONS_QAS
                      If not set, the HBA should not make use  of
                      the  Quick Arbitration Select feature. Con-
                      sult your  Sun  hardware  documentation  to
                      determine  whether  your  machine  supports
                      QAS.

                SCSI_OPTIONS_FAST
                      If not set, the HBA should not operate  the
                      bus in FAST SCSImode.

                SCSI_OPTIONS_FAST20
                      If not set, the HBA should not operate  the
                      bus in FAST20 SCSI mode.

                SCSI_OPTIONS_FAST40
                      If not set, the HBA should not operate  the
                      bus in FAST40 SCSI mode.

                SCSI_OPTIONS_FAST80
                      If not set, the HBA should not operate  the
                      bus in FAST80 SCSI mode.

                SCSI_OPTIONS_FAST160
                      If not set, the HBA should not operate  the
                      bus in FAST160 SCSI mode.

                SCSI_OPTIONS_FAST320
                      If not set, the HBA should not operate  the
                      bus in FAST320 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-reset-delay
                SCSI bus or device reset recovery time,  in  mil-
                liseconds.

          scsi-selection-timeout
                Default SCSI selection phase  timeout  value,  in
                milliseconds.  Please refer to individual HBA man
                pages for any HBA-specific information

     For scsi_hba_detach():

     scsi_hba_detach() removes the reference to the DMA limits or
     attributes  structure and the transport vector for the given
     instance of an HBA driver.


RETURN VALUES

     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.


CONTEXT

     scsi_hba_attach()  and  scsi_hba_attach_setup()  should   be
     called  from  attach(9E). scsi_hba_detach() should be called
     from detach(9E).


SEE ALSO

     attach(9E),          detach(9E),          tran_tgt_init(9E),
     ddi_prop_get_int(9F),   ddi_dma_attr(9S),   ddi_dma_lim(9S),
     dev_ops(9S), scsi_address(9S), scsi_hba_tran(9S)

     Writing Device Drivers


NOTES

     It is the HBA driver's responsibility to ensure that no more
     transport  requests will be taken on behalf of any SCSI tar-
     get device driver after scsi_hba_detach() is called.

     The scsi_hba_attach() function is obsolete and will be  dis-
     continued  in a future release. This function is replaced by
     scsi_hba_attach_setup().


Man(1) output converted with man2html