[PATCH linux v6 00/18] FSI device driver introduction
christopher.lee.bostic at gmail.com
christopher.lee.bostic at gmail.com
Mon Oct 31 09:09:21 AEDT 2016
From: Chris Bostic <cbostic at us.ibm.com>
Introduction of the IBM 'Flexible Support Interface' (FSI) bus device
driver. FSI is a high fan out serial bus consisting of a clock and a serial
data line capable of running at speeds up to 166 MHz.
This set provides the basic framework to add FSI extensions to the
Linux bus and device models. Master specific implementations are
defined to utilize the core FSI function.
In Linux, we have a core FSI "bus type", along with drivers for FSI
masters and engines.
The FSI master drivers expose a read/write interface to the bus address
space. The master drivers are under drivers/fsi/fsi-master-*.c.
The core handles probing and discovery of slaves and slave
engines, using those read/write interfaces. It is responsible for
creating the endpoint Linux devices corresponding to the discovered
engines on each slave.
Slave engines are identified by an 'engine' type, and an optional
version. Engine, a.k.a. client, drivers are matched and bound to these
engines during discovery.
This patch set does not include extended FSI function such as:
* Hub master support
* Cascaded master support
* Application layer hot plug notification
* Application layer FSI bus status interface
Common FSI terminology:
* Master
Controller of the FSI bus. Only the master is allowed to control the
clock line and is the initiator of all transactions on a bus.
* Slave
The receiver or target of a master initiated transaction. The slave
cannot initiate communications on a bus and must respond to any
master requests for data.
* CFAM
Stands for Common Field replaceable unit Access Macro. A CFAM is an
ASIC residing in any device requiring FSI communications. CFAMs
consist of an array of hardware 'engines' used for various purposes.
I2C masters, UARTs, General Purpose IO hardware are common types of
these engines.
* Configuration Space / Table
A table contained at the beginning of each CFAM address space.
This table lists information such as the CFAM's ID, which engine types
and versions it has available, as well as its addressing range.
* FSI Engine driver
A device driver that registers with the FSI core so that it can access
devices it owns on an FSI bus.
Patch Descripotions:
Patches 01-12 have been provided by Jeremy Kerr as an example of
how FSI function should be phased in. This includes the basic framework
to add FSI extensions to the Linux bus and device models.
Patch 13 Contains minor updates on top of Jeremy's base to allow
client/engine drivers to register with the core.
Patch 14 adds function to set up read/write access to a given CFAM.
Patch 15 sets up slave smode during scanning operations to allow
CFAM config space access.
Patch 16 Implementation of the FSI GPIO master. Contains base code
from Jeremy Kerr and finished by me.
Patch 17 core additions for client driver registration.
Patch 18 SCOM client device driver creation
Chris Bostic (6):
drivers/fsi: Minor updates to FSI core
drivers/fsi: Set up links for slave communication
drivers/fsi: Set slave SMODE to init communications
drivers/fsi: Add GPIO FSI master
drivers/fsi: Add engine driver register utilities
drivers/fsi: Add SCOM FSI engine device driver
Jeremy Kerr (12):
fsi: Add empty fsi bus definitions
fsi: Add device & driver definitions
fsi: add driver to device matches
fsi: Add fsi master definition
fsi: Add fake master driver
fsi: enable debug
fsi: Add slave definition
fsi: Add empty master scan
fsi: Add crc4 helpers
fsi: Implement slave initialisation
fsi: scan slaves & register devices
fsi: Add device read/write/peek functions
.../devicetree/bindings/fsi-master-gpio.txt | 21 +
.../devicetree/bindings/fsi/fsi-master-gpio.txt | 21 +
arch/arm/boot/dts/aspeed-bmc-opp-palmetto.dts | 36 ++
drivers/Kconfig | 2 +
drivers/Makefile | 1 +
drivers/fsi/Kconfig | 34 ++
drivers/fsi/Makefile | 5 +
drivers/fsi/fsi-core.c | 496 ++++++++++++++++++++
drivers/fsi/fsi-master-fake.c | 95 ++++
drivers/fsi/fsi-master-gpio.c | 522 +++++++++++++++++++++
drivers/fsi/fsi-master.h | 60 +++
drivers/fsi/fsi-scom.c | 238 ++++++++++
include/linux/fsi.h | 72 +++
13 files changed, 1603 insertions(+)
create mode 100644 Documentation/devicetree/bindings/fsi-master-gpio.txt
create mode 100644 Documentation/devicetree/bindings/fsi/fsi-master-gpio.txt
create mode 100644 drivers/fsi/Kconfig
create mode 100644 drivers/fsi/Makefile
create mode 100644 drivers/fsi/fsi-core.c
create mode 100644 drivers/fsi/fsi-master-fake.c
create mode 100644 drivers/fsi/fsi-master-gpio.c
create mode 100644 drivers/fsi/fsi-master.h
create mode 100644 drivers/fsi/fsi-scom.c
create mode 100644 include/linux/fsi.h
--
1.8.2.2
More information about the openbmc
mailing list