sbus(4)




NAME

     sbus - configuration files for SBus device drivers


DESCRIPTION

     The  SBus  is  a  geographically  addressed  peripheral  bus
     present  on  many SPARC hardware platforms. SBus devices are
     self-identifying - that is to say the SBus card itself  pro-
     vides  information to the system so that it can identify the
     device driver that needs to be used. The device usually pro-
     vides  additional  information  to the system in the form of
     name-value pairs that can be retrieved using  the  DDI  pro-
     perty interfaces. See ddi_prop_op(9F) for details.

     The information is usually derived from a small  Forth  pro-
     gram  stored in the FCode PROM on the card, so driver confi-
     guration files should be completely  unnecessary  for  these
     devices.  However,  on some occasions, drivers for SBus dev-
     ices may need to use driver configuration files  to  augment
     the   information   provided   by   the   SBus   card.   See
     driver.conf(4) for further details.

     When they are needed, configuration files  for  SBus  device
     drivers  should  identify  the  parent bus driver implicitly
     using the class keyword.  This removes the dependency on the
     particular  bus driver involved since this may be named dif-
     ferently on different platforms.

     All bus drivers of class sbus recognise the  following  pro-
     perties:

      reg  An arbitrary length array where each  element  of  the
           array  consists  of a 3-tuple of integers.  Each array
           element  describes  a  logically  contiguous  mappable
           resource on the SBus.

           The first integer of each  tuple  specifies  the  slot
           number the card is plugged into. The second integer of
           each 3-tuple specifies the offset in the slot  address
           space  identified  by  the  first  element.  The third
           integer of each 3-tuple specifies the size in bytes of
           the mappable resource.

           The driver can refer to the elements of this array  by
           index,   and   construct   kernel  mappings  to  these
           addresses using ddi_map_regs(9F). The index  into  the
           array   is   passed   as   the   rnumber  argument  of
           ddi_map_regs().

           You can use the ddi_get* and ddi_put* family of  func-
           tions  to  access  register  space  from  a high-level
           interrupt context.

     interrupts
           An arbitrary length array where each  element  of  the
           array consists of a single integer. Each array element
           describes a possible SBus  interrupt  level  that  the
           device might generate.

           The driver can refer to the elements of this array  by
           index, and register interrupt handlers with the system
           using ddi_add_intr(9F). The index into  the  array  is
           passed as the inumber argument of ddi_add_intr().

     registers
           An arbitrary length array where each  element  of  the
           array  consists  of a 3-tuple of integers.  Each array
           element  describes  a  logically  contiguous  mappable
           resource on the SBus.

           The first integer of each tuple should be set  to  -1,
           specifying  that  any  SBus  slot  may be matched. The
           second integer of each 3-tuple specifies the offset in
           the  slot  address  space identified by the first ele-
           ment.  The third integer of each 3-tuple specifies the
           size in bytes of the mappable resoure.

           The registers property can only be used to augment  an
           incompletely  specified  reg property with information
           from a driver  configuration  file.  It  may  only  be
           specified in a driver configuration file.

     All SBus devices must provide reg properties to the  system.
     The  first two integer elements of the reg property are used
     to construct the address part of the device name under /dev-
     ices.

     Only devices that generate interrupts need to provide inter-
     rupts properties.

     Occasionally, it may be necessary to override or augment the
     configuration information supplied by the SBus device.  This
     can be achieved by writing a driver configuration file  that
     describes  a  prototype  device  information  (devinfo) node
     specification,   containing   the   additional    properties
     required.

     For the system to merge the information, certain  conditions
     must  be  met.  First,  the  name property must be the same.
     Second, either the  first  two  integers  (slot  number  and
     offset)  of  the two reg properties must be the same, or the
     second integer (offset) of the reg and registers  properties
     must be the same.

     In the event that the SBus card has no reg property at  all,
     the  self-identifying information cannot be used, so all the
     details of the card must be specified in a driver configura-
     tion file.


EXAMPLES

     Example 1: A sample configuration file.

     Here is  a  configuration  file  for  an  SBus  card  called
     SUNW,netboard. The card already has a simple FCode PROM that
     creates name and reg properties, and will  have  a  complete
     set  of  properties  for  normal  use  once  the  driver and
     firmware is complete.

     In this example, we want to augment the properties given  to
     us  by  the firmware. We use the same name property, and use
     the registers property to match the firmware  reg  property.
     That way we don't have to worry about which slot the card is
     really plugged into.

     We want to add an interrupts property while we are  develop-
     ing  the firmware and driver so that we can start to experi-
     ment with interrupts. The device can generate interrupts  at
     SBus  level  3.  Additionally,  we want to set a debug-level
     property to 4.

     #
     # Copyright (c) 1992, by Sun Microsystems, Inc.
     #ident  "@(#)SUNW,netboard.conf         1.4     92/03/10 SMI"
     #
     name="SUNW,netboard" class="sbus"
          registers=-1,0x40000,64,-1,0x80000,1024
          interrupts=3 debug-level=4;


ATTRIBUTES

     See attributes(5) for descriptions of the  following  attri-
     butes:

     ____________________________________________________________
    |       ATTRIBUTE TYPE        |       ATTRIBUTE VALUE       |
    |_____________________________|_____________________________|
    | Architecture                | SPARC                       |
    |_____________________________|_____________________________|


SEE ALSO

     driver.conf(4),       attributes(5),       ddi_add_intr(9F),
     ddi_map_regs(9F), ddi_prop_op(9F)

     Writing Device Drivers


WARNINGS

     The wildcarding mechanism of the registers property  matches
     every instance of the particular device attached to the sys-
     tem.
      This may not always be what is wanted.


Man(1) output converted with man2html