[PATCH v8 1/1] PRUSS UIO driver support
From: Hans J. Koch <hidden>
Date: 2011-03-02 20:11:25
Also in:
lkml
On Wed, Mar 02, 2011 at 05:08:06PM +0530, Pratheesh Gangadhar wrote:
This patch implements PRUSS (Programmable Real-time Unit Sub System) UIO driver which exports SOC resources associated with PRUSS like I/O, memories and IRQs to user space. PRUSS is dual 32-bit RISC processors which is efficient in performing embedded tasks that require manipulation of packed memory mapped data structures and handling system events that have tight real time constraints. This driver is currently supported on Texas Instruments DA850, AM18xx and OMAP-L138 devices. For example, PRUSS runs firmware for real-time critical industrial communication data link layer and communicates with application stack running in user space via shared memory and IRQs. Signed-off-by: Pratheesh Gangadhar <redacted> Reviewed-by: Thomas Gleixner <redacted> --- drivers/uio/Kconfig | 17 ++++ drivers/uio/Makefile | 1 + drivers/uio/uio_pruss.c | 226 +++++++++++++++++++++++++++++++++++++++++++++++ 3 files changed, 244 insertions(+), 0 deletions(-) create mode 100644 drivers/uio/uio_pruss.c
That looks good now, I don't see any further issues. But you should address Arnd's comment about that __iomem stuff. It's a bit nit-picking, but he's right, ioremap() returns void __iomem *, and uio_mem.internal_addr also has that type.
+static struct uio_info *info; +static dma_addr_t sram_paddr, ddr_paddr; +static void *prussio_vaddr, *sram_vaddr, *ddr_vaddr;
So the correct thing would be static void __iomem *prussio_vaddr; static void *sram_vaddr, *ddr_vaddr; Thanks, Hans