mirror of
https://mirrors.bfsu.edu.cn/git/linux.git
synced 2024-12-22 18:44:44 +08:00
media: atomisp: Remove csi2_link_setup()
Looking at csi2_link_setup(), this function can never work, it does a switch-case like this: switch (local->index | is_media_entity_v4l2_subdev(remote->entity)) with cases like this: case ATOMISP_SUBDEV_PAD_SOURCE | MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN where ATOMISP_SUBDEV_PAD_SOURCE matches an index (0-1) and MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN is 0x00020000, but is_media_entity_v4l2_subdev(remote->entity) does not return MEDIA_ENT_F_* values, it return a bool, so 0 or 1 which means that non of the cases can ever match the input value. Looking at the rest of the function all it ever does (if it would actually hit one of the cases) is set the atomisp_mipi_csi2_device struct's output member. And checking the rest of the atomisp code that member is never read. Also userspace does not actually setup media-controller links when using the atomisp /dev/video$ nodes since all the links are fixed. So csi2_link_setup() never runs. Remove the unnecessary and broken csi2_link_setup() function and also remove the unused atomisp_mipi_csi2_device struct's output member. Signed-off-by: Hans de Goede <hdegoede@redhat.com> Signed-off-by: Mauro Carvalho Chehab <mchehab@kernel.org>
This commit is contained in:
parent
15b5128caf
commit
c7c49ac854
@ -175,47 +175,8 @@ static const struct v4l2_subdev_ops csi2_ops = {
|
||||
.pad = &csi2_pad_ops,
|
||||
};
|
||||
|
||||
/*
|
||||
* csi2_link_setup - Setup CSI2 connections.
|
||||
* @entity : Pointer to media entity structure
|
||||
* @local : Pointer to local pad array
|
||||
* @remote : Pointer to remote pad array
|
||||
* @flags : Link flags
|
||||
* return -EINVAL or zero on success
|
||||
*/
|
||||
static int csi2_link_setup(struct media_entity *entity,
|
||||
const struct media_pad *local,
|
||||
const struct media_pad *remote, u32 flags)
|
||||
{
|
||||
struct v4l2_subdev *sd = media_entity_to_v4l2_subdev(entity);
|
||||
struct atomisp_mipi_csi2_device *csi2 = v4l2_get_subdevdata(sd);
|
||||
u32 result = local->index | is_media_entity_v4l2_subdev(remote->entity);
|
||||
|
||||
switch (result) {
|
||||
case CSI2_PAD_SOURCE | MEDIA_ENT_F_OLD_BASE:
|
||||
/* not supported yet */
|
||||
return -EINVAL;
|
||||
|
||||
case CSI2_PAD_SOURCE | MEDIA_ENT_F_V4L2_SUBDEV_UNKNOWN:
|
||||
if (flags & MEDIA_LNK_FL_ENABLED) {
|
||||
if (csi2->output & ~CSI2_OUTPUT_ISP_SUBDEV)
|
||||
return -EBUSY;
|
||||
csi2->output |= CSI2_OUTPUT_ISP_SUBDEV;
|
||||
} else {
|
||||
csi2->output &= ~CSI2_OUTPUT_ISP_SUBDEV;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
/* Link from camera to CSI2 is fixed... */
|
||||
return -EINVAL;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
/* media operations */
|
||||
static const struct media_entity_operations csi2_media_ops = {
|
||||
.link_setup = csi2_link_setup,
|
||||
.link_validate = v4l2_subdev_link_validate,
|
||||
};
|
||||
|
||||
|
@ -25,9 +25,6 @@
|
||||
#define CSI2_PAD_SOURCE 1
|
||||
#define CSI2_PADS_NUM 2
|
||||
|
||||
#define CSI2_OUTPUT_ISP_SUBDEV BIT(0)
|
||||
#define CSI2_OUTPUT_MEMORY BIT(1)
|
||||
|
||||
struct atomisp_device;
|
||||
struct v4l2_device;
|
||||
struct atomisp_sub_device;
|
||||
@ -39,8 +36,6 @@ struct atomisp_mipi_csi2_device {
|
||||
|
||||
struct v4l2_ctrl_handler ctrls;
|
||||
struct atomisp_device *isp;
|
||||
|
||||
u32 output; /* output direction */
|
||||
};
|
||||
|
||||
int atomisp_csi2_set_ffmt(struct v4l2_subdev *sd,
|
||||
|
Loading…
Reference in New Issue
Block a user