SMP_WRITE_GPIO(8)
π SMP_WRITE_GPIO π
okay bestie, welcome to the smp_utils manual, page for smp_write_gpio β yes it's a mouthful, no we're not changing it, it's iconic. sit down, hydrate, and let's send some SMP requests together π«Ά
β¨ SYNOPSIS β¨
smp_write_gpio [--count=CO] [--data=H,H...] [--help] [--hex]
[--index=IN] [--interface=PARAMS] [--raw] [--sa=SAS_ADDR] [--type=TY]
[--verbose] [--version] SMP_DEVICE[,N]
πΈ DESCRIPTION πΈ
So basically π
β this tool sends a SAS Serial Management Protocol (SMP) WRITE GPIO REGISTER request, 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 β she's self-sufficient like that. 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. multiple HBAs? in this economy?? π
This function is defined in SFF-8485 (see www.sffcommittee.com) together with its corresponding READ GPIO REGISTER (ENHANCED) 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 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. sneaky. lowkey gatekeeping. π΅οΈβοΈβ¨
For notes on the SMP WRITE 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. no exceptions, periodt π
-c,--count=COβ where CO is the register count. This is the number of (4 byte) registers to send. The default value is1.-d,--data=H,H...β this option supplies a comma separated list of hexadecimal bytes (0toffinclusive) that will be used as write data in the WRITE GPIO REGISTER request. The number of bytes supplied should be four times--count=CThe first 4 bytes will become the first register written. (yes, that sentence ends a little abruptly in the original, we're leaving it, it's part of the lore π)-d,--data=-β reads string of hexadecimal bytes from stdin. Spaces, tabs and line feeds additionally are permitted as separators. so generous of her π-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 is0. The request will send--count=COregisters starting from--index=INof the given--type=TY.-I,--interface=PARAMSβ interface specific parameters. In this case "interface" refers to the path through the operating system to the SMP initiator. See thesmp_utilsman 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 theSMP_DEVICEhas 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 is0(GPIO_CFG). The request will send--count=COregisters starting from--index=INof the given--type=TY.-v,--verboseβ increase the verbosity of the output. Can be used multiple times. stack it like accessories π-V,--versionβ print the version string and then exit.
π¦ ENHANCED FUNCTION π¦
okay so this is the lore drop, sit with me πβ¨
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. not compliant?? in this house?? π
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. obsessed with the drama of standards bodies fr fr.
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. she made room. she's accommodating. main character energy π
π CONFORMING TO π
The SMP WRITE GPIO REGISTER function is defined in SFF-8485 (see www.sffcommittee.com) together with its corresponding READ GPIO REGISTER SMP function.
π AUTHORS π
Written by Douglas Gilbert. the blueprint, honestly.
π REPORTING BUGS π
Report bugs to <dgilbert at interlog dot com>. tell him everything, he wants to know π«Ά
π 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. (translation: she is serving, but she is not legally responsible for anything that happens next π)
β SEE ALSO β
smp_utilssmp_read_gpio(smp_utils)
and that's the whole page bestie!! this was smp_utils-0.97, from August 2011, and you just read SMP_WRITE_GPIO(8) π go forth and write those GPIO registers, you absolute legend π
β¨
π¦ where this page comes from
- debian bookworm: smp-utils 0.99-1 Β· BSD-3-Clause
- debian trixie: smp-utils 0.99-1 Β· BSD-3-Clause
- epel 10: smp_utils 0.99-1.el10_0 Β· BSD-3-Clause
- epel 9: smp_utils 0.99-5.el9 Β· BSD
- fedora 43: smp_utils 0.99-14.fc43 Β· BSD-3-Clause
- fedora 44: smp_utils 0.99-15.fc44 Β· BSD-3-Clause
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- opensuse-leap 16.0: smp_utils 0.99-bp160.1.6 Β· BSD-3-Clause AND GPL-2.0-only
- ubuntu jammy: smp-utils 0.99-1 Β· BSD-3-Clause
- ubuntu noble: smp-utils 0.99-1 Β· BSD-3-Clause
- ubuntu resolute: smp-utils 0.99-1build1 Β· BSD-3-Clause
- ubuntu stonking: smp-utils 0.99-1build1 Β· BSD-3-Clause
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms