diff options
author | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-24 16:13:28 -0400 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2015-07-24 16:13:28 -0400 |
commit | 365c83c3f56e5c7b161c041a487170f9a4840523 (patch) | |
tree | 234b12840732de29806b349c1d13e2813ae7f829 | |
parent | 5b7f00a5967a3fdd8654ba6926930e672710ef63 (diff) | |
parent | 0c38ec716cdc0397f5225047c33a3144da93f5d8 (diff) |
Merge tag 'spi-fix-v4.2-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi
Pull spi fixes from Mark Brown:
"A small collection of pretty much unremarkable driver specific fixes
here plus the addition of a new device ID to spidev which requires no
other code changes"
* tag 'spi-fix-v4.2-rc3' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
spi: imx: Fix small DMA transfers
spi: zynq: missing break statement
spi: SPI_ZYNQMP_GQSPI should depend on HAS_DMA
spi: spidev: add compatible value for LTC2488
spi: img-spfi: fix support for speeds up to 1/4th input clock
-rw-r--r-- | drivers/spi/Kconfig | 2 | ||||
-rw-r--r-- | drivers/spi/spi-img-spfi.c | 2 | ||||
-rw-r--r-- | drivers/spi/spi-imx.c | 5 | ||||
-rw-r--r-- | drivers/spi/spi-zynqmp-gqspi.c | 1 | ||||
-rw-r--r-- | drivers/spi/spidev.c | 1 |
5 files changed, 8 insertions, 3 deletions
diff --git a/drivers/spi/Kconfig b/drivers/spi/Kconfig index 0cae1694014d..b0f30fb68914 100644 --- a/drivers/spi/Kconfig +++ b/drivers/spi/Kconfig | |||
@@ -612,7 +612,7 @@ config SPI_XTENSA_XTFPGA | |||
612 | 612 | ||
613 | config SPI_ZYNQMP_GQSPI | 613 | config SPI_ZYNQMP_GQSPI |
614 | tristate "Xilinx ZynqMP GQSPI controller" | 614 | tristate "Xilinx ZynqMP GQSPI controller" |
615 | depends on SPI_MASTER | 615 | depends on SPI_MASTER && HAS_DMA |
616 | help | 616 | help |
617 | Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC. | 617 | Enables Xilinx GQSPI controller driver for Zynq UltraScale+ MPSoC. |
618 | 618 | ||
diff --git a/drivers/spi/spi-img-spfi.c b/drivers/spi/spi-img-spfi.c index 788e2b176a4f..acce90ac7371 100644 --- a/drivers/spi/spi-img-spfi.c +++ b/drivers/spi/spi-img-spfi.c | |||
@@ -40,6 +40,7 @@ | |||
40 | #define SPFI_CONTROL_SOFT_RESET BIT(11) | 40 | #define SPFI_CONTROL_SOFT_RESET BIT(11) |
41 | #define SPFI_CONTROL_SEND_DMA BIT(10) | 41 | #define SPFI_CONTROL_SEND_DMA BIT(10) |
42 | #define SPFI_CONTROL_GET_DMA BIT(9) | 42 | #define SPFI_CONTROL_GET_DMA BIT(9) |
43 | #define SPFI_CONTROL_SE BIT(8) | ||
43 | #define SPFI_CONTROL_TMODE_SHIFT 5 | 44 | #define SPFI_CONTROL_TMODE_SHIFT 5 |
44 | #define SPFI_CONTROL_TMODE_MASK 0x7 | 45 | #define SPFI_CONTROL_TMODE_MASK 0x7 |
45 | #define SPFI_CONTROL_TMODE_SINGLE 0 | 46 | #define SPFI_CONTROL_TMODE_SINGLE 0 |
@@ -491,6 +492,7 @@ static void img_spfi_config(struct spi_master *master, struct spi_device *spi, | |||
491 | else if (xfer->tx_nbits == SPI_NBITS_QUAD && | 492 | else if (xfer->tx_nbits == SPI_NBITS_QUAD && |
492 | xfer->rx_nbits == SPI_NBITS_QUAD) | 493 | xfer->rx_nbits == SPI_NBITS_QUAD) |
493 | val |= SPFI_CONTROL_TMODE_QUAD << SPFI_CONTROL_TMODE_SHIFT; | 494 | val |= SPFI_CONTROL_TMODE_QUAD << SPFI_CONTROL_TMODE_SHIFT; |
495 | val |= SPFI_CONTROL_SE; | ||
494 | spfi_writel(spfi, val, SPFI_CONTROL); | 496 | spfi_writel(spfi, val, SPFI_CONTROL); |
495 | } | 497 | } |
496 | 498 | ||
diff --git a/drivers/spi/spi-imx.c b/drivers/spi/spi-imx.c index eb7d3a6fb14c..f9deb84e4e55 100644 --- a/drivers/spi/spi-imx.c +++ b/drivers/spi/spi-imx.c | |||
@@ -201,8 +201,9 @@ static bool spi_imx_can_dma(struct spi_master *master, struct spi_device *spi, | |||
201 | { | 201 | { |
202 | struct spi_imx_data *spi_imx = spi_master_get_devdata(master); | 202 | struct spi_imx_data *spi_imx = spi_master_get_devdata(master); |
203 | 203 | ||
204 | if (spi_imx->dma_is_inited && (transfer->len > spi_imx->rx_wml) | 204 | if (spi_imx->dma_is_inited |
205 | && (transfer->len > spi_imx->tx_wml)) | 205 | && transfer->len > spi_imx->rx_wml * sizeof(u32) |
206 | && transfer->len > spi_imx->tx_wml * sizeof(u32)) | ||
206 | return true; | 207 | return true; |
207 | return false; | 208 | return false; |
208 | } | 209 | } |
diff --git a/drivers/spi/spi-zynqmp-gqspi.c b/drivers/spi/spi-zynqmp-gqspi.c index 87b20a511a6b..f23f36ebaf3d 100644 --- a/drivers/spi/spi-zynqmp-gqspi.c +++ b/drivers/spi/spi-zynqmp-gqspi.c | |||
@@ -214,6 +214,7 @@ static void zynqmp_gqspi_selectslave(struct zynqmp_qspi *instanceptr, | |||
214 | case GQSPI_SELECT_FLASH_CS_BOTH: | 214 | case GQSPI_SELECT_FLASH_CS_BOTH: |
215 | instanceptr->genfifocs = GQSPI_GENFIFO_CS_LOWER | | 215 | instanceptr->genfifocs = GQSPI_GENFIFO_CS_LOWER | |
216 | GQSPI_GENFIFO_CS_UPPER; | 216 | GQSPI_GENFIFO_CS_UPPER; |
217 | break; | ||
217 | case GQSPI_SELECT_FLASH_CS_UPPER: | 218 | case GQSPI_SELECT_FLASH_CS_UPPER: |
218 | instanceptr->genfifocs = GQSPI_GENFIFO_CS_UPPER; | 219 | instanceptr->genfifocs = GQSPI_GENFIFO_CS_UPPER; |
219 | break; | 220 | break; |
diff --git a/drivers/spi/spidev.c b/drivers/spi/spidev.c index dd616ff0ffc5..c7de64171c45 100644 --- a/drivers/spi/spidev.c +++ b/drivers/spi/spidev.c | |||
@@ -693,6 +693,7 @@ static struct class *spidev_class; | |||
693 | #ifdef CONFIG_OF | 693 | #ifdef CONFIG_OF |
694 | static const struct of_device_id spidev_dt_ids[] = { | 694 | static const struct of_device_id spidev_dt_ids[] = { |
695 | { .compatible = "rohm,dh2228fv" }, | 695 | { .compatible = "rohm,dh2228fv" }, |
696 | { .compatible = "lineartechnology,ltc2488" }, | ||
696 | {}, | 697 | {}, |
697 | }; | 698 | }; |
698 | MODULE_DEVICE_TABLE(of, spidev_dt_ids); | 699 | MODULE_DEVICE_TABLE(of, spidev_dt_ids); |