Generic userspace interface for PCI Endpoint mode - any interest?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



I am working on a generic driver interface for devices which are operating
as a PCI endpoint. This driver assumes a device acting as a PCI endpoint
1) has one or more BARs that it exposes to the root complex, that can be
programmed to map in the device's memory space.
2) has zero or more outbound memory windows that can be programmed to
allow the device to perform bus mastering operations into the host's PCI
space.
3) Has the ability to generate interrupts to the host processor
4) has the ability to receive interrupts from the host processor.

The intent is the device driver will allow user space code to:
1) Map BARs to local memory, such that the host processor can, by writing
to/reading from the device's BARs, access memory on the device. These
memory regions will be mmap'able from the device's user space to allow a
user space program to respond to those operations.
2) Map PCI space to local address space, to change those mappings as
needed, and to mmap those mappings into the device's user space.
3) to dispatch interrupts received from the host device via sysfs
attributes which can be select()'ed on.
4) To allow user space to write to attributes to generate interrupts on
the host processor.

My first target is the Freescale MPC8641D, but I'd like to make this
interface generic enough that, while the specifics of the driver would be
tied to the hardware, the user space interface would be generic.

I've already gotten clearance from my employer to release this driver
under GPL2.0 and to try to push it back upstream when it's ready.

I've not seen anything like this out there already, but if I am
re-inventing the wheel I'd rather find out now than later.

So, it there any interest in this?


--
To unsubscribe from this list: send the line "unsubscribe linux-pci" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [DMA Engine]     [Linux Coverity]     [Linux USB]     [Video for Linux]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Greybus]

  Powered by Linux