On 09/09/2013 04:45 PM, Mark Brown wrote:
On Mon, Sep 09, 2013 at 04:09:23PM +0200, Lukasz Czerwinski wrote:
The spi-s3c64xx currently doesn't support transfers from non-contiguous
client buffers.
This patch adds two coherent buffers which allow transfers from
non-contiguous client buffers without extra coherent memory allocation
in the client driver.
Buffer size is hardcoded to 16kB for Tx/Rx. Client drivers shouldn't
exceed that value.
This seems like a very low limit to have, consider things like firmware
downloads for example. It seems reasonable to have a preallocated small
buffer but there should be some fallback for larger transfer sizes.
I have tested my modification with different buffer sizes with S5C73M3
driver (355560 B upload). I obtained following upload times:
16kB buffer:
- 83.972 ms
- 79.196 ms
- 79.432 ms
128kB buffer:
- 74.449 ms
- 80.719 ms
- 75.599 ms
For 256kB I obtained similar results as in 128kB case. Normally
non-interrupted SPI transfer should take 56ms (50MHz). Performance loss
is approximately about 6% between 16kB and 128KB buffer. I my opinion
there are no need to use bigger buffers.
I propose add extra module parameter which allows to change buffer size.
I also didn't notice any checks in the code for the length of transfers
so this will corrupt memory if a client driver tries to transfer more
than the preallocated buffer as things stand.
Right, I will add that.
Thanks
Lukasz
--
To unsubscribe from this list: send the line "unsubscribe linux-samsung-soc" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html