Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

Merge tag 'spi-fix-v4.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi

Pull spi fixes from Mark Brown:
"The usual small smattering of driver specific fixes. A few bits that
stand out here:

- the R-Car patches adding fallbacks are just adding new compatible
strings to the driver so that device trees are written in a more
robustly future proof fashion, this isn't strictly a fix but it's
just new IDs and it's better to get it into mainline sooner to
improve the ABI

- the DesignWare "switch to new API part 2" patch is actually a
misleadingly titled fix for a bit that got missed in the original
conversion"

* tag 'spi-fix-v4.10-rc4' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
spi: davinci: use dma_mapping_error()
spi: spi-axi: Free resources on error path
spi: pxa2xx: add missed break
spi: dw-mid: switch to new dmaengine_terminate_* API (part 2)
spi: dw: Make debugfs name unique between instances
spi: sh-msiof: Do not use C++ style comment
spi: armada-3700: Set mode bits correctly
spi: armada-3700: fix unsigned compare than zero on irq
spi: sh-msiof: Add R-Car Gen 2 and 3 fallback bindings
spi: SPI_FSL_DSPI should depend on HAS_DMA

+34 -18
+13 -6
Documentation/devicetree/bindings/spi/sh-msiof.txt
··· 1 1 Renesas MSIOF spi controller 2 2 3 3 Required properties: 4 - - compatible : "renesas,msiof-<soctype>" for SoCs, 5 - "renesas,sh-msiof" for SuperH, or 6 - "renesas,sh-mobile-msiof" for SH Mobile series. 7 - Examples with soctypes are: 8 - "renesas,msiof-r8a7790" (R-Car H2) 4 + - compatible : "renesas,msiof-r8a7790" (R-Car H2) 9 5 "renesas,msiof-r8a7791" (R-Car M2-W) 10 6 "renesas,msiof-r8a7792" (R-Car V2H) 11 7 "renesas,msiof-r8a7793" (R-Car M2-N) 12 8 "renesas,msiof-r8a7794" (R-Car E2) 13 9 "renesas,msiof-r8a7796" (R-Car M3-W) 14 10 "renesas,msiof-sh73a0" (SH-Mobile AG5) 11 + "renesas,sh-mobile-msiof" (generic SH-Mobile compatibile device) 12 + "renesas,rcar-gen2-msiof" (generic R-Car Gen2 compatible device) 13 + "renesas,rcar-gen3-msiof" (generic R-Car Gen3 compatible device) 14 + "renesas,sh-msiof" (deprecated) 15 + 16 + When compatible with the generic version, nodes 17 + must list the SoC-specific version corresponding 18 + to the platform first followed by the generic 19 + version. 20 + 15 21 - reg : A list of offsets and lengths of the register sets for 16 22 the device. 17 23 If only one register set is present, it is to be used ··· 67 61 Example: 68 62 69 63 msiof0: spi@e6e20000 { 70 - compatible = "renesas,msiof-r8a7791"; 64 + compatible = "renesas,msiof-r8a7791", 65 + "renesas,rcar-gen2-msiof"; 71 66 reg = <0 0xe6e20000 0 0x0064>; 72 67 interrupts = <0 156 IRQ_TYPE_LEVEL_HIGH>; 73 68 clocks = <&mstp0_clks R8A7791_CLK_MSIOF0>;
+1
drivers/spi/Kconfig
··· 378 378 config SPI_FSL_DSPI 379 379 tristate "Freescale DSPI controller" 380 380 select REGMAP_MMIO 381 + depends on HAS_DMA 381 382 depends on SOC_VF610 || SOC_LS1021A || ARCH_LAYERSCAPE || COMPILE_TEST 382 383 help 383 384 This enables support for the Freescale DSPI controller in master
+6 -5
drivers/spi/spi-armada-3700.c
··· 800 800 struct spi_master *master; 801 801 struct a3700_spi *spi; 802 802 u32 num_cs = 0; 803 - int ret = 0; 803 + int irq, ret = 0; 804 804 805 805 master = spi_alloc_master(dev, sizeof(*spi)); 806 806 if (!master) { ··· 825 825 master->unprepare_message = a3700_spi_unprepare_message; 826 826 master->set_cs = a3700_spi_set_cs; 827 827 master->flags = SPI_MASTER_HALF_DUPLEX; 828 - master->mode_bits |= (SPI_RX_DUAL | SPI_RX_DUAL | 828 + master->mode_bits |= (SPI_RX_DUAL | SPI_TX_DUAL | 829 829 SPI_RX_QUAD | SPI_TX_QUAD); 830 830 831 831 platform_set_drvdata(pdev, master); ··· 846 846 goto error; 847 847 } 848 848 849 - spi->irq = platform_get_irq(pdev, 0); 850 - if (spi->irq < 0) { 851 - dev_err(dev, "could not get irq: %d\n", spi->irq); 849 + irq = platform_get_irq(pdev, 0); 850 + if (irq < 0) { 851 + dev_err(dev, "could not get irq: %d\n", irq); 852 852 ret = -ENXIO; 853 853 goto error; 854 854 } 855 + spi->irq = irq; 855 856 856 857 init_completion(&spi->done); 857 858
+2 -1
drivers/spi/spi-axi-spi-engine.c
··· 494 494 SPI_ENGINE_VERSION_MAJOR(version), 495 495 SPI_ENGINE_VERSION_MINOR(version), 496 496 SPI_ENGINE_VERSION_PATCH(version)); 497 - return -ENODEV; 497 + ret = -ENODEV; 498 + goto err_put_master; 498 499 } 499 500 500 501 spi_engine->clk = devm_clk_get(&pdev->dev, "s_axi_aclk");
+2 -2
drivers/spi/spi-davinci.c
··· 646 646 buf = t->rx_buf; 647 647 t->rx_dma = dma_map_single(&spi->dev, buf, 648 648 t->len, DMA_FROM_DEVICE); 649 - if (!t->rx_dma) { 649 + if (dma_mapping_error(&spi->dev, !t->rx_dma)) { 650 650 ret = -EFAULT; 651 651 goto err_rx_map; 652 652 } ··· 660 660 buf = (void *)t->tx_buf; 661 661 t->tx_dma = dma_map_single(&spi->dev, buf, 662 662 t->len, DMA_TO_DEVICE); 663 - if (!t->tx_dma) { 663 + if (dma_mapping_error(&spi->dev, t->tx_dma)) { 664 664 ret = -EFAULT; 665 665 goto err_tx_map; 666 666 }
+2 -2
drivers/spi/spi-dw-mid.c
··· 274 274 static void mid_spi_dma_stop(struct dw_spi *dws) 275 275 { 276 276 if (test_bit(TX_BUSY, &dws->dma_chan_busy)) { 277 - dmaengine_terminate_all(dws->txchan); 277 + dmaengine_terminate_sync(dws->txchan); 278 278 clear_bit(TX_BUSY, &dws->dma_chan_busy); 279 279 } 280 280 if (test_bit(RX_BUSY, &dws->dma_chan_busy)) { 281 - dmaengine_terminate_all(dws->rxchan); 281 + dmaengine_terminate_sync(dws->rxchan); 282 282 clear_bit(RX_BUSY, &dws->dma_chan_busy); 283 283 } 284 284 }
+4 -1
drivers/spi/spi-dw.c
··· 107 107 108 108 static int dw_spi_debugfs_init(struct dw_spi *dws) 109 109 { 110 - dws->debugfs = debugfs_create_dir("dw_spi", NULL); 110 + char name[128]; 111 + 112 + snprintf(name, 128, "dw_spi-%s", dev_name(&dws->master->dev)); 113 + dws->debugfs = debugfs_create_dir(name, NULL); 111 114 if (!dws->debugfs) 112 115 return -ENOMEM; 113 116
+1
drivers/spi/spi-pxa2xx.c
··· 1690 1690 pxa2xx_spi_write(drv_data, SSCR1, tmp); 1691 1691 tmp = SSCR0_SCR(2) | SSCR0_Motorola | SSCR0_DataSize(8); 1692 1692 pxa2xx_spi_write(drv_data, SSCR0, tmp); 1693 + break; 1693 1694 default: 1694 1695 tmp = SSCR1_RxTresh(RX_THRESH_DFLT) | 1695 1696 SSCR1_TxTresh(TX_THRESH_DFLT);
+3 -1
drivers/spi/spi-sh-msiof.c
··· 973 973 }; 974 974 975 975 static const struct of_device_id sh_msiof_match[] = { 976 - { .compatible = "renesas,sh-msiof", .data = &sh_data }, 977 976 { .compatible = "renesas,sh-mobile-msiof", .data = &sh_data }, 978 977 { .compatible = "renesas,msiof-r8a7790", .data = &r8a779x_data }, 979 978 { .compatible = "renesas,msiof-r8a7791", .data = &r8a779x_data }, 980 979 { .compatible = "renesas,msiof-r8a7792", .data = &r8a779x_data }, 981 980 { .compatible = "renesas,msiof-r8a7793", .data = &r8a779x_data }, 982 981 { .compatible = "renesas,msiof-r8a7794", .data = &r8a779x_data }, 982 + { .compatible = "renesas,rcar-gen2-msiof", .data = &r8a779x_data }, 983 983 { .compatible = "renesas,msiof-r8a7796", .data = &r8a779x_data }, 984 + { .compatible = "renesas,rcar-gen3-msiof", .data = &r8a779x_data }, 985 + { .compatible = "renesas,sh-msiof", .data = &sh_data }, /* Deprecated */ 984 986 {}, 985 987 }; 986 988 MODULE_DEVICE_TABLE(of, sh_msiof_match);