Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c2e00e31 authored by Gustavo Pimentel's avatar Gustavo Pimentel Committed by Lorenzo Pieralisi
Browse files

pci-epf-test/pci_endpoint_test: Add MSI-X support



Add MSI-X support and update driver documentation accordingly.

Signed-off-by: default avatarGustavo Pimentel <gustavo.pimentel@synopsys.com>
Signed-off-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: default avatarKishon Vijay Abraham I <kishon@ti.com>
parent 9133e394
Loading
Loading
Loading
Loading
+2 −2
Original line number Diff line number Diff line
@@ -44,7 +44,7 @@ by the PCI controller driver.
	 * clear_bar: ops to reset the BAR
	 * alloc_addr_space: ops to allocate in PCI controller address space
	 * free_addr_space: ops to free the allocated address space
	 * raise_irq: ops to raise a legacy or MSI interrupt
	 * raise_irq: ops to raise a legacy, MSI or MSI-X interrupt
	 * start: ops to start the PCI link
	 * stop: ops to stop the PCI link

@@ -96,7 +96,7 @@ by the PCI endpoint function driver.
*) pci_epc_raise_irq()

   The PCI endpoint function driver should use pci_epc_raise_irq() to raise
   Legacy Interrupt or MSI Interrupt.
   Legacy Interrupt, MSI or MSI-X Interrupt.

*) pci_epc_mem_alloc_addr()

+3 −1
Original line number Diff line number Diff line
@@ -36,7 +36,7 @@ that the endpoint device must perform.
Bitfield Description:
  Bit 0		: raise legacy IRQ
  Bit 1		: raise MSI IRQ
  Bit 2		: raise MSI-X IRQ (reserved for future implementation)
  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
@@ -75,6 +75,7 @@ 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

@@ -83,3 +84,4 @@ This register contains the triggered ID interrupt.
Admissible values:
 - Legacy	: 0
 - MSI		: [1 .. 32]
 - MSI-X	: [1 .. 2048]
+19 −3
Original line number Diff line number Diff line
@@ -45,9 +45,9 @@ The PCI endpoint framework populates the directory with the following
configurable fields.

	# ls functions/pci_epf_test/func1
	  baseclass_code	interrupt_pin	revid		subsys_vendor_id
	  cache_line_size	msi_interrupts	subclass_code	vendorid
	  deviceid          	progif_code	subsys_id
	  baseclass_code	interrupt_pin	progif_code	subsys_id
	  cache_line_size	msi_interrupts	revid		subsys_vendorid
	  deviceid          	msix_interrupts	subclass_code	vendorid

The PCI endpoint function driver populates these entries with default values
when the device is bound to the driver. The pci-epf-test driver populates
@@ -67,6 +67,7 @@ device, the following commands can be used.
	# echo 0x104c > functions/pci_epf_test/func1/vendorid
	# echo 0xb500 > functions/pci_epf_test/func1/deviceid
	# echo 16 > functions/pci_epf_test/func1/msi_interrupts
	# echo 8 > functions/pci_epf_test/func1/msix_interrupts

1.5 Binding pci-epf-test Device to EP Controller

@@ -153,6 +154,21 @@ following commands.
	MSI30:          NOT OKAY
	MSI31:          NOT OKAY
	MSI32:          NOT OKAY
	MSIX1:          OKAY
	MSIX2:          OKAY
	MSIX3:          OKAY
	MSIX4:          OKAY
	MSIX5:          OKAY
	MSIX6:          OKAY
	MSIX7:          OKAY
	MSIX8:          OKAY
	MSIX9:          NOT OKAY
	MSIX10:         NOT OKAY
	MSIX11:         NOT OKAY
	MSIX12:         NOT OKAY
	MSIX13:         NOT OKAY
	[...]
	MSIX2048:       NOT OKAY

	Read Tests

+1 −0
Original line number Diff line number Diff line
@@ -166,6 +166,7 @@ Code Seq#(hex) Include File Comments
'P'	all	linux/soundcard.h	conflict!
'P'	60-6F	sound/sscape_ioctl.h	conflict!
'P'	00-0F	drivers/usb/class/usblp.c	conflict!
'P'	01-07	drivers/misc/pci_endpoint_test.c	conflict!
'Q'	all	linux/soundcard.h
'R'	00-1F	linux/random.h		conflict!
'R'	01	linux/rfkill.h		conflict!
+3 −0
Original line number Diff line number Diff line
@@ -10,6 +10,7 @@ The PCI driver for the test device performs the following tests
	*) verifying addresses programmed in BAR
	*) raise legacy IRQ
	*) raise MSI IRQ
	*) raise MSI-X IRQ
	*) read data
	*) write data
	*) copy data
@@ -25,6 +26,8 @@ ioctl
 PCITEST_LEGACY_IRQ: Tests legacy IRQ
 PCITEST_MSI: Tests message signalled interrupts. The MSI number
	      to be tested should be passed as argument.
 PCITEST_MSIX: Tests message signalled interrupts. The MSI-X number
	      to be tested should be passed as argument.
 PCITEST_WRITE: Perform write tests. The size of the buffer should be passed
		as argument.
 PCITEST_READ: Perform read tests. The size of the buffer should be passed
Loading