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,72 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/adi,i3c-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Analog Devices I3C Controller
description:
FPGA-based I3C controller designed to interface with I3C and I2C peripherals,
implementing a subset of the I3C-basic specification. The IP core is tested
on arm, microblaze, and arm64 architectures.
https://analogdevicesinc.github.io/hdl/library/i3c_controller
maintainers:
- Jorge Marques <jorge.marques@analog.com>
properties:
compatible:
const: adi,i3c-master-v1
reg:
maxItems: 1
clocks:
minItems: 1
items:
- description: The AXI interconnect clock, drives the register map.
- description:
The secondary clock, drives the internal logic asynchronously to the
register map. The presence of this entry states that the IP Core was
synthesized with a second clock input, and the absence of this entry
indicates a topology where a single clock input drives all the
internal logic.
clock-names:
minItems: 1
items:
- const: axi
- const: i3c
interrupts:
maxItems: 1
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
allOf:
- $ref: i3c.yaml#
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/irq.h>
i3c@44a00000 {
compatible = "adi,i3c-master-v1";
reg = <0x44a00000 0x1000>;
interrupts = <3 IRQ_TYPE_LEVEL_HIGH>;
clocks = <&clkc 15>, <&clkc 15>;
clock-names = "axi", "i3c";
#address-cells = <3>;
#size-cells = <0>;
/* I3C and I2C devices */
};
@@ -0,0 +1,72 @@
# SPDX-License-Identifier: GPL-2.0 OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/aspeed,ast2600-i3c.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: ASPEED AST2600 i3c controller
maintainers:
- Jeremy Kerr <jk@codeconstruct.com.au>
allOf:
- $ref: i3c.yaml#
properties:
compatible:
const: aspeed,ast2600-i3c
reg:
maxItems: 1
clocks:
maxItems: 1
resets:
maxItems: 1
interrupts:
maxItems: 1
sda-pullup-ohms:
enum: [545, 750, 2000]
default: 2000
description: |
Value to configure SDA pullup resistor, in Ohms.
aspeed,global-regs:
$ref: /schemas/types.yaml#/definitions/phandle-array
items:
- items:
- description: phandle to i3c global register syscon node
- description: index of this i3c controller in the global register set
description: |
A (phandle, controller index) reference to the i3c global register set
used for this device.
required:
- compatible
- reg
- clocks
- interrupts
- aspeed,global-regs
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/interrupt-controller/arm-gic.h>
i3c@2000 {
compatible = "aspeed,ast2600-i3c";
reg = <0x2000 0x1000>;
#address-cells = <3>;
#size-cells = <0>;
clocks = <&syscon 0>;
resets = <&syscon 0>;
aspeed,global-regs = <&i3c_global 0>;
pinctrl-names = "default";
pinctrl-0 = <&pinctrl_i3c1_default>;
interrupts = <GIC_SPI 102 IRQ_TYPE_LEVEL_HIGH>;
};
...
@@ -0,0 +1,65 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/cdns,i3c-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Cadence I3C master block
maintainers:
- Boris Brezillon <bbrezillon@kernel.org>
allOf:
- $ref: i3c.yaml#
properties:
compatible:
oneOf:
- const: cdns,i3c-master
- items:
- enum:
- axiado,ax3000-i3c
- const: cdns,i3c-master
reg:
maxItems: 1
clocks:
maxItems: 2
clock-names:
items:
- const: pclk
- const: sysclk
interrupts:
maxItems: 1
required:
- compatible
- reg
- clocks
- clock-names
- interrupts
unevaluatedProperties: false
examples:
- |
i3c@d040000 {
compatible = "cdns,i3c-master";
clocks = <&coreclock>, <&i3csysclock>;
clock-names = "pclk", "sysclk";
interrupts = <3 0>;
reg = <0x0d040000 0x1000>;
#address-cells = <3>;
#size-cells = <0>;
i2c-scl-hz = <100000>;
eeprom@57{
compatible = "atmel,24c01";
reg = <0x57 0x0 0x10>;
pagesize = <0x8>;
};
};
...
@@ -0,0 +1,196 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/i3c.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: I3C bus
maintainers:
- Alexandre Belloni <alexandre.belloni@bootlin.com>
- Miquel Raynal <miquel.raynal@bootlin.com>
description: |
I3C busses can be described with a node for the primary I3C controller device
and a set of child nodes for each I2C or I3C slave on the bus. Each of them
may, during the life of the bus, request mastership.
properties:
$nodename:
pattern: "^i3c@[0-9a-f]+$"
"#address-cells":
const: 3
description: |
Each I2C device connected to the bus should be described in a subnode.
All I3C devices are supposed to support DAA (Dynamic Address Assignment),
and are thus discoverable. So, by default, I3C devices do not have to be
described in the device tree. This being said, one might want to attach
extra resources to these devices, and those resources may have to be
described in the device tree, which in turn means we have to describe
I3C devices.
Another use case for describing an I3C device in the device tree is when
this I3C device has a static I2C address and we want to assign it a
specific I3C dynamic address before the DAA takes place (so that other
devices on the bus can't take this dynamic address).
"#size-cells":
const: 0
i3c-scl-hz:
description: |
Frequency of the SCL signal used for I3C transfers. When undefined, the
default value should be 12.5MHz.
May not be supported by all controllers.
i2c-scl-hz:
description: |
Frequency of the SCL signal used for I2C transfers. When undefined, the
default should be to look at LVR (Legacy Virtual Register) values of
I2C devices described in the device tree to determine the maximum I2C
frequency.
May not be supported by all controllers.
mctp-controller:
type: boolean
description: |
Indicates that the system is accessible via this bus as an endpoint for
MCTP over I3C transport.
required:
- "#address-cells"
- "#size-cells"
patternProperties:
"@[0-9a-f]+$":
type: object
description: |
I2C child, should be named: <device-type>@<i2c-address>
All properties described in dtschema schemas/i2c/i2c-controller.yaml
are valid here, except the reg property whose content is changed.
properties:
compatible:
description:
Compatible of the I2C device.
reg:
items:
- items:
- description: |
I2C address. 10 bit addressing is not supported. Devices with
10-bit address can't be properly passed through DEFSLVS
command.
minimum: 0
maximum: 0x7f
- const: 0
- description: |
Shall encode the I3C LVR (Legacy Virtual Register):
See include/dt-bindings/i3c/i3c.h
bit[31:8]: unused/ignored
bit[7:5]: I2C device index. Possible values:
* 0: I2C device has a 50 ns spike filter
* 1: I2C device does not have a 50 ns spike filter but
supports high frequency on SCL
* 2: I2C device does not have a 50 ns spike filter and is
not tolerant to high frequencies
* 3-7: reserved
bit[4]: tell whether the device operates in FM (Fast Mode)
or FM+ mode:
* 0: FM+ mode
* 1: FM mode
bit[3:0]: device type
* 0-15: reserved
required:
- compatible
- reg
"@[0-9a-f]+,[0-9a-f]+$":
type: object
description: |
I3C child, should be named: <device-type>@<static-i2c-address>,<i3c-pid>
properties:
reg:
items:
- items:
- description: |
Encodes the static I2C address. Should be 0 if the device does
not have one (0 is not a valid I2C address).
minimum: 0
maximum: 0x7f
- description: |
First half of the Provisioned ID (following the PID
definition provided by the I3C specification).
Contains the manufacturer ID left-shifted by 1.
- description: |
Second half of the Provisioned ID (following the PID
definition provided by the I3C specification).
Contains the ORing of the part ID left-shifted by 16,
the instance ID left-shifted by 12 and extra information.
assigned-address:
$ref: /schemas/types.yaml#/definitions/uint32
minimum: 0x1
maximum: 0xff
description: |
Dynamic address to be assigned to this device. In case static address is
present (first cell of the reg property != 0), this address is assigned
through SETDASA. If static address is not present, this address is assigned
through SETNEWDA after assigning a temporary address via ENTDAA.
required:
- reg
additionalProperties: true
examples:
- |
#include <dt-bindings/i3c/i3c.h>
i3c@d040000 {
compatible = "cdns,i3c-master";
clocks = <&coreclock>, <&i3csysclock>;
clock-names = "pclk", "sysclk";
interrupts = <3 0>;
reg = <0x0d040000 0x1000>;
#address-cells = <3>;
#size-cells = <0>;
i2c-scl-hz = <100000>;
/* I2C device. */
eeprom@57 {
compatible = "atmel,24c01";
reg = <0x57 0x0 (I2C_FM | I2C_FILTER)>;
pagesize = <0x8>;
};
/* I3C device with a static I2C address and assigned address. */
thermal_sensor: sensor@68,39200144004 {
reg = <0x68 0x392 0x144004>;
assigned-address = <0xa>;
};
/* I3C device with only assigned address. */
pressure_sensor: sensor@0,39200124004 {
reg = <0x0 0x392 0x124000>;
assigned-address = <0xc>;
};
/*
* I3C device without a static I2C address but requiring
* resources described in the DT.
*/
sensor@0,39200154004 {
reg = <0x0 0x392 0x154004>;
clocks = <&clock_provider 0>;
};
};
@@ -0,0 +1,71 @@
# SPDX-License-Identifier: (GPL-2.0 OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/mipi-i3c-hci.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: MIPI I3C HCI
maintainers:
- Nicolas Pitre <npitre@baylibre.com>
description: |
MIPI I3C Host Controller Interface
The MIPI I3C HCI (Host Controller Interface) specification defines
a common software driver interface to support compliant MIPI I3C
host controller hardware implementations from multiple vendors.
The hardware is self-advertising for differences in implementation
capabilities, including the spec version it is based on, so there
isn't much to describe here (yet).
For details, please see:
https://www.mipi.org/specifications/i3c-hci
properties:
compatible:
enum:
- mipi-i3c-hci
- microchip,sama7d65-i3c-hci
reg:
maxItems: 1
clocks:
items:
- description: Peripheral bus clock
- description: System Generic clock
interrupts:
maxItems: 1
required:
- compatible
- reg
- interrupts
allOf:
- $ref: /schemas/i3c/i3c.yaml#
- if:
properties:
compatible:
contains:
const: microchip,sama7d65-i3c-hci
then:
required:
- clocks
else:
properties:
clocks: false
unevaluatedProperties: false
examples:
- |
i3c@a0000000 {
compatible = "mipi-i3c-hci";
reg = <0xa0000000 0x2000>;
interrupts = <89>;
#address-cells = <3>;
#size-cells = <0>;
};
@@ -0,0 +1,185 @@
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/renesas,i3c.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Renesas I3C Bus Interface
maintainers:
- Wolfram Sang <wsa+renesas@sang-engineering.com>
- Tommaso Merciai <tommaso.merciai.xr@bp.renesas.com>
properties:
compatible:
oneOf:
- items:
- enum:
- renesas,r9a08g045-i3c # RZ/G3S
- renesas,r9a09g047-i3c # RZ/G3E
- items:
- enum:
- renesas,r9a09g056-i3c # RZ/V2N
- renesas,r9a09g057-i3c # RZ/V2H(P)
- const: renesas,r9a09g047-i3c
reg:
maxItems: 1
interrupts:
items:
- description: Non-recoverable internal error interrupt
- description: Normal transfer error interrupt
- description: Normal transfer abort interrupt
- description: Normal response status buffer full interrupt
- description: Normal command buffer empty interrupt
- description: Normal IBI status buffer full interrupt
- description: Normal Rx data buffer full interrupt
- description: Normal Tx data buffer empty interrupt
- description: Normal receive status buffer full interrupt
- description: START condition detection interrupt
- description: STOP condition detection interrupt
- description: Transmit end interrupt
- description: NACK detection interrupt
- description: Arbitration lost interrupt
- description: Timeout detection interrupt
- description: Wake-up condition detection interrupt
- description: HDR Exit Pattern detection interrupt
minItems: 16
interrupt-names:
items:
- const: ierr
- const: terr
- const: abort
- const: resp
- const: cmd
- const: ibi
- const: rx
- const: tx
- const: rcv
- const: st
- const: sp
- const: tend
- const: nack
- const: al
- const: tmo
- const: wu
- const: exit
minItems: 16
clocks:
items:
- description: APB bus clock
- description: transfer clock
- description: SFRs clock
minItems: 2
clock-names:
items:
- const: pclk
- const: tclk
- const: pclkrw
minItems: 2
power-domains:
maxItems: 1
resets:
items:
- description: Reset signal
- description: APB interface reset signal/SCAN reset signal
reset-names:
items:
- const: presetn
- const: tresetn
required:
- compatible
- reg
- interrupts
- interrupt-names
- clock-names
- clocks
- power-domains
- resets
- reset-names
allOf:
- $ref: i3c.yaml#
- if:
properties:
compatible:
contains:
const: renesas,r9a08g045-i3c
then:
properties:
clocks:
maxItems: 2
clock-names:
maxItems: 2
interrupts:
minItems: 17
interrupt-names:
minItems: 17
- if:
properties:
compatible:
contains:
const: renesas,r9a09g047-i3c
then:
properties:
clocks:
minItems: 3
clock-names:
minItems: 3
interrupts:
maxItems: 16
interrupt-names:
maxItems: 16
unevaluatedProperties: false
examples:
- |
#include <dt-bindings/clock/r9a08g045-cpg.h>
#include <dt-bindings/interrupt-controller/arm-gic.h>
i3c@1005b000 {
compatible = "renesas,r9a08g045-i3c";
reg = <0x1005b000 0x1000>;
clocks = <&cpg CPG_MOD R9A08G045_I3C_PCLK>,
<&cpg CPG_MOD R9A08G045_I3C_TCLK>;
clock-names = "pclk", "tclk";
interrupts = <GIC_SPI 289 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 290 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 293 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 294 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 295 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 296 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 297 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 298 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 299 IRQ_TYPE_EDGE_RISING>,
<GIC_SPI 304 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 305 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 307 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 308 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 309 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 310 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 311 IRQ_TYPE_LEVEL_HIGH>,
<GIC_SPI 306 IRQ_TYPE_LEVEL_HIGH>;
interrupt-names = "ierr", "terr", "abort", "resp",
"cmd", "ibi", "rx", "tx", "rcv",
"st", "sp", "tend", "nack",
"al", "tmo", "wu", "exit";
resets = <&cpg R9A08G045_I3C_PRESETN>,
<&cpg R9A08G045_I3C_TRESETN>;
reset-names = "presetn", "tresetn";
power-domains = <&cpg>;
#address-cells = <3>;
#size-cells = <0>;
};
...
@@ -0,0 +1,95 @@
# SPDX-License-Identifier: GPL-2.0-only OR BSD-2-Clause
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/silvaco,i3c-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Silvaco I3C master
maintainers:
- Conor Culhane <conor.culhane@silvaco.com>
properties:
compatible:
oneOf:
- enum:
- nuvoton,npcm845-i3c
- silvaco,i3c-master-v1
- items:
- enum:
- nxp,imx94-i3c
- nxp,imx95-i3c
- const: silvaco,i3c-master-v1
reg:
maxItems: 1
interrupts:
maxItems: 1
clocks:
minItems: 2
items:
- description: system clock
- description: bus clock
- description: other (slower) events clock
clock-names:
minItems: 2
items:
- const: pclk
- const: fast_clk
- const: slow_clk
resets:
maxItems: 1
required:
- compatible
- reg
- interrupts
- clock-names
- clocks
allOf:
- $ref: i3c.yaml#
- if:
properties:
compatible:
enum:
- nuvoton,npcm845-i3c
- silvaco,i3c-master-v1
then:
properties:
clocks:
minItems: 3
clock-names:
minItems: 3
- if:
properties:
compatible:
contains:
enum:
- nxp,imx94-i3c
- nxp,imx95-i3c
then:
properties:
clocks:
maxItems: 2
clock-names:
maxItems: 2
unevaluatedProperties: false
examples:
- |
i3c@a0000000 {
compatible = "silvaco,i3c-master-v1";
clocks = <&zynqmp_clk 71>, <&fclk>, <&sclk>;
clock-names = "pclk", "fast_clk", "slow_clk";
interrupt-parent = <&gic>;
interrupts = <0 89 4>;
reg = <0xa0000000 0x1000>;
#address-cells = <3>;
#size-cells = <0>;
};
@@ -0,0 +1,68 @@
# SPDX-License-Identifier: GPL-2.0
%YAML 1.2
---
$id: http://devicetree.org/schemas/i3c/snps,dw-i3c-master.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#
title: Synopsys DesignWare I3C master block
maintainers:
- Alexandre Belloni <alexandre.belloni@bootlin.com>
allOf:
- $ref: i3c.yaml#
properties:
compatible:
oneOf:
- const: snps,dw-i3c-master-1.00a
- items:
- const: altr,agilex5-dw-i3c-master
- const: snps,dw-i3c-master-1.00a
reg:
maxItems: 1
clocks:
minItems: 1
items:
- description: Core clock
- description: APB clock
clock-names:
minItems: 1
items:
- const: core
- const: apb
interrupts:
maxItems: 1
power-domains:
maxItems: 1
required:
- compatible
- reg
- clocks
- interrupts
unevaluatedProperties: false
examples:
- |
i3c@2000 {
compatible = "snps,dw-i3c-master-1.00a";
#address-cells = <3>;
#size-cells = <0>;
reg = <0x02000 0x1000>;
interrupts = <0>;
clocks = <&i3cclk>;
eeprom@57{
compatible = "atmel,24c01";
reg = <0x57 0x0 0x10>;
pagesize = <0x8>;
};
};
...