123456789101112131415161718192021222324252627282930313233343536373839404142 |
- From 3fcc36962c32ad0af2d5904103e2b2b824b6b1aa Mon Sep 17 00:00:00 2001
- From: Jonas Gorski <[email protected]>
- Date: Sat, 4 Feb 2017 12:32:59 +0100
- Subject: [PATCH 2/8] spi/bcm63xx: make spi subsystem aware of message size
- limits
- The bcm63xx LS SPI controller does not allow manual control of the CS
- lines and will toggle it automatically before after sending data, so we
- are limited to messages that fit in the FIFO buffer. Since the CS lines
- aren't available as GPIOs either, we will need to make slave drivers
- aware of this limitation and handle it accordingly.
- Signed-off-by: Jonas Gorski <[email protected]>
- ---
- drivers/spi/spi-bcm63xx.c | 9 +++++++++
- 1 file changed, 9 insertions(+)
- --- a/drivers/spi/spi-bcm63xx.c
- +++ b/drivers/spi/spi-bcm63xx.c
- @@ -428,6 +428,13 @@ static irqreturn_t bcm63xx_spi_interrupt
- return IRQ_HANDLED;
- }
-
- +static size_t bcm63xx_spi_max_length(struct spi_device *spi)
- +{
- + struct bcm63xx_spi *bs = spi_master_get_devdata(spi->master);
- +
- + return bs->fifo_size;
- +}
- +
- static const unsigned long bcm6348_spi_reg_offsets[] = {
- [SPI_CMD] = SPI_6348_CMD,
- [SPI_INT_STATUS] = SPI_6348_INT_STATUS,
- @@ -541,6 +548,8 @@ static int bcm63xx_spi_probe(struct plat
- master->transfer_one_message = bcm63xx_spi_transfer_one;
- master->mode_bits = MODEBITS;
- master->bits_per_word_mask = SPI_BPW_MASK(8);
- + master->max_transfer_size = bcm63xx_spi_max_length;
- + master->max_message_size = bcm63xx_spi_max_length;
- master->auto_runtime_pm = true;
- bs->msg_type_shift = bs->reg_offsets[SPI_MSG_TYPE_SHIFT];
- bs->msg_ctl_width = bs->reg_offsets[SPI_MSG_CTL_WIDTH];
|