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)
NAME
smp_read_gpio - invoke READ GPIO REGISTER (ENHANCED) SMP function
SYNOPSIS
smp_read_gpio [--count=CO] [--enhanced] [--help] [--hex] [--index=IN]
[--interface=PARAMS] [--raw] [--sa=SAS_ADDR] [--type=TY] [--verbose]
[--version] SMP_DEVICE[,N]
DESCRIPTION
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.
OPTIONS
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 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
response.
-v, --verbose
increase the verbosity of the output. Can be used multiple times
-V, --version
print the version string and then exit.
ENHANCED FUNCTION
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.
EXAMPLES
See "Examples" section in http://sg.danny.cz/sg/smp_utils.html
CONFORMING TO
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.
AUTHORS
Written by Douglas Gilbert.
REPORTING BUGS
Report bugs to <dgilbert at interlog dot com>.
COPYRIGHT
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-
POSE.
ATTRIBUTES
See attributes(7) for descriptions of the following attributes:
+---------------+--------------------------+
|ATTRIBUTE TYPE | ATTRIBUTE VALUE |
+---------------+--------------------------+
|Availability | system/storage/smp_utils |
+---------------+--------------------------+
|Stability | Uncommitted |
+---------------+--------------------------+
SEE ALSO
smp_utils, smp_write_gpio(smp_utils)
NOTES
Source code for open source software components in Oracle Solaris can
be found at https://www.oracle.com/downloads/opensource/solaris-source-
code-downloads.html.
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)