From: jacopo mondi <jacopo@jmondi.org>
To: Akinobu Mita <akinobu.mita@gmail.com>
Cc: linux-media@vger.kernel.org, devicetree@vger.kernel.org,
Jacopo Mondi <jacopo+renesas@jmondi.org>,
Laurent Pinchart <laurent.pinchart@ideasonboard.com>,
Hans Verkuil <hans.verkuil@cisco.com>,
Sakari Ailus <sakari.ailus@linux.intel.com>,
Mauro Carvalho Chehab <mchehab@s-opensource.com>
Subject: Re: [PATCH v5 13/14] media: ov772x: make set_fmt() and s_frame_interval() return -EBUSY while streaming
Date: Mon, 14 May 2018 11:10:27 +0200 [thread overview]
Message-ID: <20180514091027.GE5956@w540> (raw)
In-Reply-To: <1525616369-8843-14-git-send-email-akinobu.mita@gmail.com>
[-- Attachment #1: Type: text/plain, Size: 3264 bytes --]
Hi Akinobu,
thanks for the patch
On Sun, May 06, 2018 at 11:19:28PM +0900, Akinobu Mita wrote:
> The ov772x driver is going to offer a V4L2 sub-device interface, so
> changing the output data format and the frame interval on this sub-device
> can be made anytime. However, these requests are preferred to fail while
> the video stream on the device is active.
>
> Cc: Jacopo Mondi <jacopo+renesas@jmondi.org>
> Cc: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
> Cc: Hans Verkuil <hans.verkuil@cisco.com>
> Cc: Sakari Ailus <sakari.ailus@linux.intel.com>
> Cc: Mauro Carvalho Chehab <mchehab@s-opensource.com>
> Signed-off-by: Akinobu Mita <akinobu.mita@gmail.com>
Reviewed-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
Thanks
j
> ---
> * v5:
> - Make s_frame_interval() return -EBUSY while streaming
>
> drivers/media/i2c/ov772x.c | 43 +++++++++++++++++++++++++++++++++----------
> 1 file changed, 33 insertions(+), 10 deletions(-)
>
> diff --git a/drivers/media/i2c/ov772x.c b/drivers/media/i2c/ov772x.c
> index 262a7e5..4b479f9 100644
> --- a/drivers/media/i2c/ov772x.c
> +++ b/drivers/media/i2c/ov772x.c
> @@ -424,9 +424,10 @@ struct ov772x_priv {
> /* band_filter = COM8[5] ? 256 - BDBASE : 0 */
> struct v4l2_ctrl *band_filter_ctrl;
> unsigned int fps;
> - /* lock to protect power_count */
> + /* lock to protect power_count and streaming */
> struct mutex lock;
> int power_count;
> + int streaming;
> #ifdef CONFIG_MEDIA_CONTROLLER
> struct media_pad pad;
> #endif
> @@ -603,18 +604,28 @@ static int ov772x_s_stream(struct v4l2_subdev *sd, int enable)
> {
> struct i2c_client *client = v4l2_get_subdevdata(sd);
> struct ov772x_priv *priv = to_ov772x(sd);
> + int ret = 0;
>
> - if (!enable) {
> - ov772x_mask_set(client, COM2, SOFT_SLEEP_MODE, SOFT_SLEEP_MODE);
> - return 0;
> - }
> + mutex_lock(&priv->lock);
>
> - ov772x_mask_set(client, COM2, SOFT_SLEEP_MODE, 0);
> + if (priv->streaming == enable)
> + goto done;
>
> - dev_dbg(&client->dev, "format %d, win %s\n",
> - priv->cfmt->code, priv->win->name);
> + ret = ov772x_mask_set(client, COM2, SOFT_SLEEP_MODE,
> + enable ? 0 : SOFT_SLEEP_MODE);
> + if (ret)
> + goto done;
>
> - return 0;
> + if (enable) {
> + dev_dbg(&client->dev, "format %d, win %s\n",
> + priv->cfmt->code, priv->win->name);
> + }
> + priv->streaming = enable;
> +
> +done:
> + mutex_unlock(&priv->lock);
> +
> + return ret;
> }
>
> static unsigned int ov772x_select_fps(struct ov772x_priv *priv,
> @@ -743,9 +754,15 @@ static int ov772x_s_frame_interval(struct v4l2_subdev *sd,
> unsigned int fps;
> int ret = 0;
>
> + mutex_lock(&priv->lock);
> +
> + if (priv->streaming) {
> + ret = -EBUSY;
> + goto error;
> + }
> +
> fps = ov772x_select_fps(priv, tpf);
>
> - mutex_lock(&priv->lock);
> /*
> * If the device is not powered up by the host driver do
> * not apply any changes to H/W at this time. Instead
> @@ -1222,6 +1239,12 @@ static int ov772x_set_fmt(struct v4l2_subdev *sd,
> }
>
> mutex_lock(&priv->lock);
> +
> + if (priv->streaming) {
> + ret = -EBUSY;
> + goto error;
> + }
> +
> /*
> * If the device is not powered up by the host driver do
> * not apply any changes to H/W at this time. Instead
> --
> 2.7.4
>
[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 819 bytes --]
next prev parent reply other threads:[~2018-05-14 9:10 UTC|newest]
Thread overview: 28+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-05-06 14:19 [PATCH v5 00/14] media: ov772x: support media controller, device tree probing, etc Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 01/14] media: dt-bindings: ov772x: add device tree binding Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 02/14] media: ov772x: correct setting of banding filter Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 03/14] media: ov772x: allow i2c controllers without I2C_FUNC_PROTOCOL_MANGLING Akinobu Mita
2018-05-29 12:59 ` Mauro Carvalho Chehab
2018-05-29 13:29 ` Wolfram Sang
2018-05-29 14:32 ` Mauro Carvalho Chehab
2018-05-06 14:19 ` [PATCH v5 04/14] media: ov772x: add checks for register read errors Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 05/14] media: ov772x: add media controller support Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 06/14] media: ov772x: use generic names for reset and powerdown gpios Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 07/14] media: ov772x: omit consumer ID when getting clock reference Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 08/14] media: ov772x: support device tree probing Akinobu Mita
2018-05-07 9:26 ` Sakari Ailus
2018-05-07 14:52 ` Akinobu Mita
2018-05-14 9:16 ` jacopo mondi
2018-05-14 11:21 ` Sakari Ailus
2018-05-06 14:19 ` [PATCH v5 09/14] media: ov772x: handle nested s_power() calls Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 10/14] media: ov772x: reconstruct s_frame_interval() Akinobu Mita
2018-05-14 9:02 ` jacopo mondi
2018-05-06 14:19 ` [PATCH v5 11/14] media: ov772x: use v4l2_ctrl to get current control value Akinobu Mita
2018-05-06 14:19 ` [PATCH v5 12/14] media: ov772x: avoid accessing registers under power saving mode Akinobu Mita
2018-05-14 9:06 ` jacopo mondi
2018-05-14 9:49 ` Sakari Ailus
2018-05-14 10:03 ` jacopo mondi
2018-05-06 14:19 ` [PATCH v5 13/14] media: ov772x: make set_fmt() and s_frame_interval() return -EBUSY while streaming Akinobu Mita
2018-05-14 9:10 ` jacopo mondi [this message]
2018-05-06 14:19 ` [PATCH v5 14/14] media: ov772x: create subdevice device node Akinobu Mita
2018-05-14 9:11 ` jacopo mondi
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20180514091027.GE5956@w540 \
--to=jacopo@jmondi.org \
--cc=akinobu.mita@gmail.com \
--cc=devicetree@vger.kernel.org \
--cc=hans.verkuil@cisco.com \
--cc=jacopo+renesas@jmondi.org \
--cc=laurent.pinchart@ideasonboard.com \
--cc=linux-media@vger.kernel.org \
--cc=mchehab@s-opensource.com \
--cc=sakari.ailus@linux.intel.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.