dt-bindings: Add devicetree bindings
Add snapshot of device tree bindings from keystone common kernel, branch "android-mainline-keystone-qcom-release" at c4c12103f9c0 ("Snap for 9228065 from e32903b9a63bb558df8b803b076619c53c16baad to android-mainline-keystone-qcom-release"). Change-Id: I7682079615cbd9f29340a5c1f2a1d84ec441a1f1 Signed-off-by: Melody Olvera <quic_molvera@quicinc.com>
This commit is contained in:
36
bindings/fsi/fsi-master-aspeed.txt
Normal file
36
bindings/fsi/fsi-master-aspeed.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
Device-tree bindings for AST2600 FSI master
|
||||
-------------------------------------------
|
||||
|
||||
The AST2600 contains two identical FSI masters. They share a clock and have a
|
||||
separate interrupt line and output pins.
|
||||
|
||||
Required properties:
|
||||
- compatible: "aspeed,ast2600-fsi-master"
|
||||
- reg: base address and length
|
||||
- clocks: phandle and clock number
|
||||
- interrupts: platform dependent interrupt description
|
||||
- pinctrl-0: phandle to pinctrl node
|
||||
- pinctrl-names: pinctrl state
|
||||
|
||||
Optional properties:
|
||||
- cfam-reset-gpios: GPIO for CFAM reset
|
||||
|
||||
- fsi-routing-gpios: GPIO for setting the FSI mux (internal or cabled)
|
||||
- fsi-mux-gpios: GPIO for detecting the desired FSI mux state
|
||||
|
||||
|
||||
Examples:
|
||||
|
||||
fsi-master {
|
||||
compatible = "aspeed,ast2600-fsi-master", "fsi-master";
|
||||
reg = <0x1e79b000 0x94>;
|
||||
interrupts = <GIC_SPI 100 IRQ_TYPE_LEVEL_HIGH>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_fsi1_default>;
|
||||
clocks = <&syscon ASPEED_CLK_GATE_FSICLK>;
|
||||
|
||||
fsi-routing-gpios = <&gpio0 ASPEED_GPIO(Q, 7) GPIO_ACTIVE_HIGH>;
|
||||
fsi-mux-gpios = <&gpio0 ASPEED_GPIO(B, 0) GPIO_ACTIVE_HIGH>;
|
||||
|
||||
cfam-reset-gpios = <&gpio0 ASPEED_GPIO(Q, 0) GPIO_ACTIVE_LOW>;
|
||||
};
|
36
bindings/fsi/fsi-master-ast-cf.txt
Normal file
36
bindings/fsi/fsi-master-ast-cf.txt
Normal file
@@ -0,0 +1,36 @@
|
||||
Device-tree bindings for ColdFire offloaded gpio-based FSI master driver
|
||||
------------------------------------------------------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible =
|
||||
"aspeed,ast2400-cf-fsi-master" for an AST2400 based system
|
||||
or
|
||||
"aspeed,ast2500-cf-fsi-master" for an AST2500 based system
|
||||
|
||||
- clock-gpios = <gpio-descriptor>; : GPIO for FSI clock
|
||||
- data-gpios = <gpio-descriptor>; : GPIO for FSI data signal
|
||||
- enable-gpios = <gpio-descriptor>; : GPIO for enable signal
|
||||
- trans-gpios = <gpio-descriptor>; : GPIO for voltage translator enable
|
||||
- mux-gpios = <gpio-descriptor>; : GPIO for pin multiplexing with other
|
||||
functions (eg, external FSI masters)
|
||||
- memory-region = <phandle>; : Reference to the reserved memory for
|
||||
the ColdFire. Must be 2M aligned on
|
||||
AST2400 and 1M aligned on AST2500
|
||||
- aspeed,sram = <phandle>; : Reference to the SRAM node.
|
||||
- aspeed,cvic = <phandle>; : Reference to the CVIC node.
|
||||
|
||||
Examples:
|
||||
|
||||
fsi-master {
|
||||
compatible = "aspeed,ast2500-cf-fsi-master", "fsi-master";
|
||||
|
||||
clock-gpios = <&gpio 0>;
|
||||
data-gpios = <&gpio 1>;
|
||||
enable-gpios = <&gpio 2>;
|
||||
trans-gpios = <&gpio 3>;
|
||||
mux-gpios = <&gpio 4>;
|
||||
|
||||
memory-region = <&coldfire_memory>;
|
||||
aspeed,sram = <&sram>;
|
||||
aspeed,cvic = <&cvic>;
|
||||
}
|
28
bindings/fsi/fsi-master-gpio.txt
Normal file
28
bindings/fsi/fsi-master-gpio.txt
Normal file
@@ -0,0 +1,28 @@
|
||||
Device-tree bindings for gpio-based FSI master driver
|
||||
-----------------------------------------------------
|
||||
|
||||
Required properties:
|
||||
- compatible = "fsi-master-gpio";
|
||||
- clock-gpios = <gpio-descriptor>; : GPIO for FSI clock
|
||||
- data-gpios = <gpio-descriptor>; : GPIO for FSI data signal
|
||||
|
||||
Optional properties:
|
||||
- enable-gpios = <gpio-descriptor>; : GPIO for enable signal
|
||||
- trans-gpios = <gpio-descriptor>; : GPIO for voltage translator enable
|
||||
- mux-gpios = <gpio-descriptor>; : GPIO for pin multiplexing with other
|
||||
functions (eg, external FSI masters)
|
||||
- no-gpio-delays; : Don't add extra delays between GPIO
|
||||
accesses. This is useful when the HW
|
||||
GPIO block is running at a low enough
|
||||
frequency.
|
||||
|
||||
Examples:
|
||||
|
||||
fsi-master {
|
||||
compatible = "fsi-master-gpio", "fsi-master";
|
||||
clock-gpios = <&gpio 0>;
|
||||
data-gpios = <&gpio 1>;
|
||||
enable-gpios = <&gpio 2>;
|
||||
trans-gpios = <&gpio 3>;
|
||||
mux-gpios = <&gpio 4>;
|
||||
}
|
156
bindings/fsi/fsi.txt
Normal file
156
bindings/fsi/fsi.txt
Normal file
@@ -0,0 +1,156 @@
|
||||
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
|
||||
required. For an example, a slave on link 1, with ID 2, could be represented
|
||||
as:
|
||||
|
||||
cfam@1,2 {
|
||||
reg = <1 2>;
|
||||
[...];
|
||||
}
|
||||
|
||||
Each slave provides an address-space, under which the engines are accessible.
|
||||
That address space has a maximum of 23 bits, so we use one cell to represent
|
||||
addresses and sizes in the slave address space:
|
||||
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
Optionally, a slave can provide a global unique chip ID which is used to
|
||||
identify the physical location of the chip in a system specific way
|
||||
|
||||
chip-id = <0>;
|
||||
|
||||
FSI engines (devices)
|
||||
---------------------
|
||||
|
||||
Engines are identified by their address under the slaves' address spaces. We
|
||||
use a single cell for address and size. Engine nodes represent the endpoint
|
||||
FSI device, and are passed to those FSI device drivers' ->probe() functions.
|
||||
|
||||
For example, for a slave using a single 0x400-byte page starting at address
|
||||
0xc00:
|
||||
|
||||
engine@c00 {
|
||||
reg = <0xc00 0x400>;
|
||||
};
|
||||
|
||||
|
||||
Full example
|
||||
------------
|
||||
|
||||
Here's an example that illustrates:
|
||||
- an FSI master
|
||||
- connected to an FSI slave
|
||||
- that contains an engine that is an I2C master
|
||||
- connected to an I2C EEPROM
|
||||
|
||||
The FSI master may be connected to additional slaves, and slaves may have
|
||||
additional engines, but they don't necessarily need to be describe in the
|
||||
device tree if no extra platform information is required.
|
||||
|
||||
/* The GPIO-based FSI master node, describing the top level of the
|
||||
* FSI bus
|
||||
*/
|
||||
gpio-fsi {
|
||||
compatible = "fsi-master-gpio", "fsi-master";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <0>;
|
||||
|
||||
/* A FSI slave (aka. CFAM) at link 0, ID 0. */
|
||||
cfam@0,0 {
|
||||
reg = <0 0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
chip-id = <0>;
|
||||
|
||||
/* FSI engine at 0xc00, using a single page. In this example,
|
||||
* it's an I2C master controller, so subnodes describe the
|
||||
* I2C bus.
|
||||
*/
|
||||
i2c-controller@c00 {
|
||||
reg = <0xc00 0x400>;
|
||||
|
||||
/* Engine-specific data. In this case, we're describing an
|
||||
* I2C bus, so we're conforming to the generic I2C binding
|
||||
*/
|
||||
compatible = "some-vendor,fsi-i2c-controller";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
/* I2C endpoint device: an Atmel EEPROM */
|
||||
eeprom@50 {
|
||||
compatible = "atmel,24c256";
|
||||
reg = <0x50>;
|
||||
pagesize = <64>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
38
bindings/fsi/ibm,fsi2spi.yaml
Normal file
38
bindings/fsi/ibm,fsi2spi.yaml
Normal file
@@ -0,0 +1,38 @@
|
||||
# SPDX-License-Identifier: (GPL-2.0-or-later)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/fsi/ibm,fsi2spi.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: IBM FSI-attached SPI controllers
|
||||
|
||||
maintainers:
|
||||
- Eddie James <eajames@linux.ibm.com>
|
||||
|
||||
description: |
|
||||
This binding describes an FSI CFAM engine called the FSI2SPI. Therefore this
|
||||
node will always be a child of an FSI CFAM node; see fsi.txt for details on
|
||||
FSI slave and CFAM nodes. This FSI2SPI engine provides access to a number of
|
||||
SPI controllers.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- ibm,fsi2spi
|
||||
|
||||
reg:
|
||||
items:
|
||||
- description: FSI slave address
|
||||
|
||||
required:
|
||||
- compatible
|
||||
- reg
|
||||
|
||||
additionalProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
fsi2spi@1c00 {
|
||||
compatible = "ibm,fsi2spi";
|
||||
reg = <0x1c00 0x400>;
|
||||
};
|
16
bindings/fsi/ibm,p9-occ.txt
Normal file
16
bindings/fsi/ibm,p9-occ.txt
Normal file
@@ -0,0 +1,16 @@
|
||||
Device-tree bindings for FSI-attached POWER9/POWER10 On-Chip Controller (OCC)
|
||||
-----------------------------------------------------------------------------
|
||||
|
||||
This is the binding for the P9 or P10 On-Chip Controller accessed over FSI from
|
||||
a service processor. See fsi.txt for details on bindings for FSI slave and CFAM
|
||||
nodes. The OCC is not an FSI slave device itself, rather it is accessed
|
||||
through the SBE FIFO.
|
||||
|
||||
Required properties:
|
||||
- compatible = "ibm,p9-occ" or "ibm,p10-occ"
|
||||
|
||||
Examples:
|
||||
|
||||
occ {
|
||||
compatible = "ibm,p9-occ";
|
||||
};
|
Reference in New Issue
Block a user