---
name: "smp_read_gpio"
section: "8"
platform: "linux"
package: "smp-utils"
version: "0.99-1"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/smp_read_gpio"
---

# smp\_read\_gpio(8)

invoke READ GPIO REGISTER (ENHANCED) SMP function

## 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 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 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 virtual SMP (target) port is not indicated in a DISCOVER response.

For notes on the SMP READ GPIO REGISTER ENHANCED function see the section 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 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.

## 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 © 2006-2011 Douglas Gilbert\
 This software is distributed under a FreeBSD license. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.

## SEE ALSO

**smp\_utils, smp\_write\_gpio(smp\_utils)**
