-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
dt-bindings: net: Add ICSSG Ethernet
Add a YAML binding document for the ICSSG Programmable real time unit based Ethernet hardware. The ICSSG driver uses the PRU and PRUSS consumer APIs to interface the PRUs and load/run the firmware for supporting ethernet functionality. Reviewed-by: Rob Herring <robh@kernel.org> Signed-off-by: MD Danish Anwar <danishanwar@ti.com> Signed-off-by: David S. Miller <davem@davemloft.net>
- Loading branch information
MD Danish Anwar
authored and
David S. Miller
committed
Aug 2, 2023
1 parent
b8d5008
commit 172e604
Showing
1 changed file
with
184 additions
and
0 deletions.
There are no files selected for viewing
184 changes: 184 additions & 0 deletions
184
Documentation/devicetree/bindings/net/ti,icssg-prueth.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,184 @@ | ||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause) | ||
%YAML 1.2 | ||
--- | ||
$id: http://devicetree.org/schemas/net/ti,icssg-prueth.yaml# | ||
$schema: http://devicetree.org/meta-schemas/core.yaml# | ||
|
||
title: Texas Instruments ICSSG PRUSS Ethernet | ||
|
||
maintainers: | ||
- Md Danish Anwar <danishanwar@ti.com> | ||
|
||
description: | ||
Ethernet based on the Programmable Real-Time Unit and Industrial | ||
Communication Subsystem. | ||
|
||
allOf: | ||
- $ref: /schemas/remoteproc/ti,pru-consumer.yaml# | ||
|
||
properties: | ||
compatible: | ||
enum: | ||
- ti,am654-icssg-prueth # for AM65x SoC family | ||
|
||
sram: | ||
$ref: /schemas/types.yaml#/definitions/phandle | ||
description: | ||
phandle to MSMC SRAM node | ||
|
||
dmas: | ||
maxItems: 10 | ||
|
||
dma-names: | ||
items: | ||
- const: tx0-0 | ||
- const: tx0-1 | ||
- const: tx0-2 | ||
- const: tx0-3 | ||
- const: tx1-0 | ||
- const: tx1-1 | ||
- const: tx1-2 | ||
- const: tx1-3 | ||
- const: rx0 | ||
- const: rx1 | ||
|
||
ti,mii-g-rt: | ||
$ref: /schemas/types.yaml#/definitions/phandle | ||
description: | ||
phandle to MII_G_RT module's syscon regmap. | ||
|
||
ti,mii-rt: | ||
$ref: /schemas/types.yaml#/definitions/phandle | ||
description: | ||
phandle to MII_RT module's syscon regmap | ||
|
||
interrupts: | ||
maxItems: 2 | ||
description: | ||
Interrupt specifiers to TX timestamp IRQ. | ||
|
||
interrupt-names: | ||
items: | ||
- const: tx_ts0 | ||
- const: tx_ts1 | ||
|
||
ethernet-ports: | ||
type: object | ||
additionalProperties: false | ||
|
||
properties: | ||
'#address-cells': | ||
const: 1 | ||
'#size-cells': | ||
const: 0 | ||
|
||
patternProperties: | ||
^port@[0-1]$: | ||
type: object | ||
description: ICSSG PRUETH external ports | ||
$ref: ethernet-controller.yaml# | ||
unevaluatedProperties: false | ||
|
||
properties: | ||
reg: | ||
items: | ||
- enum: [0, 1] | ||
description: ICSSG PRUETH port number | ||
|
||
interrupts: | ||
maxItems: 1 | ||
|
||
ti,syscon-rgmii-delay: | ||
items: | ||
- items: | ||
- description: phandle to system controller node | ||
- description: The offset to ICSSG control register | ||
$ref: /schemas/types.yaml#/definitions/phandle-array | ||
description: | ||
phandle to system controller node and register offset | ||
to ICSSG control register for RGMII transmit delay | ||
|
||
required: | ||
- reg | ||
anyOf: | ||
- required: | ||
- port@0 | ||
- required: | ||
- port@1 | ||
|
||
required: | ||
- compatible | ||
- sram | ||
- dmas | ||
- dma-names | ||
- ethernet-ports | ||
- ti,mii-g-rt | ||
- interrupts | ||
- interrupt-names | ||
|
||
unevaluatedProperties: false | ||
|
||
examples: | ||
- | | ||
/* Example k3-am654 base board SR2.0, dual-emac */ | ||
pruss2_eth: ethernet { | ||
compatible = "ti,am654-icssg-prueth"; | ||
pinctrl-names = "default"; | ||
pinctrl-0 = <&icssg2_rgmii_pins_default>; | ||
sram = <&msmc_ram>; | ||
ti,prus = <&pru2_0>, <&rtu2_0>, <&tx_pru2_0>, | ||
<&pru2_1>, <&rtu2_1>, <&tx_pru2_1>; | ||
firmware-name = "ti-pruss/am65x-pru0-prueth-fw.elf", | ||
"ti-pruss/am65x-rtu0-prueth-fw.elf", | ||
"ti-pruss/am65x-txpru0-prueth-fw.elf", | ||
"ti-pruss/am65x-pru1-prueth-fw.elf", | ||
"ti-pruss/am65x-rtu1-prueth-fw.elf", | ||
"ti-pruss/am65x-txpru1-prueth-fw.elf"; | ||
ti,pruss-gp-mux-sel = <2>, /* MII mode */ | ||
<2>, | ||
<2>, | ||
<2>, /* MII mode */ | ||
<2>, | ||
<2>; | ||
dmas = <&main_udmap 0xc300>, /* egress slice 0 */ | ||
<&main_udmap 0xc301>, /* egress slice 0 */ | ||
<&main_udmap 0xc302>, /* egress slice 0 */ | ||
<&main_udmap 0xc303>, /* egress slice 0 */ | ||
<&main_udmap 0xc304>, /* egress slice 1 */ | ||
<&main_udmap 0xc305>, /* egress slice 1 */ | ||
<&main_udmap 0xc306>, /* egress slice 1 */ | ||
<&main_udmap 0xc307>, /* egress slice 1 */ | ||
<&main_udmap 0x4300>, /* ingress slice 0 */ | ||
<&main_udmap 0x4301>; /* ingress slice 1 */ | ||
dma-names = "tx0-0", "tx0-1", "tx0-2", "tx0-3", | ||
"tx1-0", "tx1-1", "tx1-2", "tx1-3", | ||
"rx0", "rx1"; | ||
ti,mii-g-rt = <&icssg2_mii_g_rt>; | ||
interrupt-parent = <&icssg2_intc>; | ||
interrupts = <24 0 2>, <25 1 3>; | ||
interrupt-names = "tx_ts0", "tx_ts1"; | ||
ethernet-ports { | ||
#address-cells = <1>; | ||
#size-cells = <0>; | ||
pruss2_emac0: port@0 { | ||
reg = <0>; | ||
phy-handle = <&pruss2_eth0_phy>; | ||
phy-mode = "rgmii-id"; | ||
interrupts-extended = <&icssg2_intc 24>; | ||
ti,syscon-rgmii-delay = <&scm_conf 0x4120>; | ||
/* Filled in by bootloader */ | ||
local-mac-address = [00 00 00 00 00 00]; | ||
}; | ||
pruss2_emac1: port@1 { | ||
reg = <1>; | ||
phy-handle = <&pruss2_eth1_phy>; | ||
phy-mode = "rgmii-id"; | ||
interrupts-extended = <&icssg2_intc 25>; | ||
ti,syscon-rgmii-delay = <&scm_conf 0x4124>; | ||
/* Filled in by bootloader */ | ||
local-mac-address = [00 00 00 00 00 00]; | ||
}; | ||
}; | ||
}; |