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+ker...@arm.linux.org.uk>
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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to