Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions configs/AM68/AM68_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Root_Complex
linux/Foundational_Components/Kernel/Kernel_Drivers/PMIC/pmic_tps6594
linux/Foundational_Components_Power_Management
Expand Down
4 changes: 2 additions & 2 deletions configs/AM68A/AM68A_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -65,8 +65,8 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Root_Complex
linux/Foundational_Components/Kernel/Kernel_Drivers/PMIC/pmic_tps6594
linux/Foundational_Components_Power_Management
Expand Down
2 changes: 1 addition & 1 deletion configs/AM69/AM69_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Root_Complex
linux/Foundational_Components/Kernel/Kernel_Drivers/PMIC/pmic_tps6594
linux/Foundational_Components_Power_Management
Expand Down
2 changes: 1 addition & 1 deletion configs/AM69A/AM69A_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Root_Complex
linux/Foundational_Components/Kernel/Kernel_Drivers/PMIC/pmic_tps6594
linux/Foundational_Components_Power_Management
Expand Down
2 changes: 1 addition & 1 deletion configs/J721S2/J721S2_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -69,7 +69,7 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Root_Complex
linux/Foundational_Components/Kernel/Kernel_Drivers/PMIC/pmic_tps6594
linux/Foundational_Components_Power_Management
Expand Down
4 changes: 2 additions & 2 deletions configs/TDA4VM/TDA4VM_linux_toc.txt
Original file line number Diff line number Diff line change
Expand Up @@ -67,8 +67,8 @@ linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-EST
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-CBS
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-IET
linux/Foundational_Components/Kernel/Kernel_Drivers/Network/CPSW-TSN-Tuning
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_End_Point
#linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane
linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Root_Complex
linux/Foundational_Components/Kernel/Kernel_Drivers/PMIC/pmic_tps6594
linux/Foundational_Components_Power_Management
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,11 +14,11 @@
controller instance and each host will enumerate the other host as an
independent function.

PCIe uses NTB (non transparent bridge) for two hosts to communicate with each
other. Though J721E doesn't have an explicit NTB controller, NTB functionality
can be achieved using multiple endpoint controller instances. And for PCIe
backplane (to connect more than 2 hosts), aggregation of NTB controllers
can be modeled using multiple instances of multi-function endpoint controller.
PCIe uses NTB (Non Transparent Bridge) for two hosts to communicate with each

Check warning on line 17 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 17, "column": 11}}}, "severity": "INFO"}
other. Though |__PART_FAMILY_DEVICE_NAMES__| does not have an explicit NTB

Check warning on line 18 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 18, "column": 72}}}, "severity": "INFO"}
controller, multiple endpoint controller instances provide NTB functionality.

Check warning on line 19 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 19, "column": 60}}}, "severity": "INFO"}

Check warning on line 19 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SimpleWords] Use simple language. Consider using 'give' or 'offer' rather than 'provide'. Raw Output: {"message": "[RedHat.SimpleWords] Use simple language. Consider using 'give' or 'offer' rather than 'provide'.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 19, "column": 52}}}, "severity": "INFO"}

Check warning on line 19 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SimpleWords] Use simple language. Consider using 'many' rather than 'multiple'. Raw Output: {"message": "[RedHat.SimpleWords] Use simple language. Consider using 'many' rather than 'multiple'.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 19, "column": 13}}}, "severity": "INFO"}
For PCIe backplane (to connect more than 2 hosts), multiple instances of

Check warning on line 20 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.SimpleWords] Use simple language. Consider using 'many' rather than 'multiple'. Raw Output: {"message": "[RedHat.SimpleWords] Use simple language. Consider using 'many' rather than 'multiple'.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 20, "column": 52}}}, "severity": "INFO"}

Check warning on line 20 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Spelling] Verify the word 'backplane'. It is not in the American English spelling dictionary used by Vale. Raw Output: {"message": "[RedHat.Spelling] Verify the word 'backplane'. It is not in the American English spelling dictionary used by Vale.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 20, "column": 10}}}, "severity": "WARNING"}
multi-function endpoint controller create the aggregation of NTB controllers.

Check warning on line 21 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 21, "column": 62}}}, "severity": "INFO"}

