diff --git a/drivers/media/platform/rockchip/cif/hw.c b/drivers/media/platform/rockchip/cif/hw.c index 0fc80c06f04a..9c1e1501009d 100644 --- a/drivers/media/platform/rockchip/cif/hw.c +++ b/drivers/media/platform/rockchip/cif/hw.c @@ -1296,6 +1296,9 @@ static void rkcif_hw_shutdown(struct platform_device *pdev) struct rkcif_device *cif_dev = NULL; int i = 0; + if (pm_runtime_get_if_in_use(&pdev->dev) <= 0) + return; + if (cif_hw->chip_id == CHIP_RK3588_CIF || cif_hw->chip_id == CHIP_RV1106_CIF) { write_cif_reg(cif_hw->base_addr, 0, 0); @@ -1314,7 +1317,9 @@ static void rkcif_hw_shutdown(struct platform_device *pdev) } } } - disable_irq(cif_hw->irq); + if (cif_hw->irq > 0) + disable_irq(cif_hw->irq); + pm_runtime_put(&pdev->dev); } static int __maybe_unused rkcif_runtime_suspend(struct device *dev) diff --git a/drivers/media/platform/rockchip/cif/mipi-csi2.c b/drivers/media/platform/rockchip/cif/mipi-csi2.c index 5660489df63e..50c9d905984e 100644 --- a/drivers/media/platform/rockchip/cif/mipi-csi2.c +++ b/drivers/media/platform/rockchip/cif/mipi-csi2.c @@ -919,16 +919,6 @@ rmmutex: return ret; } -static void csi2_shutdown(struct platform_device *pdev) -{ - struct v4l2_subdev *sd = platform_get_drvdata(pdev); - struct csi2_dev *csi2 = sd_to_dev(sd); - - csi2_disable(csi2); - disable_irq(csi2->irq1); - disable_irq(csi2->irq2); -} - static int csi2_remove(struct platform_device *pdev) { struct v4l2_subdev *sd = platform_get_drvdata(pdev); @@ -948,7 +938,6 @@ static struct platform_driver csi2_driver = { }, .probe = csi2_probe, .remove = csi2_remove, - .shutdown = csi2_shutdown, }; int __init rkcif_csi2_plat_drv_init(void)