can: m_can: m_can_open(): remove IRQF_TRIGGER_FALLING from request_threaded_irq()'s flags
[ Upstream commit865f5b671b
] The threaded IRQ handler is used for the tcan4x5x driver only. The IRQ pin of the tcan4x5x controller is active low, so better not use IRQF_TRIGGER_FALLING when requesting the IRQ. As this can result in missing interrupts. Further, if the device tree specified the interrupt as "IRQ_TYPE_LEVEL_LOW", unloading and reloading of the driver results in the following error during ifup: | irq: type mismatch, failed to map hwirq-31 for gpio@20a8000! | tcan4x5x spi1.1: m_can device registered (irq=0, version=32) | tcan4x5x spi1.1 can2: TCAN4X5X successfully initialized. | tcan4x5x spi1.1 can2: failed to request interrupt This patch fixes the problem by removing the IRQF_TRIGGER_FALLING from the request_threaded_irq(). Fixes:f524f829b7
("can: m_can: Create a m_can platform framework") Cc: Dan Murphy <dmurphy@ti.com> Cc: Sriram Dash <sriram.dash@samsung.com> Cc: Pankaj Sharma <pankj.sharma@samsung.com> Link: https://lore.kernel.org/r/20201127093548.509253-1-mkl@pengutronix.de Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de> Signed-off-by: Sasha Levin <sashal@kernel.org>
This commit is contained in:
committed by
Greg Kroah-Hartman
parent
dd8ab85fd8
commit
1f076cc1de
@ -1605,7 +1605,7 @@ static int m_can_open(struct net_device *dev)
|
|||||||
INIT_WORK(&cdev->tx_work, m_can_tx_work_queue);
|
INIT_WORK(&cdev->tx_work, m_can_tx_work_queue);
|
||||||
|
|
||||||
err = request_threaded_irq(dev->irq, NULL, m_can_isr,
|
err = request_threaded_irq(dev->irq, NULL, m_can_isr,
|
||||||
IRQF_ONESHOT | IRQF_TRIGGER_FALLING,
|
IRQF_ONESHOT,
|
||||||
dev->name, dev);
|
dev->name, dev);
|
||||||
} else {
|
} else {
|
||||||
err = request_irq(dev->irq, m_can_isr, IRQF_SHARED, dev->name,
|
err = request_irq(dev->irq, m_can_isr, IRQF_SHARED, dev->name,
|
||||||
|
Reference in New Issue
Block a user