Provided by: smp-utils_0.98-2build1_amd64 bug


       smp_write_gpio - invoke WRITE GPIO REGISTER (ENHANCED) SMP function


       smp_write_gpio     [--count=CO]     [--data=H,H...]    [--help]    [--hex]    [--index=IN]
       [--interface=PARAMS]   [--raw]   [--sa=SAS_ADDR]   [--type=TY]   [--verbose]   [--version]


       Sends  a SAS Serial Management Protocol (SMP) WRITE GPIO REGISTER or a WRITE GPIO REGISTER
       ENHANCED function request to an SMP target. The SMP target is identified by the SMP_DEVICE
       and  the  SAS_ADDR.  Depending  on  the  interface,  the  SAS_ADDR may be deduced from the
       SMP_DEVICE. The mpt interface uses SMP_DEVICE to identify a HBA  (an  SMP  initiator)  and
       needs the additional ,N to differentiate between HBAs if there are multiple present.

       This  function  is  defined  in  SFF-8485  (  see ) together with its
       corresponding READ GPIO REGISTER (ENHANCED) SMP function.  The  other  SMP  functions  are
       defined  in  SAS  documents  at .  SFF-8485 defines a curious device called a
       "virtual SMP port" that lives in a host bus adapter (HBA) and allows SMP to manipulate the
       sideband  signals  in  wide internal cables. To stop other initiators in a multi-initiator
       domain from accessing those sideband  signals,  the  virtual  SMP  (target)  port  is  not
       indicated in a DISCOVER response.

       For notes on the SMP WRITE GPIO REGISTER ENHANCED function see the section on the ENHANCED
       FUNCTION below.


       Mandatory arguments to long options are mandatory for short options as well.

       -c, --count=CO
              where CO is the register count. This is the number of (4 byte) registers  to  send.
              The default value is 1.

       -d, --data=H,H...
              this  option  supplies  a  comma  separated  list  of  hexadecimal  bytes  (0 to ff
              inclusive) that will be used as write data in the WRITE GPIO REGISTER request.  The
              number  of  bytes  supplied  should  be four times --count=C The first 4 bytes will
              become the first register written.

       -d, --data=-
              reads string  of  hexadecimal  bytes  from  stdin.  Spaces,  tabs  and  line  feeds
              additionally are permitted as separators.

       -E, --enhanced
              sends  a  WRITE GPIO REGISTER ENHANCED function request (default: send a WRITE GPIO
              REGISTER function request).

       -h, --help
              output the usage message then exit.

       -H, --hex
              output the response (less the CRC field) in hexadecimal.

       -i, --index=IN
              where IN is the register index. This value is origin zero and its default value  is
              0. The request will send --count=CO registers starting from --index=IN of the given

       -I, --interface=PARAMS
              interface specific parameters. In this case "interface" refers to the path  through
              the  operating  system  to  the  SMP initiator. See the smp_utils man page for more

       -r, --raw
              send the response (less the CRC field) to stdout in binary. All error messages  are
              sent to stderr.

       -s, --sa=SAS_ADDR
              specifies  the SAS address of the SMP target device. Typically this is an expander.
              This option may not be needed if the SMP_DEVICE has the target's SAS address within
              it.  The SAS_ADDR is in decimal but most SAS addresses are shown in hexadecimal. To
              give a number in hexadecimal either prefix it with '0x' or put a  trailing  'h'  on

       -t, --type=TY
              where TY is the register type. The default value is 0 (GPIO_CFG).  The request will
              send --count=CO registers starting from --index=IN of the given --type=TY.

       -v, --verbose
              increase the verbosity of the output. Can be used multiple times.

       -V, --version
              print the version string and then exit.


       In the  technical  review  of  SAS-2  prior  to  standardization  in  this  t10  document:
       08-212r8.pdf  (page  871  or 552) there is a comment that the READ GPIO REGISTER and WRITE
       GPIO REGISTER function headers (i.e. first 4 bytes) do not comply with all the  other  SMP
       functions in SAS-2.

       There  is  a  suggestion  that  enhanced variants be introduced in the next version of the
       SFF-8485 document. If that ever happened then it has not been made public. In SAS-2.1 both
       the  READ  and WRITE GPIO REGISTER functions have been made obsolete and the corresponding
       ENHANCED function numbers are "restricted" for SFF-8485.

       If the --enhanced option is given then the ENHANCED function number is sent; the  register
       type,  index  and  count fields (1  byte each) are increased by two byte positions leaving
       enough space for a compliant SAS-2 SMP header to be built.


       The SMP WRITE GPIO REGISTER function is defined in SFF-8485  (see  )
       together with its corresponding READ GPIO REGISTER SMP function.


       Written by Douglas Gilbert.


       Report bugs to <dgilbert at interlog dot com>.


       Copyright © 2006-2011 Douglas Gilbert
       This  software  is distributed under a FreeBSD license. There is NO warranty; not even for


       smp_utils, smp_read_gpio(smp_utils)