mirror of
https://github.com/hardkernel/linux.git
synced 2026-06-07 03:15:31 +09:00
media: rockchip: vicap: sditf sub sensor add quick stream and get sync mode.
Signed-off-by: Sach Lin <sach.lin@rock-chips.com> Change-Id: I558a1f4048b8be2d9aef45ac0d857231bce3764f
This commit is contained in:
@@ -4190,7 +4190,7 @@ static int rkcif_stream_start(struct rkcif_stream *stream, unsigned int mode)
|
||||
static void rkcif_attach_sync_mode(struct rkcif_hw *hw)
|
||||
{
|
||||
struct rkcif_device *dev;
|
||||
int i = 0;
|
||||
int i = 0, j = 0;
|
||||
int ret = 0;
|
||||
int sync_type = 0;
|
||||
int count = 0;
|
||||
@@ -4201,10 +4201,21 @@ static void rkcif_attach_sync_mode(struct rkcif_hw *hw)
|
||||
memset(&hw->sync_config, 0, sizeof(struct rkcif_multi_sync_config));
|
||||
for (i = 0; i < hw->dev_num; i++) {
|
||||
dev = hw->cif_dev[i];
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd,
|
||||
core, ioctl,
|
||||
RKMODULE_GET_SYNC_MODE,
|
||||
&sync_type);
|
||||
if (dev->sditf_cnt == 1) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd,
|
||||
core, ioctl,
|
||||
RKMODULE_GET_SYNC_MODE,
|
||||
&sync_type);
|
||||
} else {
|
||||
for (j = 0; j < dev->sditf_cnt; j++) {
|
||||
ret |= v4l2_subdev_call(dev->sditf[j]->sensor_sd,
|
||||
core, ioctl,
|
||||
RKMODULE_GET_SYNC_MODE,
|
||||
&sync_type);
|
||||
if (sync_type)
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (!ret) {
|
||||
if (sync_type == EXTERNAL_MASTER_MODE) {
|
||||
count = hw->sync_config.ext_master.count;
|
||||
|
||||
@@ -885,7 +885,7 @@ static void rkcif_set_sensor_streamon_in_sync_mode(struct rkcif_device *cif_dev)
|
||||
{
|
||||
struct rkcif_hw *hw = cif_dev->hw_dev;
|
||||
struct rkcif_device *dev = NULL;
|
||||
int i = 0;
|
||||
int i = 0, j = 0;
|
||||
int on = 1;
|
||||
int ret = 0;
|
||||
bool is_streaming = false;
|
||||
@@ -904,11 +904,23 @@ static void rkcif_set_sensor_streamon_in_sync_mode(struct rkcif_device *cif_dev)
|
||||
dev = hw->sync_config.slave.cif_dev[i];
|
||||
is_streaming = hw->sync_config.slave.is_streaming[i];
|
||||
if (!is_streaming) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM, &on);
|
||||
if (ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
if (dev->sditf_cnt == 1) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM, &on);
|
||||
if (ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
} else {
|
||||
for (j = 0; j < dev->sditf_cnt; j++)
|
||||
ret |= v4l2_subdev_call(dev->sditf[j]->sensor_sd,
|
||||
core,
|
||||
ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM,
|
||||
&on);
|
||||
if (ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
}
|
||||
hw->sync_config.slave.is_streaming[i] = true;
|
||||
}
|
||||
v4l2_dbg(3, rkcif_debug, &dev->v4l2_dev,
|
||||
@@ -919,11 +931,23 @@ static void rkcif_set_sensor_streamon_in_sync_mode(struct rkcif_device *cif_dev)
|
||||
dev = hw->sync_config.ext_master.cif_dev[i];
|
||||
is_streaming = hw->sync_config.ext_master.is_streaming[i];
|
||||
if (!is_streaming) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM, &on);
|
||||
if (!ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
if (dev->sditf_cnt == 1) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM, &on);
|
||||
if (ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
} else {
|
||||
for (j = 0; j < dev->sditf_cnt; j++)
|
||||
ret |= v4l2_subdev_call(dev->sditf[j]->sensor_sd,
|
||||
core,
|
||||
ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM,
|
||||
&on);
|
||||
if (ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
}
|
||||
hw->sync_config.ext_master.is_streaming[i] = true;
|
||||
}
|
||||
v4l2_dbg(3, rkcif_debug, &dev->v4l2_dev,
|
||||
@@ -933,11 +957,23 @@ static void rkcif_set_sensor_streamon_in_sync_mode(struct rkcif_device *cif_dev)
|
||||
dev = hw->sync_config.int_master.cif_dev[i];
|
||||
is_streaming = hw->sync_config.int_master.is_streaming[i];
|
||||
if (!is_streaming) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM, &on);
|
||||
if (!ret)
|
||||
dev_info(hw->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
if (dev->sditf_cnt == 1) {
|
||||
ret = v4l2_subdev_call(dev->terminal_sensor.sd, core, ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM, &on);
|
||||
if (ret)
|
||||
dev_info(hw->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
} else {
|
||||
for (j = 0; j < dev->sditf_cnt; j++)
|
||||
ret |= v4l2_subdev_call(dev->sditf[j]->sensor_sd,
|
||||
core,
|
||||
ioctl,
|
||||
RKMODULE_SET_QUICK_STREAM,
|
||||
&on);
|
||||
if (ret)
|
||||
dev_info(dev->dev,
|
||||
"set RKMODULE_SET_QUICK_STREAM failed\n");
|
||||
}
|
||||
hw->sync_config.int_master.is_streaming[i] = true;
|
||||
}
|
||||
v4l2_dbg(3, rkcif_debug, &dev->v4l2_dev,
|
||||
|
||||
Reference in New Issue
Block a user