summaryrefslogtreecommitdiff
path: root/drivers/media/platform/ti-vpe
diff options
context:
space:
mode:
authorTomi Valkeinen <tomi.valkeinen@ideasonboard.com>2021-06-14 13:23:43 +0200
committerMauro Carvalho Chehab <mchehab+huawei@kernel.org>2021-07-12 14:22:11 +0200
commit9eaca40c0d13a21848b5a35dc8c37dc3690a4ff1 (patch)
tree62348e1dd558a8bc3023ebdccfc6a3481782a075 /drivers/media/platform/ti-vpe
parent6cb0eee34c24b0052da554ff2ef9def8a10bbf96 (diff)
media: ti-vpe: cal: add camerarx enable/disable refcounting
The following patches add multistream support and we will have multiple video devices using the same camerarx instances. Thus we need enable/disable refcounting for the camerarx. Signed-off-by: Tomi Valkeinen <tomi.valkeinen@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com> Signed-off-by: Hans Verkuil <hverkuil-cisco@xs4all.nl> Signed-off-by: Mauro Carvalho Chehab <mchehab+huawei@kernel.org>
Diffstat (limited to 'drivers/media/platform/ti-vpe')
-rw-r--r--drivers/media/platform/ti-vpe/cal-camerarx.c10
-rw-r--r--drivers/media/platform/ti-vpe/cal.h3
2 files changed, 13 insertions, 0 deletions
diff --git a/drivers/media/platform/ti-vpe/cal-camerarx.c b/drivers/media/platform/ti-vpe/cal-camerarx.c
index f799047c70f7..79ebad139289 100644
--- a/drivers/media/platform/ti-vpe/cal-camerarx.c
+++ b/drivers/media/platform/ti-vpe/cal-camerarx.c
@@ -285,6 +285,11 @@ static int cal_camerarx_start(struct cal_camerarx *phy)
u32 val;
int ret;
+ if (phy->enable_count > 0) {
+ phy->enable_count++;
+ return 0;
+ }
+
link_freq = cal_camerarx_get_ext_link_freq(phy);
if (link_freq < 0)
return link_freq;
@@ -409,6 +414,8 @@ static int cal_camerarx_start(struct cal_camerarx *phy)
/* Finally, enable the PHY Protocol Interface (PPI). */
cal_camerarx_ppi_enable(phy);
+ phy->enable_count++;
+
return 0;
}
@@ -416,6 +423,9 @@ static void cal_camerarx_stop(struct cal_camerarx *phy)
{
int ret;
+ if (--phy->enable_count > 0)
+ return;
+
cal_camerarx_ppi_disable(phy);
cal_camerarx_disable_irqs(phy);
diff --git a/drivers/media/platform/ti-vpe/cal.h b/drivers/media/platform/ti-vpe/cal.h
index cf0b8f5d4378..006374be3f9f 100644
--- a/drivers/media/platform/ti-vpe/cal.h
+++ b/drivers/media/platform/ti-vpe/cal.h
@@ -167,8 +167,11 @@ struct cal_camerarx {
/*
* Lock for camerarx ops. Protects:
* - formats
+ * - enable_count
*/
struct mutex mutex;
+
+ unsigned int enable_count;
};
struct cal_dev {