]> git.itanic.dy.fi Git - linux-stable/commit
spi: fsl-cpm: Use 16 bit mode for large transfers with even size
authorChristophe Leroy <christophe.leroy@csgroup.eu>
Sat, 1 Apr 2023 17:59:48 +0000 (19:59 +0200)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 17 May 2023 12:02:08 +0000 (14:02 +0200)
commit36a6d0f66c874666caf4e8be155b1be30f6231be
tree2b57a5492f3c018b276da85bce8f75a4dc60ebf5
parent421f0bacd77222af296f6d0d4407b18e6dd3b086
spi: fsl-cpm: Use 16 bit mode for large transfers with even size

commit fc96ec826bced75cc6b9c07a4ac44bbf651337ab upstream.

On CPM, the RISC core is a lot more efficiant when doing transfers
in 16-bits chunks than in 8-bits chunks, but unfortunately the
words need to be byte swapped as seen in a previous commit.

So, for large tranfers with an even size, allocate a temporary tx
buffer and byte-swap data before and after transfer.

This change allows setting higher speed for transfer. For instance
on an MPC 8xx (CPM1 comms RISC processor), the documentation tells
that transfer in byte mode at 1 kbit/s uses 0.200% of CPM load
at 25 MHz while a word transfer at the same speed uses 0.032%
of CPM load. This means the speed can be 6 times higher in
word mode for the same CPM load.

For the time being, only do it on CPM1 as there must be a
trade-off between the CPM load reduction and the CPU load required
to byte swap the data.

Signed-off-by: Christophe Leroy <christophe.leroy@csgroup.eu>
Link: https://lore.kernel.org/r/f2e981f20f92dd28983c3949702a09248c23845c.1680371809.git.christophe.leroy@csgroup.eu
Signed-off-by: Mark Brown <broonie@kernel.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/spi/spi-fsl-cpm.c
drivers/spi/spi-fsl-spi.c