Commit 902edc2a authored by Jacopo Mondi's avatar Jacopo Mondi Committed by Mauro Carvalho Chehab

media: i2c: max9286: Cache channel amplitude

Cache the current channel amplitude in a driver variable
to skip updating it if the newly requested value is the same
as the currently configured one.
Signed-off-by: default avatarJacopo Mondi <jacopo+renesas@jmondi.org>
Reviewed-by: default avatarKieran Bingham <kieran.bingham+renesas@ideasonboard.com>
Reviewed-by: default avatarLaurent Pinchart <laurent.pinchart@ideasonboard.com>
Signed-off-by: default avatarHans Verkuil <hverkuil-cisco@xs4all.nl>
Signed-off-by: default avatarMauro Carvalho Chehab <mchehab+huawei@kernel.org>
parent f78723eb
...@@ -165,6 +165,7 @@ struct max9286_priv { ...@@ -165,6 +165,7 @@ struct max9286_priv {
/* The initial reverse control channel amplitude. */ /* The initial reverse control channel amplitude. */
u32 init_rev_chan_mv; u32 init_rev_chan_mv;
u32 rev_chan_mv;
struct v4l2_ctrl_handler ctrls; struct v4l2_ctrl_handler ctrls;
struct v4l2_ctrl *pixelrate; struct v4l2_ctrl *pixelrate;
...@@ -341,8 +342,15 @@ static void max9286_configure_i2c(struct max9286_priv *priv, bool localack) ...@@ -341,8 +342,15 @@ static void max9286_configure_i2c(struct max9286_priv *priv, bool localack)
static void max9286_reverse_channel_setup(struct max9286_priv *priv, static void max9286_reverse_channel_setup(struct max9286_priv *priv,
unsigned int chan_amplitude) unsigned int chan_amplitude)
{ {
u8 chan_config;
if (priv->rev_chan_mv == chan_amplitude)
return;
priv->rev_chan_mv = chan_amplitude;
/* Reverse channel transmission time: default to 1. */ /* Reverse channel transmission time: default to 1. */
u8 chan_config = MAX9286_REV_TRF(1); chan_config = MAX9286_REV_TRF(1);
/* /*
* Reverse channel setup. * Reverse channel setup.
...@@ -564,8 +572,7 @@ static int max9286_notify_bound(struct v4l2_async_notifier *notifier, ...@@ -564,8 +572,7 @@ static int max9286_notify_bound(struct v4l2_async_notifier *notifier,
* - Disable auto-ack as communication on the control channel are now * - Disable auto-ack as communication on the control channel are now
* stable. * stable.
*/ */
if (priv->init_rev_chan_mv < 170) max9286_reverse_channel_setup(priv, 170);
max9286_reverse_channel_setup(priv, 170);
max9286_check_config_link(priv, priv->source_mask); max9286_check_config_link(priv, priv->source_mask);
/* /*
......
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