| .. SPDX-License-Identifier: GPL-2.0 |
| |
| ================= |
| PCI Test Function |
| ================= |
| |
| :Author: Kishon Vijay Abraham I <kishon@ti.com> |
| |
| Traditionally PCI RC has always been validated by using standard |
| PCI cards like ethernet PCI cards or USB PCI cards or SATA PCI cards. |
| However with the addition of EP-core in linux kernel, it is possible |
| to configure a PCI controller that can operate in EP mode to work as |
| a test device. |
| |
| The PCI endpoint test device is a virtual device (defined in software) |
| used to test the endpoint functionality and serve as a sample driver |
| for other PCI endpoint devices (to use the EP framework). |
| |
| The PCI endpoint test device has the following registers: |
| |
| 1) PCI_ENDPOINT_TEST_MAGIC |
| 2) PCI_ENDPOINT_TEST_COMMAND |
| 3) PCI_ENDPOINT_TEST_STATUS |
| 4) PCI_ENDPOINT_TEST_SRC_ADDR |
| 5) PCI_ENDPOINT_TEST_DST_ADDR |
| 6) PCI_ENDPOINT_TEST_SIZE |
| 7) PCI_ENDPOINT_TEST_CHECKSUM |
| 8) PCI_ENDPOINT_TEST_IRQ_TYPE |
| 9) PCI_ENDPOINT_TEST_IRQ_NUMBER |
| |
| * PCI_ENDPOINT_TEST_MAGIC |
| |
| This register will be used to test BAR0. A known pattern will be written |
| and read back from MAGIC register to verify BAR0. |
| |
| * PCI_ENDPOINT_TEST_COMMAND |
| |
| This register will be used by the host driver to indicate the function |
| that the endpoint device must perform. |
| |
| ======== ================================================================ |
| Bitfield Description |
| ======== ================================================================ |
| Bit 0 raise legacy IRQ |
| Bit 1 raise MSI IRQ |
| Bit 2 raise MSI-X IRQ |
| Bit 3 read command (read data from RC buffer) |
| Bit 4 write command (write data to RC buffer) |
| Bit 5 copy command (copy data from one RC buffer to another RC buffer) |
| ======== ================================================================ |
| |
| * PCI_ENDPOINT_TEST_STATUS |
| |
| This register reflects the status of the PCI endpoint device. |
| |
| ======== ============================== |
| Bitfield Description |
| ======== ============================== |
| Bit 0 read success |
| Bit 1 read fail |
| Bit 2 write success |
| Bit 3 write fail |
| Bit 4 copy success |
| Bit 5 copy fail |
| Bit 6 IRQ raised |
| Bit 7 source address is invalid |
| Bit 8 destination address is invalid |
| ======== ============================== |
| |
| * PCI_ENDPOINT_TEST_SRC_ADDR |
| |
| This register contains the source address (RC buffer address) for the |
| COPY/READ command. |
| |
| * PCI_ENDPOINT_TEST_DST_ADDR |
| |
| This register contains the destination address (RC buffer address) for |
| the COPY/WRITE command. |
| |
| * PCI_ENDPOINT_TEST_IRQ_TYPE |
| |
| This register contains the interrupt type (Legacy/MSI) triggered |
| for the READ/WRITE/COPY and raise IRQ (Legacy/MSI) commands. |
| |
| Possible types: |
| |
| ====== == |
| Legacy 0 |
| MSI 1 |
| MSI-X 2 |
| ====== == |
| |
| * PCI_ENDPOINT_TEST_IRQ_NUMBER |
| |
| This register contains the triggered ID interrupt. |
| |
| Admissible values: |
| |
| ====== =========== |
| Legacy 0 |
| MSI [1 .. 32] |
| MSI-X [1 .. 2048] |
| ====== =========== |