media: rockchip: vicap: sditf add power_cnt/stream_cnt

Signed-off-by: Zefa Chen <zefa.chen@rock-chips.com>
Change-Id: Ibd243c0ad697b27f3bdd9f38ccbd9d83194f03b4
This commit is contained in:
Zefa Chen
2022-08-23 19:41:57 +08:00
committed by Tao Huang
parent 75dc121c3a
commit c079a39698
2 changed files with 16 additions and 0 deletions

View File

@@ -548,6 +548,12 @@ static int sditf_s_stream(struct v4l2_subdev *sd, int on)
struct rkcif_device *cif_dev = priv->cif_dev;
int ret = 0;
if (!on && atomic_dec_return(&priv->stream_cnt))
return 0;
if (on && atomic_inc_return(&priv->stream_cnt) > 1)
return 0;
if (cif_dev->chip_id >= CHIP_RK3588_CIF) {
if (priv->mode.rdbk_mode == RKISP_VICAP_RDBK_AIQ)
return 0;
@@ -571,6 +577,12 @@ static int sditf_s_power(struct v4l2_subdev *sd, int on)
struct rkcif_device *cif_dev = priv->cif_dev;
int ret = 0;
if (!on && atomic_dec_return(&priv->power_cnt))
return 0;
if (on && atomic_inc_return(&priv->power_cnt) > 1)
return 0;
if (cif_dev->chip_id >= CHIP_RK3588_CIF) {
v4l2_dbg(3, rkcif_debug, &cif_dev->v4l2_dev,
"%s, toisp mode %d, hdr %d, set power %d\n",
@@ -981,6 +993,8 @@ static int rkcif_subdev_media_init(struct sditf_priv *priv)
priv->toisp_inf.ch_info[2].is_valid = false;
if (priv->is_combine_mode)
sditf_subdev_notifier(priv);
atomic_set(&priv->power_cnt, 0);
atomic_set(&priv->stream_cnt, 0);
return 0;
}

View File

@@ -71,6 +71,8 @@ struct sditf_priv {
int num_sensors;
int combine_index;
bool is_combine_mode;
atomic_t power_cnt;
atomic_t stream_cnt;
};
extern struct platform_driver rkcif_subdev_driver;