mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 12:42:02 +00:00
9f4a8a2d7f
This driver provides an in-kernel and a user API for accessing the command FIFO of the SBE (Self Boot Engine) of the POWER9 processor, via the FSI bus. It provides an in-kernel interface to submit command and receive responses, along with a helper to locate and analyse the response status block. It's a simple synchronous submit() type API. The user interface uses the write/read interface that an earlier version of this driver already provided, however it has some specific limitations in order to keep the driver simple and avoid using up a lot of kernel memory: - The user should perform a single write() with the command and a single read() to get the response (with a buffer big enough to hold the entire response). - On a write() the command is simply "stored" into a kernel buffer, it is submitted as one operation on the subsequent read(). This allows to have the code write directly from the FIFO into the user buffer and avoid hogging the SBE between the write() and read() syscall as it's critical that the SBE be freed asap to respond to the host. An extra write() will simply replace the previously written command. - A write of a single 4 bytes containing the value 0x52534554 in big endian will trigger a reset request. No read is necessary, the write() call will return when the reset has been acknowledged or times out. - The command is limited to 4K bytes. Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org> Tested-by: Joel Stanley <joel@jms.id.au> ---
43 lines
1.0 KiB
Plaintext
43 lines
1.0 KiB
Plaintext
#
|
|
# FSI subsystem
|
|
#
|
|
|
|
menuconfig FSI
|
|
tristate "FSI support"
|
|
depends on OF
|
|
select CRC4
|
|
---help---
|
|
FSI - the FRU Support Interface - is a simple bus for low-level
|
|
access to POWER-based hardware.
|
|
|
|
if FSI
|
|
|
|
config FSI_MASTER_GPIO
|
|
tristate "GPIO-based FSI master"
|
|
depends on GPIOLIB
|
|
select CRC4
|
|
---help---
|
|
This option enables a FSI master driver using GPIO lines.
|
|
|
|
config FSI_MASTER_HUB
|
|
tristate "FSI hub master"
|
|
---help---
|
|
This option enables a FSI hub master driver. Hub is a type of FSI
|
|
master that is connected to the upstream master via a slave. Hubs
|
|
allow chaining of FSI links to an arbitrary depth. This allows for
|
|
a high target device fanout.
|
|
|
|
config FSI_SCOM
|
|
tristate "SCOM FSI client device driver"
|
|
---help---
|
|
This option enables an FSI based SCOM device driver.
|
|
|
|
config FSI_SBEFIFO
|
|
tristate "SBEFIFO FSI client device driver"
|
|
---help---
|
|
This option enables an FSI based SBEFIFO device driver. The SBEFIFO is
|
|
a pipe-like FSI device for communicating with the self boot engine
|
|
(SBE) on POWER processors.
|
|
|
|
endif
|