spi: sun6i: add quirk for in-controller clock divider
authorMaksim Kiselev <bigunclemax@gmail.com>
Wed, 10 May 2023 08:11:10 +0000 (11:11 +0300)
committerMark Brown <broonie@kernel.org>
Fri, 12 May 2023 04:07:44 +0000 (13:07 +0900)
commit8e886ac838ef12f6994ed9b13ab87784c4f0bc35
treec04446605f6f10802e72b2c1bdba2d10b6184f29
parentb00c0d8932f1e7e36570edf0f000c64399e985e0
spi: sun6i: add quirk for in-controller clock divider

Previously SPI controllers in Allwinner SoCs has a clock divider inside.
However now the clock divider is removed and to set the transfer clock
rate it's only needed to set the SPI module clock to the target value
and configure a proper work mode.

According to the datasheet there are three work modes:

| SPI Sample Mode         | SDM(bit13) | SDC(bit11) | Run Clock |
|-------------------------|------------|------------|-----------|
| normal sample           |      1     |      0     | <= 24 MHz |
| delay half cycle sample |      0     |      0     | <= 40 MHz |
| delay one cycle sample  |      0     |      1     | >= 80 MHz |

Add a quirk for this kind of SPI controllers.

Co-developed-by: Icenowy Zheng <icenowy@aosc.io
Signed-off-by: Maksim Kiselev <bigunclemax@gmail.com
Reviewed-by: Jernej Skrabec <jernej.skrabec@gmail.com
Reviewed-by: Andre Przywara <andre.przywara@arm.com
Link: https://lore.kernel.org/r/20230510081121.3463710-4-bigunclemax@gmail.com
Signed-off-by: Mark Brown <broonie@kernel.org
drivers/spi/spi-sun6i.c