[PATCH 1/3] spi/qspi: Add memory mapped read support.
Brian Norris
computersforpeace at gmail.com
Tue Oct 15 11:01:42 PDT 2013
Hi Sourav,
On Tue, Oct 15, 2013 at 06:53:46PM +0530, Sourav Poddar wrote:
> On Tuesday 15 October 2013 06:16 PM, Mark Brown wrote:
> >On Tue, Oct 15, 2013 at 05:19:07PM +0530, Sourav Poddar wrote:
> >>On Tuesday 15 October 2013 04:46 PM, Mark Brown wrote:
> >>>Can you fix this by enabling the clock is enabled when you return the
> >>>buffer to the MTD layer and then disabling the clock when the buffer is
> >>>released?
> >>Sorry, I did not get you here. With memory mapped read, there is no
> >>buffer exchanged, everything takes place at the mtd layer only, what gets
> >>exchanged is just the memory mapped address.
> >The buffer is the memory mapped address - part of getting the address
> >should be preparing the hardware for it.
> >
> >> if (spi->mode&& SPI_RX_MMAP) {
> >> printk("memory mapped mode set\n");
> >>- flash->mmap_read = true;
> >>+ flash->mmap_read = spi->memory_map;
> >So this probably needs to be a function call to get the buffer (and a
> >corresponding one to free it).
> So, the flow can be something like this:
>
> drivers/mtd/devices/m25p80.c
> get_flash_buf()
> {
> lock();
>
> t[0] = GET_BUFFER;
> t[1] = buf;
> ......
>
> spi_sync();
>
> unlock();
> }
>
> mtd_read
> {
> get_flash_buf();
>
> if (flash->buf) {
> memcpy();
> return 0;
> }
> }
>
> Not sure, if free buf is needed as devm_* variant is used to allocate that
> memory.
I believe you are misplacing the discussion of devm_* variants. devm_*
is only useful for resources allocated/mapped released/unmapped at probe
and release time. They do not magically remove the burden of resource
management for I/O and other dynamic operations.
In this case, you are not working at probe time, and you are not
actually allocating any memory--your 'get_flash_buf()' and corresponding
'release_flash_buf()' would not be allocating memory but would be
ensuring that the HW and driver is in the correct state.
Brian
More information about the linux-mtd
mailing list