| 				PCI TEST | 
 | 		    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] |