Documentation/devicetree/bindings/fsi/fsi.txt

Source file repositories/reference/linux-study-clean/Documentation/devicetree/bindings/fsi/fsi.txt

File Facts

System
Linux kernel
Corpus path
Documentation/devicetree/bindings/fsi/fsi.txt
Extension
.txt
Size
5197 bytes
Lines
157
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: documentation
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

FSI bus & engine generic device tree bindings
=============================================

The FSI bus is probe-able, so the OS is able to enumerate FSI slaves, and
engines within those slaves. However, we have a facility to match devicetree
nodes to probed engines. This allows for fsi engines to expose non-probeable
busses, which are then exposed by the device tree. For example, an FSI engine
that is an I2C master - the I2C bus can be described by the device tree under
the engine's device tree node.

FSI masters may require their own DT nodes (to describe the master HW itself);
that requirement is defined by the master's implementation, and is described by
the fsi-master-* binding specifications.

Under the masters' nodes, we can describe the bus topology using nodes to
represent the FSI slaves and their slave engines. As a basic outline:

  fsi-master {
      /* top-level of FSI bus topology, bound to an FSI master driver and
       * exposes an FSI bus */

      fsi-slave@<link,id> {
          /* this node defines the FSI slave device, and is handled
           * entirely with FSI core code */

          fsi-slave-engine@<addr> {
              /* this node defines the engine endpoint & address range, which
               * is bound to the relevant fsi device driver */
               ...
          };

          fsi-slave-engine@<addr> {
              ...
          };

      };
  };

Note that since the bus is probe-able, some (or all) of the topology may
not be described; this binding only provides an optional facility for
adding subordinate device tree nodes as children of FSI engines.

FSI masters
-----------

FSI master nodes declare themselves as such with the "fsi-master" compatible
value. It's likely that an implementation-specific compatible value will
be needed as well, for example:

    compatible = "fsi-master-gpio", "fsi-master";

Since the master nodes describe the top-level of the FSI topology, they also
need to declare the FSI-standard addressing scheme. This requires two cells for
addresses (link index and slave ID), and no size:

    #address-cells = <2>;
    #size-cells = <0>;

An optional boolean property can be added to indicate that a particular master
should not scan for connected devices at initialization time.  This is
necessary in cases where a scan could cause arbitration issues with other
masters that may be present on the bus.

    no-scan-on-init;

FSI slaves
----------

Slaves are identified by a (link-index, slave-id) pair, so require two cells
for an address identifier. Since these are not a range, no size cells are

Annotation

Implementation Notes