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.

spi: spi-fsl-lpspi: Use IRQF_NO_AUTOEN flag in request_irq()

disable_irq() after request_irq() still has a time gap in which
interrupts can come. request_irq() with IRQF_NO_AUTOEN flag will
disable IRQ auto-enable when request IRQ.

Fixes: 9728fb3ce117 ("spi: lpspi: disable lpspi module irq in DMA mode")
Signed-off-by: Jinjie Ruan <ruanjinjie@huawei.com>
Link: https://patch.msgid.link/20240906022828.891812-1-ruanjinjie@huawei.com
Signed-off-by: Mark Brown <broonie@kernel.org>

authored by

Jinjie Ruan and committed by
Mark Brown
003c7e01 89980d3a

+4 -8
+4 -8
drivers/spi/spi-fsl-lpspi.c
··· 891 891 return ret; 892 892 } 893 893 894 - ret = devm_request_irq(&pdev->dev, irq, fsl_lpspi_isr, 0, 894 + ret = devm_request_irq(&pdev->dev, irq, fsl_lpspi_isr, IRQF_NO_AUTOEN, 895 895 dev_name(&pdev->dev), fsl_lpspi); 896 896 if (ret) { 897 897 dev_err(&pdev->dev, "can't get irq%d: %d\n", irq, ret); ··· 948 948 ret = fsl_lpspi_dma_init(&pdev->dev, fsl_lpspi, controller); 949 949 if (ret == -EPROBE_DEFER) 950 950 goto out_pm_get; 951 - if (ret < 0) 951 + if (ret < 0) { 952 952 dev_warn(&pdev->dev, "dma setup error %d, use pio\n", ret); 953 - else 954 - /* 955 - * disable LPSPI module IRQ when enable DMA mode successfully, 956 - * to prevent the unexpected LPSPI module IRQ events. 957 - */ 958 - disable_irq(irq); 953 + enable_irq(irq); 954 + } 959 955 960 956 ret = devm_spi_register_controller(&pdev->dev, controller); 961 957 if (ret < 0) {