mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-06 10:58:48 +09:00
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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
Reference in New Issue
Block a user