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