瀏覽代碼

spi: a3700: Set frequency limits at startup

Armada 3700 SPI controller has an internal clock divider which can
divide the parent clock frequency by up to 30.

This patch sets the limits in the spi_controller fields so that we can
detect when a non-supported frequency is requested by a device for a
transfer.

Signed-off-by: Maxime Chevallier <maxime.chevallier@smile.fr>
Signed-off-by: Mark Brown <broonie@kernel.org>
Maxime Chevallier 7 年之前
父節點
當前提交
abf3a49e50
共有 1 個文件被更改,包括 7 次插入0 次删除
  1. 7 0
      drivers/spi/spi-armada-3700.c

+ 7 - 0
drivers/spi/spi-armada-3700.c

@@ -27,6 +27,8 @@
 
 
 #define DRIVER_NAME			"armada_3700_spi"
 #define DRIVER_NAME			"armada_3700_spi"
 
 
+#define A3700_SPI_MAX_SPEED_HZ		100000000
+#define A3700_SPI_MAX_PRESCALE		30
 #define A3700_SPI_TIMEOUT		10
 #define A3700_SPI_TIMEOUT		10
 
 
 /* SPI Register Offest */
 /* SPI Register Offest */
@@ -815,6 +817,11 @@ static int a3700_spi_probe(struct platform_device *pdev)
 		goto error;
 		goto error;
 	}
 	}
 
 
+	master->max_speed_hz = min_t(unsigned long, A3700_SPI_MAX_SPEED_HZ,
+					clk_get_rate(spi->clk));
+	master->min_speed_hz = DIV_ROUND_UP(clk_get_rate(spi->clk),
+						A3700_SPI_MAX_PRESCALE);
+
 	ret = a3700_spi_init(spi);
 	ret = a3700_spi_init(spi);
 	if (ret)
 	if (ret)
 		goto error_clk;
 		goto error_clk;