On 14:06 Fri 15 Apr , Russell King - ARM Linux wrote: > This is work in progress. > > We have two SoCs using SRAM, both with their own allocation systems, > and both with their own ways of copying functions into the SRAM. > > Let's unify this before we have additional SoCs re-implementing this > obviously common functionality themselves. > > Unfortunately, we end up with code growth through doing this, but that > will become a win when we have another SoC using this (which I know > there's at least one in the pipeline). > > One of the considerations here is that we can easily convert sram-pool.c > to hook into device tree stuff, which can tell the sram allocator: > - physical address of sram > - size of sram > - allocation granularity > and then we just need to ensure that it is appropriately mapped. > > This uses the physical address, and unlike Davinci's dma address usage, > it always wants to have the physical address, and will always return > the corresponding physical address when passed that pointer. > > OMAP could probably do with some more work to make the omapfb and other > allocations use the sram allocator, rather than hooking in before the > sram allocator is initialized - and then further cleanups so that we > have an initialization function which just does > > sram_create(phys, size) > virt = map sram(phys, size) > create sram pool(virt, phys, size, min_alloc_order) > > Another question is whether we should allow multiple SRAM pools or not - > this code does allow multiple pools, but so far we only have one pool > per SoC. Overdesign? Maybe, but it prevents SoCs wanting to duplicate > it if they want to partition the SRAM, or have peripheral-local SRAMs. > > Lastly, uio_pruss should probably take the SRAM pool pointer via > platform data so that it doesn't have to include Davinci specific > includes. > > Signed-off-by: Russell King <rmk+kernel@xxxxxxxxxxxxxxxx> Hi, I also work on it for at91 and already have some patch in the mm for this [PATCH] genalloc: add support to specify the physical address so now you can do this as I do on at91 will send the patch after static struct map_desc at91sam9g20_sram_desc[] __initdata = { { .virtual = AT91_IO_VIRT_BASE - AT91SAM9G20_SRAM_SIZE, .pfn = __phys_to_pfn(AT91SAM9G20_SRAM_BASE), .length = AT91SAM9G20_SRAM_SIZE, .type = MT_DEVICE, } }; sram_pool = gen_pool_create(2, -1); gen_pool_add_virt(sram_pool, io_desc->virtual __pfn_to_phys(io_desc->pfn), io_desc->length, -1) and to get the physical address phys = gen_pool_virt_to_phys(sram_pool, virt); Best Resgards, J. -- To unsubscribe from this list: send the line "unsubscribe linux-omap" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html