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-v3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi

Pull spi fixes from Mark Brown:
"A couple of driver specific fixes:

- Disable DMA mode for i.MX6DL chips due to a hardware bug.

- Don't use devm_kzalloc() outside of bind/unbind paths in the
fsl-dspi driver, fixing memory leaks"

* tag 'spi-v3.19-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
spi: imx: use pio mode for i.mx6dl
spi: spi-fsl-dspi: Remove usage of devm_kzalloc

+16 -2
+12 -2
drivers/spi/spi-fsl-dspi.c
··· 342 342 /* Only alloc on first setup */ 343 343 chip = spi_get_ctldata(spi); 344 344 if (chip == NULL) { 345 - chip = devm_kzalloc(&spi->dev, sizeof(struct chip_data), 346 - GFP_KERNEL); 345 + chip = kzalloc(sizeof(struct chip_data), GFP_KERNEL); 347 346 if (!chip) 348 347 return -ENOMEM; 349 348 } ··· 379 380 return -EINVAL; 380 381 381 382 return dspi_setup_transfer(spi, NULL); 383 + } 384 + 385 + static void dspi_cleanup(struct spi_device *spi) 386 + { 387 + struct chip_data *chip = spi_get_ctldata((struct spi_device *)spi); 388 + 389 + dev_dbg(&spi->dev, "spi_device %u.%u cleanup\n", 390 + spi->master->bus_num, spi->chip_select); 391 + 392 + kfree(chip); 382 393 } 383 394 384 395 static irqreturn_t dspi_interrupt(int irq, void *dev_id) ··· 476 467 dspi->bitbang.master->setup = dspi_setup; 477 468 dspi->bitbang.master->dev.of_node = pdev->dev.of_node; 478 469 470 + master->cleanup = dspi_cleanup; 479 471 master->mode_bits = SPI_CPOL | SPI_CPHA; 480 472 master->bits_per_word_mask = SPI_BPW_MASK(4) | SPI_BPW_MASK(8) | 481 473 SPI_BPW_MASK(16);
+4
drivers/spi/spi-imx.c
··· 823 823 struct dma_slave_config slave_config = {}; 824 824 int ret; 825 825 826 + /* use pio mode for i.mx6dl chip TKT238285 */ 827 + if (of_machine_is_compatible("fsl,imx6dl")) 828 + return 0; 829 + 826 830 /* Prepare for TX DMA: */ 827 831 master->dma_tx = dma_request_slave_channel(dev, "tx"); 828 832 if (!master->dma_tx) {