diff options
author | Michal Suchanek <hramrach@gmail.com> | 2016-06-13 13:46:50 -0400 |
---|---|---|
committer | Mark Brown <broonie@kernel.org> | 2016-06-14 05:04:42 -0400 |
commit | 794912cff6dba8b5e93948243299bb0b2cb11277 (patch) | |
tree | ae2ee6e5e2a4dac0b8e98aea1697adc0fee73329 /drivers/spi | |
parent | 1a695a905c18548062509178b98bc91e67510864 (diff) |
spi: sunxi: expose maximum transfer size limit
The sun4i spi hardware can trasfer at most 63 bytes of data without DMA
support so report the limitation. Same for sun6i.
Signed-off-by: Michal Suchanek <hramrach@gmail.com>
Acked-by: Maxime Ripard <maxime.ripard@free-electrons.com>
Signed-off-by: Mark Brown <broonie@kernel.org>
Diffstat (limited to 'drivers/spi')
-rw-r--r-- | drivers/spi/spi-sun4i.c | 6 | ||||
-rw-r--r-- | drivers/spi/spi-sun6i.c | 5 |
2 files changed, 11 insertions, 0 deletions
diff --git a/drivers/spi/spi-sun4i.c b/drivers/spi/spi-sun4i.c index 1ddd9e2309b6..07ce7c97750e 100644 --- a/drivers/spi/spi-sun4i.c +++ b/drivers/spi/spi-sun4i.c | |||
@@ -167,6 +167,11 @@ static void sun4i_spi_set_cs(struct spi_device *spi, bool enable) | |||
167 | sun4i_spi_write(sspi, SUN4I_CTL_REG, reg); | 167 | sun4i_spi_write(sspi, SUN4I_CTL_REG, reg); |
168 | } | 168 | } |
169 | 169 | ||
170 | static size_t sun4i_spi_max_transfer_size(struct spi_device *spi) | ||
171 | { | ||
172 | return SUN4I_FIFO_DEPTH - 1; | ||
173 | } | ||
174 | |||
170 | static int sun4i_spi_transfer_one(struct spi_master *master, | 175 | static int sun4i_spi_transfer_one(struct spi_master *master, |
171 | struct spi_device *spi, | 176 | struct spi_device *spi, |
172 | struct spi_transfer *tfr) | 177 | struct spi_transfer *tfr) |
@@ -394,6 +399,7 @@ static int sun4i_spi_probe(struct platform_device *pdev) | |||
394 | master->bits_per_word_mask = SPI_BPW_MASK(8); | 399 | master->bits_per_word_mask = SPI_BPW_MASK(8); |
395 | master->dev.of_node = pdev->dev.of_node; | 400 | master->dev.of_node = pdev->dev.of_node; |
396 | master->auto_runtime_pm = true; | 401 | master->auto_runtime_pm = true; |
402 | master->max_transfer_size = sun4i_spi_max_transfer_size; | ||
397 | 403 | ||
398 | sspi->hclk = devm_clk_get(&pdev->dev, "ahb"); | 404 | sspi->hclk = devm_clk_get(&pdev->dev, "ahb"); |
399 | if (IS_ERR(sspi->hclk)) { | 405 | if (IS_ERR(sspi->hclk)) { |
diff --git a/drivers/spi/spi-sun6i.c b/drivers/spi/spi-sun6i.c index 42e2c4bd690a..6fa6ff12ae61 100644 --- a/drivers/spi/spi-sun6i.c +++ b/drivers/spi/spi-sun6i.c | |||
@@ -153,6 +153,10 @@ static void sun6i_spi_set_cs(struct spi_device *spi, bool enable) | |||
153 | sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg); | 153 | sun6i_spi_write(sspi, SUN6I_TFR_CTL_REG, reg); |
154 | } | 154 | } |
155 | 155 | ||
156 | static size_t sun6i_spi_max_transfer_size(struct spi_device *spi) | ||
157 | { | ||
158 | return SUN6I_FIFO_DEPTH - 1; | ||
159 | } | ||
156 | 160 | ||
157 | static int sun6i_spi_transfer_one(struct spi_master *master, | 161 | static int sun6i_spi_transfer_one(struct spi_master *master, |
158 | struct spi_device *spi, | 162 | struct spi_device *spi, |
@@ -393,6 +397,7 @@ static int sun6i_spi_probe(struct platform_device *pdev) | |||
393 | master->bits_per_word_mask = SPI_BPW_MASK(8); | 397 | master->bits_per_word_mask = SPI_BPW_MASK(8); |
394 | master->dev.of_node = pdev->dev.of_node; | 398 | master->dev.of_node = pdev->dev.of_node; |
395 | master->auto_runtime_pm = true; | 399 | master->auto_runtime_pm = true; |
400 | master->max_transfer_size = sun6i_spi_max_transfer_size; | ||
396 | 401 | ||
397 | sspi->hclk = devm_clk_get(&pdev->dev, "ahb"); | 402 | sspi->hclk = devm_clk_get(&pdev->dev, "ahb"); |
398 | if (IS_ERR(sspi->hclk)) { | 403 | if (IS_ERR(sspi->hclk)) { |