In the below diagram, PCI NTB function configures the SoC with multiple
PCIe Endpoint (EP) instances in such a way that transaction from one EP
Expand Down Expand Up @@ -63,6 +63,12 @@
The following picture shows J721E EVM connected to two DRA7 EVMs. Here the two
DRA7x boards communicate with each other using J721E as backplane.

.. ifconfig:: CONFIG_part_variant in ('J784S4','J742S2')

Similarly, |__PART_FAMILY_DEVICE_NAMES__| can be connected to two hosts, who
can communicate with each other using |__PART_FAMILY_DEVICE_NAMES__|
as backplane.

.. Image:: /images/j721e-backplane.jpg


Expand All @@ -71,21 +77,34 @@

.. rubric:: *Backplane DTS Overlay File*

The following DTS overlay file configures the PCIe controller in EP mode and
also contains a device tree node to create a NTB function device:
The following DTS overlay files configure both the PCIe controller in EP mode

Check warning on line 80 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'DTS') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'DTS') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 80, "column": 15}}}, "severity": "INFO"}
required for NTB functionality:

Check warning on line 81 in source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst

View workflow job for this annotation

GitHub Actions / vale

[vale] reported by reviewdog 🐶 [RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar. Raw Output: {"message": "[RedHat.Definitions] Define acronyms and abbreviations (such as 'NTB') on first occurrence if they're likely to be unfamiliar.", "location": {"path": "source/linux/Foundational_Components/Kernel/Kernel_Drivers/PCIe/PCIe_Backplane.rst", "range": {"start": {"line": 81, "column": 14}}}, "severity": "INFO"}

::
.. ifconfig:: CONFIG_part_variant in ('J784S4','J742S2')

arch/arm64/boot/dts/ti/k3-j721e-pcie-backplane.dtso
* :file:`arch/arm64/boot/dts/ti/k3-j784s4-evm-pcie0-pcie1-ep.dtso`

In order to apply the dts overlay file, the following command should be given
.. ifconfig:: CONFIG_part_variant not in ('J784S4','J742S2')

* :file:`arch/arm64/boot/dts/ti/k3-j721e-evm-pcie0-ep.dtso`
* :file:`arch/arm64/boot/dts/ti/k3-j721e-evm-pcie1-ep.dtso`

In order to apply the dts overlay files, the following command should be given
in u-boot prompt:

::
.. ifconfig:: CONFIG_part_variant in ('J784S4','J742S2')

#setenv name_overlays ti/k3-j721e-pcie-backplane.dtbo
.. code-block:: console

.. rubric:: *EP Side Configuration (J721E Backplane)*
setenv name_overlays ti/k3-j784s4-evm-pcie0-pcie1-ep.dtbo

.. ifconfig:: CONFIG_part_variant not in ('J784S4','J742S2')

.. code-block:: console

setenv name_overlays ti/k3-j721e-evm-pcie0-ep.dtbo ti/k3-j721e-evm-pcie1-ep.dtbo

.. rubric:: *EP Side Configuration (Backplane)*
:name: ep-side-configuration

.. rubric:: **Dip switch settings**
Expand All @@ -100,9 +119,9 @@
Both PCIe instances should be configured in EP mode by setting
PCIE_1L_MODE_SEL (switch 5) and PCIE_2L_MODE_SEL (switch 6) in sw3 to '1'.

.. rubric:: **8.x SDK (5.10 Kernel)**
.. rubric:: **EP Backplane Configuration Steps**

The following set of steps is required only for 5.10 Kernel
The following steps are required to configure the PCIe endpoints as a backplane:

.. rubric:: Creating pci-epf-ntb device

Expand All @@ -111,6 +130,7 @@

::

# modprobe pci_epf_ntb
# mount -t configfs none /sys/kernel/config
# cd /sys/kernel/config/pci_ep/
# mkdir functions/pci_epf_ntb/func1
Expand Down Expand Up @@ -151,15 +171,8 @@
# echo 0x104c > functions/pci_epf_ntb/func1/vendorid
# echo 0xb00d > functions/pci_epf_ntb/func1/deviceid

In order to configure NTB specific attributes, a new sub-directory to func1
should be created

::

# mkdir functions/pci_epf_ntb/func1/pci_epf_ntb.0/

The NTB function driver will populate this directory with various attributes
that can be configured by the user
The NTB function driver also populates func1/pci_epf_ntb.0 directory with
various attributes that can be configured by the user

::

Expand Down Expand Up @@ -188,13 +201,13 @@

::

# ln -s controllers/2900000.pcie-ep/ functions/pci-epf-ntb/func1/primary
# ln -s controllers/2910000.pcie-ep/ functions/pci-epf-ntb/func1/secondary
# ln -s controllers/2900000.pcie-ep/ functions/pci_epf_ntb/func1/primary
# ln -s controllers/2910000.pcie-ep/ functions/pci_epf_ntb/func1/secondary

Once the above step is completed, both the PCI endpoint controllers are ready to
establish a link with the host.

.. rubric:: Start the Link: 7.x and 8.x SDK (5.4 and 5.10 Kernel)
.. rubric:: Start the Link:

In order for the endpoint device to establish a link with the host, the _start_
field should be populated with '1'. For NTB, both the PCI endpoint controllers
Expand All @@ -205,9 +218,6 @@
# echo 1 > controllers/2900000.pcie-ep/start
# echo 1 > controllers/2910000.pcie-ep/start

(PCIe2 can also be configured for NTB, but that is not
tested yet).

.. rubric:: *RC Side Configuration*
:name: rc-side-configuration

Expand All @@ -221,6 +231,7 @@

::

modprobe ntb_hw_epf
echo 0000:01:00.0 > /sys/bus/pci/devices/0000\:01\:00.0/driver/unbind

After unbinding from existing driver, it should be bound to ntb_hw_epf driver.
Expand All @@ -241,14 +252,14 @@
.. rubric:: **Kernel Configs**
:name: kernel-configs

.. rubric:: *EP Side (J721E Backplane)*
.. rubric:: *EP Side (Backplane)*
:name: ep-side-configs

::

CONFIG_PCI_ENDPOINT=y
CONFIG_PCI_ENDPOINT_CONFIGFS=y
CONFIG_PCI_EPF_NTB=y
CONFIG_PCI_EPF_NTB=m
CONFIG_PCI_J721E=y
CONFIG_PCIE_CADENCE=y
CONFIG_PCIE_CADENCE_EP=y
Expand All @@ -274,5 +285,5 @@

::

<Processor_SDK_install_dir>/board-support/linux-[ver]/Documentation/PCI/endpoint/pci-test-ntb.txt
<Processor_SDK_install_dir>/board-support/linux-[ver]/Documentation/PCI/endpoint/pci-ntb-function.rst

Original file line number Diff line number Diff line change
Expand Up @@ -197,6 +197,20 @@ Following is a brief explanation of layers shown in the diagram:
2. 1 MB IO region
3. Remaining region (4 GB - 1 MB - 4 KB) as 32-bit Non-Prefetchable MEM

.. note::

If the root complex is connected to an endpoint with virtual functions,
and the kernel panics during enumeration, add 'pci=realloc' to bootargs
at the U-Boot prompt using the following command:

.. code-block:: console

setenv optargs 'pci=realloc'

The 'pci=realloc' parameter instructs the Linux kernel to reallocate PCI
bridge resources. This helps resolve resource conflicts during enumeration
of PCIe devices by allowing the kernel to reassign memory and I/O addresses.

.. rubric:: **Testing Details**
:name: testing-details

Expand Down
Loading