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-v6.13-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi

Pull spi fixes from Mark Brown:
"A few fairly minor driver specific fixes, plus one core fix for the
handling of deferred probe on ACPI systems - ignoring probe deferral
and incorrectly treating it like a fatal error while parsing the
generic ACPI bindings for SPI devices"

* tag 'spi-fix-v6.13-merge-window' of git://git.kernel.org/pub/scm/linux/kernel/git/broonie/spi:
spi: Fix acpi deferred irq probe
spi: atmel-quadspi: Fix register name in verbose logging function
spi-imx: prevent overflow when estimating transfer time
spi: rockchip-sfc: Embedded DMA only support 4B aligned address

+13 -6
+1 -1
drivers/spi/atmel-quadspi.c
··· 183 183 case QSPI_MR: 184 184 return "MR"; 185 185 case QSPI_RD: 186 - return "MR"; 186 + return "RD"; 187 187 case QSPI_TD: 188 188 return "TD"; 189 189 case QSPI_SR:
+1 -1
drivers/spi/spi-imx.c
··· 1685 1685 words = DIV_ROUND_UP(transfer->len * BITS_PER_BYTE, transfer->bits_per_word); 1686 1686 word_delay_us = DIV_ROUND_CLOSEST(spi_delay_to_ns(&transfer->word_delay, transfer), 1687 1687 NSEC_PER_USEC); 1688 - result += words * word_delay_us; 1688 + result += (u64)words * word_delay_us; 1689 1689 } 1690 1690 1691 1691 return min(result, U32_MAX);
+1 -1
drivers/spi/spi-rockchip-sfc.c
··· 503 503 rockchip_sfc_adjust_op_work((struct spi_mem_op *)op); 504 504 rockchip_sfc_xfer_setup(sfc, mem, op, len); 505 505 if (len) { 506 - if (likely(sfc->use_dma) && len >= SFC_DMA_TRANS_THRETHOLD) { 506 + if (likely(sfc->use_dma) && len >= SFC_DMA_TRANS_THRETHOLD && !(len & 0x3)) { 507 507 init_completion(&sfc->cp); 508 508 rockchip_sfc_irq_unmask(sfc, SFC_IMR_DMA); 509 509 ret = rockchip_sfc_xfer_data_dma(sfc, op, len);
+10 -3
drivers/spi/spi.c
··· 424 424 spi->irq = 0; 425 425 } 426 426 427 + if (has_acpi_companion(dev) && spi->irq < 0) { 428 + struct acpi_device *adev = to_acpi_device_node(dev->fwnode); 429 + 430 + spi->irq = acpi_dev_gpio_irq_get(adev, 0); 431 + if (spi->irq == -EPROBE_DEFER) 432 + return -EPROBE_DEFER; 433 + if (spi->irq < 0) 434 + spi->irq = 0; 435 + } 436 + 427 437 ret = dev_pm_domain_attach(dev, true); 428 438 if (ret) 429 439 return ret; ··· 2875 2865 2876 2866 acpi_set_modalias(adev, acpi_device_hid(adev), spi->modalias, 2877 2867 sizeof(spi->modalias)); 2878 - 2879 - if (spi->irq < 0) 2880 - spi->irq = acpi_dev_gpio_irq_get(adev, 0); 2881 2868 2882 2869 acpi_device_set_enumerated(adev); 2883 2870