lkml.org 
[lkml]   [2020]   [Nov]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v5 5/8] media: i2c: max9286: Configure reverse channel amplitude
    Date
    Adjust the initial reverse channel amplitude parsing from
    firmware interface the 'maxim,initial-reverse-channel-mV'
    property.

    This change is required for both rdacm20 and rdacm21 camera
    modules to be correctly probed when used in combination with
    the max9286 deserializer.

    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>
    Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
    ---
    drivers/media/i2c/max9286.c | 20 +++++++++++++++++++-
    1 file changed, 19 insertions(+), 1 deletion(-)

    diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
    index 31e27d0f34f1..11ba047f3793 100644
    --- a/drivers/media/i2c/max9286.c
    +++ b/drivers/media/i2c/max9286.c
    @@ -163,6 +163,8 @@ struct max9286_priv {
    unsigned int mux_channel;
    bool mux_open;

    + u32 reverse_channel_mV;
    +
    struct v4l2_ctrl_handler ctrls;
    struct v4l2_ctrl *pixelrate;

    @@ -557,10 +559,14 @@ static int max9286_notify_bound(struct v4l2_async_notifier *notifier,
    * All enabled sources have probed and enabled their reverse control
    * channels:
    *
    + * - Increase the reverse channel amplitude to compensate for the
    + * remote ends high threshold, if not done already
    * - Verify all configuration links are properly detected
    * - Disable auto-ack as communication on the control channel are now
    * stable.
    */
    + if (priv->reverse_channel_mV < 170)
    + max9286_reverse_channel_setup(priv, 170);
    max9286_check_config_link(priv, priv->source_mask);

    /*
    @@ -967,7 +973,7 @@ static int max9286_setup(struct max9286_priv *priv)
    * only. This should be disabled after the mux is initialised.
    */
    max9286_configure_i2c(priv, true);
    - max9286_reverse_channel_setup(priv, 170);
    + max9286_reverse_channel_setup(priv, priv->reverse_channel_mV);

    /*
    * Enable GMSL links, mask unused ones and autodetect link
    @@ -1235,6 +1241,18 @@ static int max9286_parse_dt(struct max9286_priv *priv)
    }
    of_node_put(node);

    + /*
    + * Parse the initial value of the reverse channel amplitude from
    + * the firmware interface.
    + *
    + * Default it to 170mV for backward compatibility with DTB that do not
    + * provide the property.
    + */
    + if (of_property_read_u32(dev->of_node,
    + "maxim,initial-reverse-channel-mV",
    + &priv->reverse_channel_mV))
    + priv->reverse_channel_mV = 170;
    +
    priv->route_mask = priv->source_mask;

    return 0;
    --
    2.29.1
    \
     
     \ /
      Last update: 2020-11-16 15:10    [W:2.649 / U:0.152 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site