V4L: soc_camera: allow reading from video device if supported
Commit Message
Try reading on video device. If the camera bus driver supports reading
we can try it and return the result. Also add a debug line.
Signed-off-by: Anatolij Gustschin <agust@denx.de>
---
drivers/media/platform/soc_camera.c | 9 ++++++++-
1 files changed, 8 insertions(+), 1 deletions(-)
@@ -645,9 +645,16 @@ static ssize_t soc_camera_read(struct file *file, char __user *buf,
size_t count, loff_t *ppos)
{
struct soc_camera_device *icd = file->private_data;
+ struct soc_camera_host *ici = to_soc_camera_host(icd->parent);
int err = -EINVAL;
- dev_err(icd->pdev, "camera device read not implemented\n");
+ dev_dbg(icd->pdev, "read called, buf %p\n", buf);
+
+ if (ici->ops->init_videobuf2 && icd->vb2_vidq.io_modes & VB2_READ)
+ err = vb2_read(&icd->vb2_vidq, buf, count, ppos,
+ file->f_flags & O_NONBLOCK);
+ else
+ dev_err(icd->pdev, "camera device read not implemented\n");
return err;
}