[PATCH linux v5 0/7] Introducing the FSI device driver

Joel Stanley joel at jms.id.au
Fri Sep 2 15:05:44 AEST 2016


Hi Chris,

On Thu, Aug 25, 2016 at 5:24 AM,  <christopher.lee.bostic at gmail.com> wrote:
> 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.

Nice work on the cover letter. It's a good introduction.

I haven't had a chance to take a close look a the patches yet. They
are on top of the stack for Monday.

I was wondering if you have had a look at Jeremy's implementation yet?
If so, are there any ideas you have incorporated into your series?

Cheers,

Joel

>
> This set provides the core functionality of the FSI device driver.  Core
> function is defined as:
>     *  FSI client registration and notification of bus state changes
>     *  Device scanning and hotplug reporting to clients
>     *  Interrupt detection and routing
>     *  Bus error detection and cleanup
>
> 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
>     *  Host configuration allowing for various hardware / firmware
>        emulation implementations of the FSI master.
>     *  Soft FSI support.  Soft FSI is a device driver method of emulating
>        FSI master hardware by 'bit banging' standard I/O lines.
>
> 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.
>
> * Link
>     The combination of a serial clock and data line constituting one
>     FSI communications element. For each link there is a master on one
>     end and a CFAM/slave on the other end.
>
> * Engine
>     A self contained hardware function found within a CFAM.  Examples
>     include I2C masters, UARTs, GPIOs, etc...
>
> * Client
>     A device driver requiring access to its hardware via an FSI bus.
>     For example an I2C client would be a device driver requiring
>     access to an I2C master engine on a remote CFAM accessible via
>     an FSI link.  Clients register with the FSI bus and will receive
>     notifications of bus state changes as well as hot plug events related
>     to engines of interest to them.
>
> * Build Up
>     The process scanning a bus and creating a data structure representation
>     of all devices discovered in a tree.  A tree in this context is a
>     series of links and devices connected to those links.
>
> * Hub / Hub master
>     Provides extension to the existing primary FSI master.  Allows for
>     several chained FSI links in series to a target device thus increasing
>     potential fan out.
>
> * Cascaded master
>     A subset of functionality of the  hub master.  Cascaded masters can
>     access only a limited address range compared to hub masters.  This was
>     the first generation implementation, essentially, of hub type function.
>
> ---
>
> Chris Bostic (6):
>   drivers/fsi: Add FSI Master Functionality and Initialization
>   drivers/fsi: Add FSI master target device scanning function
>   drivers/fsi: Add initial FSI link buildup
>   drivers/fsi: Add FSI bus type and hook into LDM
>   drivers/fsi: Add FSI Bus Support for Clients
>   drivers/fsi: Add CFAM scanning function
>
> Christopher Bostic (1):
>   drivers/fsi: Initial stubs for FSI device driver.
>
>  drivers/Kconfig           |   2 +
>  drivers/Makefile          |   1 +
>  drivers/fsi/Kconfig       |   7 +
>  drivers/fsi/Makefile      |   5 +
>  drivers/fsi/build.c       | 876 ++++++++++++++++++++++++++++++++++++++++++++++
>  drivers/fsi/fsi.h         | 134 +++++++
>  drivers/fsi/fsi_private.h | 123 +++++++
>  drivers/fsi/fsicfam.h     | 161 +++++++++
>  drivers/fsi/fsiinit.c     |  92 +++++
>  drivers/fsi/fsiinit.h     |  43 +++
>  drivers/fsi/fsilink.h     |  99 ++++++
>  drivers/fsi/fsimaster.c   | 619 ++++++++++++++++++++++++++++++++
>  drivers/fsi/fsimaster.h   | 682 ++++++++++++++++++++++++++++++++++++
>  drivers/fsi/fsislave.h    | 415 ++++++++++++++++++++++
>  drivers/fsi/ldm.c         | 347 ++++++++++++++++++
>  drivers/fsi/readwrite.c   | 123 +++++++
>  16 files changed, 3729 insertions(+)
>  create mode 100644 drivers/fsi/Kconfig
>  create mode 100644 drivers/fsi/Makefile
>  create mode 100644 drivers/fsi/build.c
>  create mode 100644 drivers/fsi/fsi.h
>  create mode 100644 drivers/fsi/fsi_private.h
>  create mode 100644 drivers/fsi/fsicfam.h
>  create mode 100644 drivers/fsi/fsiinit.c
>  create mode 100644 drivers/fsi/fsiinit.h
>  create mode 100644 drivers/fsi/fsilink.h
>  create mode 100644 drivers/fsi/fsimaster.c
>  create mode 100644 drivers/fsi/fsimaster.h
>  create mode 100644 drivers/fsi/fsislave.h
>  create mode 100644 drivers/fsi/ldm.c
>  create mode 100644 drivers/fsi/readwrite.c
>
> --
> 1.8.2.2
>


More information about the openbmc mailing list