Resguardo inicial

This commit is contained in:
lastdragon
2026-09-06 12:53:21 -06:00
parent 662efe3c2a
commit ad2088d178
94853 changed files with 43200404 additions and 0 deletions
@@ -0,0 +1,81 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/aspeed,ast2400-cf-fsi-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ASpeed ColdFire offloaded GPIO-based FSI master
maintainers:
- Eddie James <eajames@linux.ibm.com>
allOf:
- $ref: /schemas/fsi/fsi-controller.yaml#
properties:
compatible:
enum:
- aspeed,ast2400-cf-fsi-master
- aspeed,ast2500-cf-fsi-master
clock-gpios:
maxItems: 1
description: GPIO for FSI clock
data-gpios:
maxItems: 1
description: GPIO for FSI data signal
enable-gpios:
maxItems: 1
description: GPIO for enable signal
trans-gpios:
maxItems: 1
description: GPIO for voltage translator enable
mux-gpios:
maxItems: 1
description:
GPIO for pin multiplexing with other functions (eg, external FSI masters)
memory-region:
maxItems: 1
description:
Reference to the reserved memory for the ColdFire. Must be 2M aligned on
AST2400 and 1M aligned on AST2500.
aspeed,cvic:
description: Reference to the CVIC node.
$ref: /schemas/types.yaml#/definitions/phandle
aspeed,sram:
description: Reference to the SRAM node.
$ref: /schemas/types.yaml#/definitions/phandle
required:
- compatible
- clock-gpios
- data-gpios
- enable-gpios
- trans-gpios
- mux-gpios
- memory-region
- aspeed,cvic
- aspeed,sram
unevaluatedProperties: false
examples:
- |
fsi-master {
compatible = "aspeed,ast2500-cf-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,cvic = <&cvic>;
aspeed,sram = <&sram>;
};
@@ -0,0 +1,121 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/aspeed,ast2600-fsi-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Aspeed FSI master
maintainers:
- Eddie James <eajames@linux.ibm.com>
description:
The AST2600 and later contain two identical FSI masters. They share a
clock and have a separate interrupt line and output pins.
properties:
compatible:
enum:
- aspeed,ast2600-fsi-master
- aspeed,ast2700-fsi-master
clocks:
maxItems: 1
cfam-reset-gpios:
maxItems: 1
description:
Output GPIO pin for CFAM reset
fsi-routing-gpios:
maxItems: 1
description:
Output GPIO pin for setting the FSI mux (internal or cabled)
fsi-mux-gpios:
maxItems: 1
description:
Input GPIO pin for detecting the desired FSI mux state
interrupts:
maxItems: 1
if:
properties:
compatible:
contains:
enum:
- aspeed,ast2600-fsi-master
then:
properties:
reg:
maxItems: 1
else:
properties:
reg:
minItems: 1
items:
- description: OPB control registers
- description: FSI controller registers
- description: FSI link address space
reg-names:
items:
- const: opb
- const: ctrl
- const: fsi
required:
- compatible
- reg
- clocks
- interrupts
allOf:
- $ref: fsi-controller.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/ast2600-clock.h>
#include <dt-bindings/gpio/aspeed-gpio.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
fsi-master@1e79b000 {
compatible = "aspeed,ast2600-fsi-master";
reg = <0x1e79b000 0x94>;
#address-cells = <2>;
#size-cells = <0>;
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>;
cfam@0,0 {
reg = <0 0>;
#address-cells = <1>;
#size-cells = <1>;
chip-id = <0>;
};
};
- |
bus {
#address-cells = <2>;
#size-cells = <2>;
fsi-master@21800000 {
compatible = "aspeed,ast2700-fsi-master";
reg = <0x0 0x21800000 0x0 0x100>,
<0x0 0x21000000 0x0 0x1000>,
<0x0 0x20000000 0x0 0x1000000>;
reg-names = "opb", "ctrl", "fsi";
#interrupt-cells = <1>;
interrupt-controller;
interrupts-extended = <&intc 6>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_fsi0_default>;
clocks = <&syscon 40>;
};
};
@@ -0,0 +1,66 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/fsi-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: FSI Controller Common Properties
maintainers:
- Eddie James <eajames@linux.ibm.com>
description:
FSI (FRU (Field Replaceable Unit) Service Interface) is a two wire bus. The
FSI bus is connected to a CFAM (Common FRU Access Macro) which contains
various engines such as I2C controllers, SPI controllers, etc.
properties:
"#address-cells":
const: 2
"#size-cells":
const: 0
'#interrupt-cells':
const: 1
bus-frequency:
minimum: 1
maximum: 200000000
interrupt-controller: true
no-scan-on-init:
$ref: /schemas/types.yaml#/definitions/flag
description:
The FSI controller cannot scan the bus during initialization.
patternProperties:
"cfam@[0-9a-f],[0-9a-f]":
type: object
properties:
chip-id:
$ref: /schemas/types.yaml#/definitions/uint32
description:
Processor index, a global unique chip ID which is used to identify
the physical location of the chip in a system specific way.
bus-frequency:
minimum: 1
maximum: 100000000
reg:
maxItems: 1
"#address-cells":
const: 1
"#size-cells":
const: 1
required:
- reg
additionalProperties: true
additionalProperties: true
@@ -0,0 +1,63 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/fsi-master-gpio.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: fsi-master-gpio
maintainers:
- Eddie James <eajames@linux.ibm.com>
allOf:
- $ref: /schemas/fsi/fsi-controller.yaml
properties:
compatible:
items:
- const: fsi-master-gpio
clock-gpios:
description: GPIO for FSI clock
maxItems: 1
data-gpios:
description: GPIO for FSI data signal
maxItems: 1
enable-gpios:
description: GPIO for enable signal
maxItems: 1
trans-gpios:
description: GPIO for voltage translator enable
maxItems: 1
mux-gpios:
description: GPIO for pin multiplexing with other functions (eg, external
FSI masters)
maxItems: 1
no-gpio-delays:
description:
Don't add extra delays between GPIO accesses. This is useful when the HW
GPIO block is running at a low enough frequency.
type: boolean
required:
- compatible
- clock-gpios
- data-gpios
unevaluatedProperties: false
examples:
- |
fsi-master {
compatible = "fsi-master-gpio";
clock-gpios = <&gpio 0>;
data-gpios = <&gpio 1>;
enable-gpios = <&gpio 2>;
trans-gpios = <&gpio 3>;
mux-gpios = <&gpio 4>;
};
@@ -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>;
};
};
};
};
@@ -0,0 +1,66 @@
# 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. This FSI2SPI engine provides
access to a number of SPI controllers.
properties:
compatible:
enum:
- ibm,fsi2spi
reg:
items:
- description: FSI slave address
"#address-cells":
const: 1
"#size-cells":
const: 0
patternProperties:
"^spi@[0-9a-f]+$":
type: object
$ref: /schemas/spi/ibm,spi-fsi.yaml
required:
- compatible
- reg
additionalProperties: false
examples:
- |
fsi2spi@1c00 {
compatible = "ibm,fsi2spi";
reg = <0x1c00 0x400>;
#address-cells = <1>;
#size-cells = <0>;
spi@0 {
compatible = "ibm,spi-fsi";
reg = <0>;
#address-cells = <1>;
#size-cells = <0>;
eeprom@0 {
compatible = "atmel,at25";
reg = <0>;
address-width = <24>;
pagesize = <256>;
size = <0x80000>;
spi-max-frequency = <1000000>;
};
};
};
@@ -0,0 +1,44 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/ibm,i2cr-fsi-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: IBM I2C Responder virtual FSI master
maintainers:
- Eddie James <eajames@linux.ibm.com>
description: |
The I2C Responder (I2CR) is a an I2C device that's connected to an FSI CFAM
(see fsi.txt). The I2CR translates I2C bus operations to FSI CFAM reads and
writes or SCOM operations, thereby acting as an FSI master.
properties:
compatible:
enum:
- ibm,i2cr-fsi-master
reg:
maxItems: 1
required:
- compatible
- reg
allOf:
- $ref: fsi-controller.yaml#
unevaluatedProperties: false
examples:
- |
i2c {
#address-cells = <1>;
#size-cells = <0>;
i2cr@20 {
compatible = "ibm,i2cr-fsi-master";
reg = <0x20>;
};
};
@@ -0,0 +1,45 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/ibm,p9-fsi-controller.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: IBM FSI-attached FSI Hub Controller
maintainers:
- Eddie James <eajames@linux.ibm.com>
description:
The FSI Hub Controller is an FSI controller, providing a number of FSI links,
located on a CFAM. Therefore this node will always be a child of an FSI CFAM
node.
properties:
compatible:
enum:
- ibm,p9-fsi-controller
reg:
items:
- description: FSI slave address
allOf:
- $ref: fsi-controller.yaml#
unevaluatedProperties: false
examples:
- |
fsi@3400 {
compatible = "ibm,p9-fsi-controller";
reg = <0x3400 0x400>;
#address-cells = <2>;
#size-cells = <0>;
cfam@0,0 {
reg = <0 0>;
#address-cells = <1>;
#size-cells = <1>;
chip-id = <0>;
};
};
@@ -0,0 +1,40 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/ibm,p9-occ.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: IBM FSI-attached On-Chip Controller (OCC)
maintainers:
- Eddie James <eajames@linux.ibm.com>
description:
The POWER processor On-Chip Controller (OCC) helps manage power and
thermals for the system, accessed through the FSI-attached SBEFIFO
from a service processor.
properties:
compatible:
enum:
- ibm,p9-occ
- ibm,p10-occ
hwmon:
type: object
$ref: /schemas/hwmon/ibm,occ-hwmon.yaml
required:
- compatible
additionalProperties: false
examples:
- |
occ {
compatible = "ibm,p9-occ";
hwmon {
compatible = "ibm,p9-occ-hwmon";
};
};
@@ -0,0 +1,46 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/ibm,p9-sbefifo.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: IBM FSI-attached SBEFIFO engine
maintainers:
- Eddie James <eajames@linux.ibm.com>
description:
The SBEFIFO is an FSI CFAM engine that provides an interface to the
POWER processor Self Boot Engine (SBE). This node will always be a child
of an FSI CFAM node.
properties:
compatible:
enum:
- ibm,p9-sbefifo
- ibm,odyssey-sbefifo
reg:
items:
- description: FSI slave address
occ:
type: object
$ref: ibm,p9-occ.yaml#
required:
- compatible
- reg
additionalProperties: false
examples:
- |
fsi-slave-engine@2400 {
compatible = "ibm,p9-sbefifo";
reg = <0x2400 0x400>;
occ {
compatible = "ibm,p9-occ";
};
};
@@ -0,0 +1,38 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/fsi/ibm,p9-scom.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: IBM FSI-attached SCOM engine
maintainers:
- Eddie James <eajames@linux.ibm.com>
description:
The SCOM engine is an interface to the POWER processor PIB (Pervasive
Interconnect Bus). This node will always be a child of an FSI CFAM node.
properties:
compatible:
enum:
- ibm,fsi2pib
- ibm,p9-scom
- ibm,i2cr-scom
reg:
items:
- description: FSI slave address
required:
- compatible
- reg
additionalProperties: false
examples:
- |
scom@1000 {
compatible = "ibm,p9-scom";
reg = <0x1000 0x400>;
};