summaryrefslogtreecommitdiff
path: root/drivers/media/platform/rockchip/rkcif/rkcif-dev.c
diff options
context:
space:
mode:
Diffstat (limited to 'drivers/media/platform/rockchip/rkcif/rkcif-dev.c')
-rw-r--r--drivers/media/platform/rockchip/rkcif/rkcif-dev.c12
1 files changed, 12 insertions, 0 deletions
diff --git a/drivers/media/platform/rockchip/rkcif/rkcif-dev.c b/drivers/media/platform/rockchip/rkcif/rkcif-dev.c
index addc118ff8bf..b4cf1146f131 100644
--- a/drivers/media/platform/rockchip/rkcif/rkcif-dev.c
+++ b/drivers/media/platform/rockchip/rkcif/rkcif-dev.c
@@ -24,6 +24,7 @@
#include <media/v4l2-mc.h>
#include "rkcif-capture-dvp.h"
+#include "rkcif-capture-mipi.h"
#include "rkcif-common.h"
static const char *const px30_vip_clks[] = {
@@ -49,6 +50,7 @@ static const struct rkcif_match_data rk3568_vicap_match_data = {
.clks = rk3568_vicap_clks,
.clks_num = ARRAY_SIZE(rk3568_vicap_clks),
.dvp = &rkcif_rk3568_vicap_dvp_match_data,
+ .mipi = &rkcif_rk3568_vicap_mipi_match_data,
};
static const struct of_device_id rkcif_plat_of_match[] = {
@@ -72,14 +74,21 @@ static int rkcif_register(struct rkcif_device *rkcif)
if (ret && ret != -ENODEV)
goto err;
+ ret = rkcif_mipi_register(rkcif);
+ if (ret && ret != -ENODEV)
+ goto err_dvp_unregister;
+
return 0;
+err_dvp_unregister:
+ rkcif_dvp_unregister(rkcif);
err:
return ret;
}
static void rkcif_unregister(struct rkcif_device *rkcif)
{
+ rkcif_mipi_unregister(rkcif);
rkcif_dvp_unregister(rkcif);
}
@@ -128,6 +137,9 @@ static irqreturn_t rkcif_isr(int irq, void *ctx)
if (rkcif_dvp_isr(irq, ctx) == IRQ_HANDLED)
ret = IRQ_HANDLED;
+ if (rkcif_mipi_isr(irq, ctx) == IRQ_HANDLED)
+ ret = IRQ_HANDLED;
+
return ret;
}