From 3c4b76edbe76e80c283113d93e8ffd608debc671 Mon Sep 17 00:00:00 2001 From: Zefa Chen Date: Fri, 29 Dec 2023 15:02:44 +0800 Subject: [PATCH] media: rockchip: vicap fixes error flags of devm_request_irq to resolve: Unbalanced enable for IRQ 66 WARNING: CPU: 3 PID: 1589 at kernel/irq/manage.c:691 enable_irq+0x9c/0xf0 Modules linked in: CPU: 3 PID: 1589 Comm: v4l2-ctl Not tainted 5.10.198 #50 Hardware name: Rockchip RK3588 EVB1 LP4 V10 Board (DT) pstate: 60400089 (nZCv daIf +PAN -UAO -TCO BTYPE=--) pc : enable_irq+0x9c/0xf0 lr : enable_irq+0x9c/0xf0 sp : ffffffc00e53b660 x29: ffffffc00e53b670 x28: 0000000000000001 x27: ffffff810313f610 x26: 0000000000000000 x25: 0000000000000000 x24: 0000000000000001 x23: ffffff81030de600 x22: 0000000000020001 x21: ffffff810310e380 x20: 0000000000000042 x19: ffffff8101193400 x18: ffffffffffffffff x17: 0000000000000000 x16: 00000000000000f4 x15: 0000000000000004 x14: 0000000000001fff x13: ffffffc009be2528 x12: 0000000000000003 x11: 00000000ffffdfff x10: c0000000ffffdfff x9 : 44662b0799533b00 x8 : 44662b0799533b00 x7 : 6f6620656c62616e x6 : ffffffc009d69688 x5 : ffffffc008cee45c x4 : 0000000000000001 x3 : 0000000000000000 x2 : 0000000000000000 x1 : ffffffc00e53b330 x0 : 000000000000001c Call trace: enable_irq+0x9c/0xf0 csi2_start+0x31c/0x594 csi2_s_stream+0xf8/0x238 rkcif_pipeline_set_stream+0x250/0x63c rkcif_do_start_stream+0xe64/0x122c rkcif_start_streaming+0x1c/0x24 vb2_start_streaming+0x64/0x134 Signed-off-by: Zefa Chen Change-Id: I0506b9b49094b6ee22331d38aa028ec46bb2d50d --- drivers/media/platform/rockchip/cif/mipi-csi2.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/rockchip/cif/mipi-csi2.c b/drivers/media/platform/rockchip/cif/mipi-csi2.c index b7bf06e6ee45..57d816629a64 100644 --- a/drivers/media/platform/rockchip/cif/mipi-csi2.c +++ b/drivers/media/platform/rockchip/cif/mipi-csi2.c @@ -1279,8 +1279,9 @@ static int csi2_hw_probe(struct platform_device *pdev) irq = platform_get_irq_byname(pdev, "csi-intr1"); if (irq > 0) { + irq_set_status_flags(irq, IRQ_NOAUTOEN); ret = devm_request_irq(&pdev->dev, irq, - rk_csirx_irq1_handler, IRQ_NOAUTOEN, + rk_csirx_irq1_handler, 0, dev_driver_string(&pdev->dev), &pdev->dev); if (ret < 0) @@ -1293,8 +1294,9 @@ static int csi2_hw_probe(struct platform_device *pdev) irq = platform_get_irq_byname(pdev, "csi-intr2"); if (irq > 0) { + irq_set_status_flags(irq, IRQ_NOAUTOEN); ret = devm_request_irq(&pdev->dev, irq, - rk_csirx_irq2_handler, IRQ_NOAUTOEN, + rk_csirx_irq2_handler, 0, dev_driver_string(&pdev->dev), &pdev->dev); if (ret < 0)