Commit e4454e06 authored by Hans de Goede's avatar Hans de Goede Committed by Mauro Carvalho Chehab

media: atomisp: Remove source_pad parameter from functions and structs

Now that there is only 1 source-pad for an asd there is no need
to have a parameter for this in various places.

Remove the source_pad function parameter and
atomisp_sub_device.capture_pad data member.
Reviewed-by: default avatarAndy Shevchenko <andy.shevchenko@gmail.com>
Signed-off-by: default avatarHans de Goede <hdegoede@redhat.com>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab@kernel.org>
parent aca8a1df
...@@ -229,8 +229,8 @@ int atomisp_freq_scaling(struct atomisp_device *isp, ...@@ -229,8 +229,8 @@ int atomisp_freq_scaling(struct atomisp_device *isp,
goto done; goto done;
} }
curr_rules.width = isp->asd.fmt[isp->asd.capture_pad].fmt.width; curr_rules.width = isp->asd.fmt[ATOMISP_SUBDEV_PAD_SOURCE].fmt.width;
curr_rules.height = isp->asd.fmt[isp->asd.capture_pad].fmt.height; curr_rules.height = isp->asd.fmt[ATOMISP_SUBDEV_PAD_SOURCE].fmt.height;
curr_rules.fps = fps; curr_rules.fps = fps;
curr_rules.run_mode = isp->asd.run_mode->val; curr_rules.run_mode = isp->asd.run_mode->val;
...@@ -1548,13 +1548,12 @@ void atomisp_free_internal_buffers(struct atomisp_sub_device *asd) ...@@ -1548,13 +1548,12 @@ void atomisp_free_internal_buffers(struct atomisp_sub_device *asd)
} }
static void atomisp_update_grid_info(struct atomisp_sub_device *asd, static void atomisp_update_grid_info(struct atomisp_sub_device *asd,
enum ia_css_pipe_id pipe_id, enum ia_css_pipe_id pipe_id)
int source_pad)
{ {
struct atomisp_device *isp = asd->isp; struct atomisp_device *isp = asd->isp;
int err; int err;
if (atomisp_css_get_grid_info(asd, pipe_id, source_pad)) if (atomisp_css_get_grid_info(asd, pipe_id))
return; return;
/* We must free all buffers because they no longer match /* We must free all buffers because they no longer match
...@@ -4105,8 +4104,7 @@ static int css_input_resolution_changed(struct atomisp_sub_device *asd, ...@@ -4105,8 +4104,7 @@ static int css_input_resolution_changed(struct atomisp_sub_device *asd,
static int atomisp_set_fmt_to_isp(struct video_device *vdev, static int atomisp_set_fmt_to_isp(struct video_device *vdev,
struct ia_css_frame_info *output_info, struct ia_css_frame_info *output_info,
struct v4l2_pix_format *pix, struct v4l2_pix_format *pix)
unsigned int source_pad)
{ {
struct camera_mipi_info *mipi_info; struct camera_mipi_info *mipi_info;
struct atomisp_device *isp = video_get_drvdata(vdev); struct atomisp_device *isp = video_get_drvdata(vdev);
...@@ -4279,7 +4277,7 @@ static int atomisp_set_fmt_to_isp(struct video_device *vdev, ...@@ -4279,7 +4277,7 @@ static int atomisp_set_fmt_to_isp(struct video_device *vdev,
return ret; return ret;
} }
atomisp_update_grid_info(asd, pipe_id, source_pad); atomisp_update_grid_info(asd, pipe_id);
return 0; return 0;
} }
...@@ -4303,7 +4301,7 @@ static void atomisp_get_dis_envelop(struct atomisp_sub_device *asd, ...@@ -4303,7 +4301,7 @@ static void atomisp_get_dis_envelop(struct atomisp_sub_device *asd,
} }
static void atomisp_check_copy_mode(struct atomisp_sub_device *asd, static void atomisp_check_copy_mode(struct atomisp_sub_device *asd,
int source_pad, const struct v4l2_pix_format *f) const struct v4l2_pix_format *f)
{ {
struct v4l2_mbus_framefmt *sink, *src; struct v4l2_mbus_framefmt *sink, *src;
...@@ -4316,7 +4314,7 @@ static void atomisp_check_copy_mode(struct atomisp_sub_device *asd, ...@@ -4316,7 +4314,7 @@ static void atomisp_check_copy_mode(struct atomisp_sub_device *asd,
sink = atomisp_subdev_get_ffmt(&asd->subdev, NULL, sink = atomisp_subdev_get_ffmt(&asd->subdev, NULL,
V4L2_SUBDEV_FORMAT_ACTIVE, ATOMISP_SUBDEV_PAD_SINK); V4L2_SUBDEV_FORMAT_ACTIVE, ATOMISP_SUBDEV_PAD_SINK);
src = atomisp_subdev_get_ffmt(&asd->subdev, NULL, src = atomisp_subdev_get_ffmt(&asd->subdev, NULL,
V4L2_SUBDEV_FORMAT_ACTIVE, source_pad); V4L2_SUBDEV_FORMAT_ACTIVE, ATOMISP_SUBDEV_PAD_SOURCE);
if (sink->code == src->code && sink->width == f->width && sink->height == f->height) if (sink->code == src->code && sink->width == f->width && sink->height == f->height)
asd->copy_mode = true; asd->copy_mode = true;
...@@ -4439,7 +4437,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4439,7 +4437,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
.which = V4L2_SUBDEV_FORMAT_ACTIVE, .which = V4L2_SUBDEV_FORMAT_ACTIVE,
}; };
struct v4l2_rect isp_sink_crop; struct v4l2_rect isp_sink_crop;
u16 source_pad = atomisp_subdev_source_pad(vdev);
struct v4l2_subdev_fh fh; struct v4l2_subdev_fh fh;
int ret; int ret;
...@@ -4447,12 +4444,9 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4447,12 +4444,9 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
if (ret) if (ret)
return ret; return ret;
if (source_pad >= ATOMISP_SUBDEV_PADS_NUM)
return -EINVAL;
dev_dbg(isp->dev, dev_dbg(isp->dev,
"setting resolution %ux%u on pad %u bytesperline %u\n", "setting resolution %ux%u bytesperline %u\n",
f->fmt.pix.width, f->fmt.pix.height, source_pad, f->fmt.pix.bytesperline); f->fmt.pix.width, f->fmt.pix.height, f->fmt.pix.bytesperline);
v4l2_fh_init(&fh.vfh, vdev); v4l2_fh_init(&fh.vfh, vdev);
...@@ -4501,9 +4495,9 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4501,9 +4495,9 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
isp_source_fmt.code = format_bridge->mbus_code; isp_source_fmt.code = format_bridge->mbus_code;
atomisp_subdev_set_ffmt(&asd->subdev, fh.state, atomisp_subdev_set_ffmt(&asd->subdev, fh.state,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE,
source_pad, &isp_source_fmt); ATOMISP_SUBDEV_PAD_SOURCE, &isp_source_fmt);
if (!atomisp_subdev_format_conversion(asd, source_pad)) { if (!atomisp_subdev_format_conversion(asd)) {
padding_w = 0; padding_w = 0;
padding_h = 0; padding_h = 0;
} }
...@@ -4511,8 +4505,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4511,8 +4505,6 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
atomisp_get_dis_envelop(asd, f->fmt.pix.width, f->fmt.pix.height, atomisp_get_dis_envelop(asd, f->fmt.pix.width, f->fmt.pix.height,
&dvs_env_w, &dvs_env_h); &dvs_env_w, &dvs_env_h);
asd->capture_pad = source_pad;
ret = atomisp_set_fmt_to_snr(vdev, &f->fmt.pix, ret = atomisp_set_fmt_to_snr(vdev, &f->fmt.pix,
padding_w, padding_h, dvs_env_w, dvs_env_h); padding_w, padding_h, dvs_env_w, dvs_env_h);
if (ret) { if (ret) {
...@@ -4523,7 +4515,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4523,7 +4515,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
atomisp_csi_lane_config(isp); atomisp_csi_lane_config(isp);
atomisp_check_copy_mode(asd, source_pad, &f->fmt.pix); atomisp_check_copy_mode(asd, &f->fmt.pix);
isp_sink_crop = *atomisp_subdev_get_rect(&asd->subdev, NULL, isp_sink_crop = *atomisp_subdev_get_rect(&asd->subdev, NULL,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE,
...@@ -4534,7 +4526,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4534,7 +4526,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
* width or height) bigger than the desired result. */ * width or height) bigger than the desired result. */
if (isp_sink_crop.width * 9 / 10 < f->fmt.pix.width || if (isp_sink_crop.width * 9 / 10 < f->fmt.pix.width ||
isp_sink_crop.height * 9 / 10 < f->fmt.pix.height || isp_sink_crop.height * 9 / 10 < f->fmt.pix.height ||
(atomisp_subdev_format_conversion(asd, source_pad) && (atomisp_subdev_format_conversion(asd) &&
(asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO || (asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO ||
asd->vfpp->val == ATOMISP_VFPP_DISABLE_SCALER))) { asd->vfpp->val == ATOMISP_VFPP_DISABLE_SCALER))) {
isp_sink_crop.width = f->fmt.pix.width; isp_sink_crop.width = f->fmt.pix.width;
...@@ -4548,7 +4540,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4548,7 +4540,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
&isp_sink_crop); &isp_sink_crop);
atomisp_subdev_set_selection(&asd->subdev, fh.state, atomisp_subdev_set_selection(&asd->subdev, fh.state,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE,
source_pad, V4L2_SEL_TGT_COMPOSE, ATOMISP_SUBDEV_PAD_SOURCE, V4L2_SEL_TGT_COMPOSE,
0, &isp_sink_crop); 0, &isp_sink_crop);
} else if (IS_MOFD) { } else if (IS_MOFD) {
struct v4l2_rect main_compose = {0}; struct v4l2_rect main_compose = {0};
...@@ -4567,7 +4559,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4567,7 +4559,7 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
atomisp_subdev_set_selection(&asd->subdev, fh.state, atomisp_subdev_set_selection(&asd->subdev, fh.state,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE,
source_pad, ATOMISP_SUBDEV_PAD_SOURCE,
V4L2_SEL_TGT_COMPOSE, 0, V4L2_SEL_TGT_COMPOSE, 0,
&main_compose); &main_compose);
} else { } else {
...@@ -4605,12 +4597,12 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f) ...@@ -4605,12 +4597,12 @@ int atomisp_set_fmt(struct video_device *vdev, struct v4l2_format *f)
atomisp_subdev_set_selection(&asd->subdev, fh.state, atomisp_subdev_set_selection(&asd->subdev, fh.state,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE,
source_pad, ATOMISP_SUBDEV_PAD_SOURCE,
V4L2_SEL_TGT_COMPOSE, 0, V4L2_SEL_TGT_COMPOSE, 0,
&main_compose); &main_compose);
} }
ret = atomisp_set_fmt_to_isp(vdev, &output_info, &f->fmt.pix, source_pad); ret = atomisp_set_fmt_to_isp(vdev, &output_info, &f->fmt.pix);
if (ret) { if (ret) {
dev_warn(isp->dev, "Can't set format on ISP. Error %d\n", ret); dev_warn(isp->dev, "Can't set format on ISP. Error %d\n", ret);
return -EINVAL; return -EINVAL;
......
...@@ -113,8 +113,7 @@ void atomisp_css_free_metadata_buffer(struct atomisp_metadata_buf ...@@ -113,8 +113,7 @@ void atomisp_css_free_metadata_buffer(struct atomisp_metadata_buf
*metadata_buf); *metadata_buf);
int atomisp_css_get_grid_info(struct atomisp_sub_device *asd, int atomisp_css_get_grid_info(struct atomisp_sub_device *asd,
enum ia_css_pipe_id pipe_id, enum ia_css_pipe_id pipe_id);
int source_pad);
int atomisp_alloc_3a_output_buf(struct atomisp_sub_device *asd); int atomisp_alloc_3a_output_buf(struct atomisp_sub_device *asd);
...@@ -276,7 +275,6 @@ int atomisp_css_video_configure_output(struct atomisp_sub_device *asd, ...@@ -276,7 +275,6 @@ int atomisp_css_video_configure_output(struct atomisp_sub_device *asd,
enum ia_css_frame_format format); enum ia_css_frame_format format);
int atomisp_get_css_frame_info(struct atomisp_sub_device *asd, int atomisp_get_css_frame_info(struct atomisp_sub_device *asd,
u16 source_pad,
struct ia_css_frame_info *frame_info); struct ia_css_frame_info *frame_info);
int atomisp_css_video_configure_viewfinder(struct atomisp_sub_device *asd, int atomisp_css_video_configure_viewfinder(struct atomisp_sub_device *asd,
......
...@@ -1328,8 +1328,7 @@ void atomisp_css_free_stat_buffers(struct atomisp_sub_device *asd) ...@@ -1328,8 +1328,7 @@ void atomisp_css_free_stat_buffers(struct atomisp_sub_device *asd)
} }
int atomisp_css_get_grid_info(struct atomisp_sub_device *asd, int atomisp_css_get_grid_info(struct atomisp_sub_device *asd,
enum ia_css_pipe_id pipe_id, enum ia_css_pipe_id pipe_id)
int source_pad)
{ {
struct ia_css_pipe_info p_info; struct ia_css_pipe_info p_info;
struct ia_css_grid_info old_info; struct ia_css_grid_info old_info;
...@@ -2432,7 +2431,6 @@ static unsigned int atomisp_get_pipe_index(struct atomisp_sub_device *asd) ...@@ -2432,7 +2431,6 @@ static unsigned int atomisp_get_pipe_index(struct atomisp_sub_device *asd)
} }
int atomisp_get_css_frame_info(struct atomisp_sub_device *asd, int atomisp_get_css_frame_info(struct atomisp_sub_device *asd,
u16 source_pad,
struct ia_css_frame_info *frame_info) struct ia_css_frame_info *frame_info)
{ {
struct ia_css_pipe_info info; struct ia_css_pipe_info info;
......
...@@ -47,7 +47,6 @@ static int atomisp_queue_setup(struct vb2_queue *vq, ...@@ -47,7 +47,6 @@ static int atomisp_queue_setup(struct vb2_queue *vq,
unsigned int sizes[], struct device *alloc_devs[]) unsigned int sizes[], struct device *alloc_devs[])
{ {
struct atomisp_video_pipe *pipe = container_of(vq, struct atomisp_video_pipe, vb_queue); struct atomisp_video_pipe *pipe = container_of(vq, struct atomisp_video_pipe, vb_queue);
u16 source_pad = atomisp_subdev_source_pad(&pipe->vdev);
int ret; int ret;
mutex_lock(&pipe->asd->isp->mutex); /* for get_css_frame_info() / set_fmt() */ mutex_lock(&pipe->asd->isp->mutex); /* for get_css_frame_info() / set_fmt() */
...@@ -56,7 +55,7 @@ static int atomisp_queue_setup(struct vb2_queue *vq, ...@@ -56,7 +55,7 @@ static int atomisp_queue_setup(struct vb2_queue *vq,
* When VIDIOC_S_FMT has not been called before VIDIOC_REQBUFS, then * When VIDIOC_S_FMT has not been called before VIDIOC_REQBUFS, then
* this will fail. Call atomisp_set_fmt() ourselves and try again. * this will fail. Call atomisp_set_fmt() ourselves and try again.
*/ */
ret = atomisp_get_css_frame_info(pipe->asd, source_pad, &pipe->frame_info); ret = atomisp_get_css_frame_info(pipe->asd, &pipe->frame_info);
if (ret) { if (ret) {
struct v4l2_format f = { struct v4l2_format f = {
.fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420, .fmt.pix.pixelformat = V4L2_PIX_FMT_YUV420,
...@@ -68,7 +67,7 @@ static int atomisp_queue_setup(struct vb2_queue *vq, ...@@ -68,7 +67,7 @@ static int atomisp_queue_setup(struct vb2_queue *vq,
if (ret) if (ret)
goto out; goto out;
ret = atomisp_get_css_frame_info(pipe->asd, source_pad, &pipe->frame_info); ret = atomisp_get_css_frame_info(pipe->asd, &pipe->frame_info);
if (ret) if (ret)
goto out; goto out;
} }
...@@ -654,7 +653,7 @@ static int atomisp_release(struct file *file) ...@@ -654,7 +653,7 @@ static int atomisp_release(struct file *file)
done: done:
atomisp_subdev_set_selection(&asd->subdev, fh.state, atomisp_subdev_set_selection(&asd->subdev, fh.state,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE,
atomisp_subdev_source_pad(vdev), ATOMISP_SUBDEV_PAD_SOURCE,
V4L2_SEL_TGT_COMPOSE, 0, V4L2_SEL_TGT_COMPOSE, 0,
&clear_compose); &clear_compose);
mutex_unlock(&isp->mutex); mutex_unlock(&isp->mutex);
......
...@@ -1131,7 +1131,7 @@ static unsigned int atomisp_sensor_start_stream(struct atomisp_sub_device *asd) ...@@ -1131,7 +1131,7 @@ static unsigned int atomisp_sensor_start_stream(struct atomisp_sub_device *asd)
if (asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO || if (asd->run_mode->val == ATOMISP_RUN_MODE_VIDEO ||
(asd->run_mode->val == ATOMISP_RUN_MODE_STILL_CAPTURE && (asd->run_mode->val == ATOMISP_RUN_MODE_STILL_CAPTURE &&
!atomisp_is_mbuscode_raw(asd->fmt[asd->capture_pad].fmt.code))) !atomisp_is_mbuscode_raw(asd->fmt[ATOMISP_SUBDEV_PAD_SOURCE].fmt.code)))
return 2; return 2;
else else
return 1; return 1;
...@@ -1159,7 +1159,6 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count) ...@@ -1159,7 +1159,6 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count)
{ {
struct atomisp_video_pipe *pipe = vq_to_pipe(vq); struct atomisp_video_pipe *pipe = vq_to_pipe(vq);
struct atomisp_sub_device *asd = pipe->asd; struct atomisp_sub_device *asd = pipe->asd;
struct video_device *vdev = &pipe->vdev;
struct atomisp_device *isp = asd->isp; struct atomisp_device *isp = asd->isp;
struct pci_dev *pdev = to_pci_dev(isp->dev); struct pci_dev *pdev = to_pci_dev(isp->dev);
enum ia_css_pipe_id css_pipe_id; enum ia_css_pipe_id css_pipe_id;
...@@ -1167,9 +1166,9 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count) ...@@ -1167,9 +1166,9 @@ int atomisp_start_streaming(struct vb2_queue *vq, unsigned int count)
unsigned long irqflags; unsigned long irqflags;
int ret; int ret;
mutex_lock(&isp->mutex); dev_dbg(isp->dev, "Start stream\n");
dev_dbg(isp->dev, "Start stream on pad %d\n", atomisp_subdev_source_pad(vdev)); mutex_lock(&isp->mutex);
ret = atomisp_pipe_check(pipe, false); ret = atomisp_pipe_check(pipe, false);
if (ret) if (ret)
...@@ -1291,7 +1290,6 @@ void atomisp_stop_streaming(struct vb2_queue *vq) ...@@ -1291,7 +1290,6 @@ void atomisp_stop_streaming(struct vb2_queue *vq)
{ {
struct atomisp_video_pipe *pipe = vq_to_pipe(vq); struct atomisp_video_pipe *pipe = vq_to_pipe(vq);
struct atomisp_sub_device *asd = pipe->asd; struct atomisp_sub_device *asd = pipe->asd;
struct video_device *vdev = &pipe->vdev;
struct atomisp_device *isp = asd->isp; struct atomisp_device *isp = asd->isp;
struct pci_dev *pdev = to_pci_dev(isp->dev); struct pci_dev *pdev = to_pci_dev(isp->dev);
enum ia_css_pipe_id css_pipe_id; enum ia_css_pipe_id css_pipe_id;
...@@ -1300,10 +1298,9 @@ void atomisp_stop_streaming(struct vb2_queue *vq) ...@@ -1300,10 +1298,9 @@ void atomisp_stop_streaming(struct vb2_queue *vq)
unsigned long flags; unsigned long flags;
int ret; int ret;
mutex_lock(&isp->mutex); dev_dbg(isp->dev, "Stop stream\n");
dev_dbg(isp->dev, "Stop stream on pad %d\n", atomisp_subdev_source_pad(vdev));
mutex_lock(&isp->mutex);
/* /*
* There is no guarantee that the buffers queued to / owned by the ISP * There is no guarantee that the buffers queued to / owned by the ISP
* will properly be returned to the queue when stopping. Set a flag to * will properly be returned to the queue when stopping. Set a flag to
......
...@@ -117,35 +117,19 @@ const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_by_atomisp_in_fmt( ...@@ -117,35 +117,19 @@ const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_by_atomisp_in_fmt(
return NULL; return NULL;
} }
bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd, bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd)
unsigned int source_pad)
{ {
struct v4l2_mbus_framefmt *sink, *src; struct v4l2_mbus_framefmt *sink, *src;
sink = atomisp_subdev_get_ffmt(&asd->subdev, NULL, sink = atomisp_subdev_get_ffmt(&asd->subdev, NULL,
V4L2_SUBDEV_FORMAT_ACTIVE, V4L2_SUBDEV_FORMAT_ACTIVE, ATOMISP_SUBDEV_PAD_SINK);
ATOMISP_SUBDEV_PAD_SINK);
src = atomisp_subdev_get_ffmt(&asd->subdev, NULL, src = atomisp_subdev_get_ffmt(&asd->subdev, NULL,
V4L2_SUBDEV_FORMAT_ACTIVE, source_pad); V4L2_SUBDEV_FORMAT_ACTIVE, ATOMISP_SUBDEV_PAD_SOURCE);
return atomisp_is_mbuscode_raw(sink->code) return atomisp_is_mbuscode_raw(sink->code)
&& !atomisp_is_mbuscode_raw(src->code); && !atomisp_is_mbuscode_raw(src->code);
} }
uint16_t atomisp_subdev_source_pad(struct video_device *vdev)
{
struct media_link *link;
u16 ret = 0;
list_for_each_entry(link, &vdev->entity.links, list) {
if (link->source) {
ret = link->source->index;
break;
}
}
return ret;
}
/* /*
* V4L2 subdev operations * V4L2 subdev operations
*/ */
...@@ -404,8 +388,7 @@ int atomisp_subdev_set_selection(struct v4l2_subdev *sd, ...@@ -404,8 +388,7 @@ int atomisp_subdev_set_selection(struct v4l2_subdev *sd,
padding_h = 12; padding_h = 12;
} }
if (atomisp_subdev_format_conversion(isp_sd, if (atomisp_subdev_format_conversion(isp_sd)
isp_sd->capture_pad)
&& crop[pad]->width && crop[pad]->height) { && crop[pad]->width && crop[pad]->height) {
crop[pad]->width -= padding_w; crop[pad]->width -= padding_w;
crop[pad]->height -= padding_h; crop[pad]->height -= padding_h;
......
...@@ -241,7 +241,6 @@ struct atomisp_sub_device { ...@@ -241,7 +241,6 @@ struct atomisp_sub_device {
struct v4l2_subdev subdev; struct v4l2_subdev subdev;
struct media_pad pads[ATOMISP_SUBDEV_PADS_NUM]; struct media_pad pads[ATOMISP_SUBDEV_PADS_NUM];
struct atomisp_pad_format fmt[ATOMISP_SUBDEV_PADS_NUM]; struct atomisp_pad_format fmt[ATOMISP_SUBDEV_PADS_NUM];
u16 capture_pad; /* main capture pad; defines much of isp config */
unsigned int output; unsigned int output;
struct atomisp_video_pipe video_out; struct atomisp_video_pipe video_out;
...@@ -340,9 +339,7 @@ const struct atomisp_in_fmt_conv ...@@ -340,9 +339,7 @@ const struct atomisp_in_fmt_conv
atomisp_in_fmt); atomisp_in_fmt);
const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_compressed(u32 code); const struct atomisp_in_fmt_conv *atomisp_find_in_fmt_conv_compressed(u32 code);
bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd, bool atomisp_subdev_format_conversion(struct atomisp_sub_device *asd);
unsigned int source_pad);
uint16_t atomisp_subdev_source_pad(struct video_device *vdev);
/* Get pointer to appropriate format */ /* Get pointer to appropriate format */
struct v4l2_mbus_framefmt struct v4l2_mbus_framefmt
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment