Skip to content

Commit 86f4197

Browse files
committed
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
2 parents d83ec4a + d24cfee commit 86f4197

File tree

4 files changed

+13
-6
lines changed

4 files changed

+13
-6
lines changed

drivers/spi/atmel-quadspi.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -183,7 +183,7 @@ static const char *atmel_qspi_reg_name(u32 offset, char *tmp, size_t sz)
183183
case QSPI_MR:
184184
return "MR";
185185
case QSPI_RD:
186-
return "MR";
186+
return "RD";
187187
case QSPI_TD:
188188
return "TD";
189189
case QSPI_SR:

drivers/spi/spi-imx.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -1685,7 +1685,7 @@ static unsigned int spi_imx_transfer_estimate_time_us(struct spi_transfer *trans
16851685
words = DIV_ROUND_UP(transfer->len * BITS_PER_BYTE, transfer->bits_per_word);
16861686
word_delay_us = DIV_ROUND_CLOSEST(spi_delay_to_ns(&transfer->word_delay, transfer),
16871687
NSEC_PER_USEC);
1688-
result += words * word_delay_us;
1688+
result += (u64)words * word_delay_us;
16891689
}
16901690

16911691
return min(result, U32_MAX);

drivers/spi/spi-rockchip-sfc.c

+1-1
Original file line numberDiff line numberDiff line change
@@ -503,7 +503,7 @@ static int rockchip_sfc_exec_mem_op(struct spi_mem *mem, const struct spi_mem_op
503503
rockchip_sfc_adjust_op_work((struct spi_mem_op *)op);
504504
rockchip_sfc_xfer_setup(sfc, mem, op, len);
505505
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)) {
507507
init_completion(&sfc->cp);
508508
rockchip_sfc_irq_unmask(sfc, SFC_IMR_DMA);
509509
ret = rockchip_sfc_xfer_data_dma(sfc, op, len);

drivers/spi/spi.c

+10-3
Original file line numberDiff line numberDiff line change
@@ -424,6 +424,16 @@ static int spi_probe(struct device *dev)
424424
spi->irq = 0;
425425
}
426426

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+
427437
ret = dev_pm_domain_attach(dev, true);
428438
if (ret)
429439
return ret;
@@ -2866,9 +2876,6 @@ static acpi_status acpi_register_spi_device(struct spi_controller *ctlr,
28662876
acpi_set_modalias(adev, acpi_device_hid(adev), spi->modalias,
28672877
sizeof(spi->modalias));
28682878

2869-
if (spi->irq < 0)
2870-
spi->irq = acpi_dev_gpio_irq_get(adev, 0);
2871-
28722879
acpi_device_set_enumerated(adev);
28732880

28742881
adev->power.flags.ignore_parent = true;

0 commit comments

Comments
 (0)