Go to main content

man pages section 8: System Administration Commands

Exit Print View

Updated: Wednesday, February 9, 2022

smp_read_gpio (8)


smp_read_gpio - invoke READ GPIO REGISTER (ENHANCED) SMP function


smp_read_gpio  [--count=CO]  [--enhanced] [--help] [--hex] [--index=IN]
[--interface=PARAMS] [--raw]  [--sa=SAS_ADDR]  [--type=TY]  [--verbose]
[--version] SMP_DEVICE[,N]


SMP_READ_GPIO(8)                   SMP_UTILS                  SMP_READ_GPIO(8)

       smp_read_gpio - invoke READ GPIO REGISTER (ENHANCED) SMP function

       smp_read_gpio  [--count=CO]  [--enhanced] [--help] [--hex] [--index=IN]
       [--interface=PARAMS] [--raw]  [--sa=SAS_ADDR]  [--type=TY]  [--verbose]
       [--version] SMP_DEVICE[,N]

       Sends a SAS Serial Management Protocol (SMP) READ GPIO REGISTER or READ
       GPIO REGISTER ENHANCED function request to an SMP target. The SMP  tar-
       get  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 mul-
       tiple present.

       This  function  is  defined  in  SFF-8485  ( see www.sffcommittee.com )
       together with its corresponding WRITE GPIO REGISTER SMP function.   The
       other  SMP  functions  are  defined  in  SAS documents at www.t10.org .
       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 on wide internal cables. To stop other initiators in a
       multi-initiator  domain from accessing those sideband signals, the vir-
       tual SMP (target) port is not indicated in a DISCOVER response.

       For notes on the SMP READ GPIO REGISTER ENHANCED function see the  sec-
       tion on the ENHANCED FUNCTION below.

       Mandatory  arguments to long options are mandatory for short options as

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

       -E, --enhanced
              sends  a  READ GPIO REGISTER ENHANCED function request (default:
              send a READ 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. If the request succeeds, then --count=CO
              registers starting from --index=IN of the given --type=TY should
              be in the response.

       -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 information.

       -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 it.

       -t, --type=TY
              where   TY  is  the  register  type.  The  default  value  is  0
              (GPIO_CFG).  If the request succeeds, then --count=CO  registers
              starting from --index=IN of the given --type=TY should be in the

       -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  func-
       tion 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.

       See "Examples" section in http://sg.danny.cz/sg/smp_utils.html

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

       Written by Douglas Gilbert.

       Report bugs to <dgilbert at interlog dot com>.

       Copyright (C) 2006-2011 Douglas Gilbert
       This software is distributed under a FreeBSD license. There is NO  war-
       ranty;  not  even  for MERCHANTABILITY or FITNESS FOR A PARTICULAR PUR-

       See attributes(7) for descriptions of the following attributes:

       |Availability   | system/storage/smp_utils |
       |Stability      | Uncommitted              |

       smp_utils, smp_write_gpio(smp_utils)

       Source code for open source software components in Oracle  Solaris  can
       be found at https://www.oracle.com/downloads/opensource/solaris-source-

       This    software    was    built    from    source     available     at
       https://github.com/oracle/solaris-userland.    The  original  community
       source was downloaded from  http://sg.danny.cz/sg/p/smp_utils-0.98.tgz.

       Further information about this software can be found on the open source
       community website at http://sg.danny.cz/sg/smp_utils.html.

smp_utils-0.97                    August 2011                 SMP_READ_GPIO(8)