Skip to content

Commit b6c802b

Browse files
committed
feat(PRU-ICSSG): Add custom SRAM allocation documentation
Add a section explaining how to allocate custom SRAM regions for ICSSG Ethernet. Also improve existing documentation for SRAM. Signed-off-by: MD Danish Anwar <[email protected]>
1 parent acfa2f5 commit b6c802b

File tree

1 file changed

+43
-18
lines changed

1 file changed

+43
-18
lines changed

source/linux/Foundational_Components/PRU-ICSS/Linux_Drivers/PRU_ICSSG_Ethernet.rst

Lines changed: 43 additions & 18 deletions
Original file line numberDiff line numberDiff line change
@@ -877,30 +877,55 @@ Time Senstive Network (TSN) Offload Support
877877
SRAM Requirement
878878
################
879879

880-
The ICSSG Ethernet driver supports multiple instances of ICSSG each of which has two slices. Each ICSSG instance supports two Ethernet interfaces i.e. one per slice.
880+
The ICSSG Ethernet driver supports many instances of ICSSG each of which has two slices. Each ICSSG instance supports two Ethernet interfaces, one per slice. Static Random-Access Memory (SRAM) Required for each ICSSG instance (per two ports) is 256KB.
881881

882-
SRAM Required for each ICSSG instance (per two ports) is as below.
882+
For each ICSSG instance, the SRAM required needs to be contiguous.
883+
PRUETH only uses the required amount of SRAM from the SRAM pool. If PRUETH does not get the required amount of SRAM, the prueth_probe() API will return with -ENOMEM error.
883884

884-
.. ifconfig:: CONFIG_part_variant in ('AM65X')
885+
Allocating custom SRAM region
886+
*****************************
885887

886-
+------------------+--------------------------+-----------------------------------+
887-
| SoC | Mode | SRAM Required per ICSSG instance |
888-
+==================+==========================+===================================+
889-
| AM65X SR 2.0 | Emac Mode | 192 KB |
890-
+------------------+--------------------------+-----------------------------------+
891-
| AM65X SR 2.0 | Emac Mode + Switch Mode | 256 KB |
892-
+------------------+----------------------+---+-----------------------------------+
888+
By default, the ICSSG Ethernet driver uses the standard on-chip SRAM pool for its operation. However, in situations where this SRAM region is already allocated for other cores or purposes, you can define a custom SRAM region specifically for ICSSG Ethernet usage.
893889

894-
.. ifconfig:: CONFIG_part_variant in ('AM64X')
890+
Follow these steps to allocate a custom SRAM region:
895891

896-
+-----------+--------------------------+-----------------------------------+
897-
| SoC | Mode | SRAM Required per ICSSG Instance |
898-
+===========+==========================+===================================+
899-
| AM64X | Emac Mode | 192 KB |
900-
+-----------+--------------------------+-----------------------------------+
892+
- Define a dedicated SRAM subregion in the SoC's main device tree file
893+
- Update your board-specific device tree to point the ICSSG Ethernet driver to this custom SRAM region
901894

902-
For each ICSSG instance, the SRAM required needs to be contiguous.
903-
PRUETH only uses the required amount of SRAM from the SRAM/MSMC pool. If PRUETH doesn't get the required amount of SRAM, the prueth_probe() API will return with -ENOMEM error.
895+
Example configuration:
896+
897+
First, define the ethernet-specific SRAM region within the on-chip SRAM node:
898+
899+
.. code-block:: dts
900+
901+
/* In arch/arm64/boot/dts/ti/k3-am64-main.dtsi */
902+
&cbass_main {
903+
oc_sram: sram@70000000 {
904+
/* existing properties */
905+
906+
ethernet_sram: ethernet-sram@00000 {
907+
compatible = "mmio-sram";
908+
reg = <0x00000 0x40000>; /* 256KB allocation */
909+
pool;
910+
};
911+
};
912+
};
913+
914+
Then, in your board-specific device tree, update the ICSSG node to use this custom SRAM region:
915+
916+
.. code-block:: dts
917+
918+
/* In arch/arm64/boot/dts/ti/k3-am64-<board>.dts */
919+
&icssg1_eth {
920+
/* Replace the default SRAM reference */
921+
/* sram = <&oc_sram>; */ /* Original line (remove or comment out) */
922+
sram = <&ethernet_sram>; /* New custom SRAM region */
923+
};
924+
925+
.. note::
926+
927+
- The custom SRAM region must be at least 256KB per ICSSG instance
928+
- The allocation must be contiguous and 64KB aligned
904929

905930
Firmware name handling
906931
######################

0 commit comments

Comments
 (0)