lkml.org 
[lkml]   [2020]   [Oct]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v2 4/7] media: i2c: max9286: Make channel amplitude programmable
    From
    Date
    Hi Jacopo,

    On 15/10/2020 19:27, Jacopo Mondi wrote:
    > Instrument the function that configures the reverse channel with a
    > programmable amplitude value.
    >
    > This change serves to prepare to adjust the reverse channel amplitude
    > depending on the remote end high-threshold configuration.
    >
    > Signed-off-by: Jacopo Mondi <jacopo+renesas@jmondi.org>
    > ---
    > drivers/media/i2c/max9286.c | 22 ++++++++++++++++------
    > 1 file changed, 16 insertions(+), 6 deletions(-)
    >
    > diff --git a/drivers/media/i2c/max9286.c b/drivers/media/i2c/max9286.c
    > index 89a7248f5c25..163e102199e3 100644
    > --- a/drivers/media/i2c/max9286.c
    > +++ b/drivers/media/i2c/max9286.c
    > @@ -906,19 +906,29 @@ static void max9286_v4l2_unregister(struct max9286_priv *priv)
    > * Probe/Remove
    > */
    >
    > -static void max9286_reverse_channel_setup(struct max9286_priv *priv)
    > +static void max9286_reverse_channel_setup(struct max9286_priv *priv,
    > + unsigned int chan_amplitude)
    > {
    > + /* Reverse channel transmission time: default to 1. */
    > + u8 chan_config = MAX9286_REV_TRF(1);
    > +
    > /*
    > * Reverse channel setup.
    > *
    > * - Enable custom reverse channel configuration (through register 0x3f)
    > * and set the first pulse length to 35 clock cycles.
    > - * - Increase the reverse channel amplitude to 170mV to accommodate the
    > - * high threshold enabled by the serializer driver.
    > + * - Adjust reverse channel amplitude: values > 130 are programmed
    > + * using the additional +100mV REV_AMP_X boost flag
    > */
    > max9286_write(priv, 0x3f, MAX9286_EN_REV_CFG | MAX9286_REV_FLEN(35));
    > - max9286_write(priv, 0x3b, MAX9286_REV_TRF(1) | MAX9286_REV_AMP(70) |
    > - MAX9286_REV_AMP_X);
    > +

    Should we also clamp to min/max values at all?
    Probably not needed, as it's only an internal helper.


    > + if (chan_amplitude > 100) {
    > + /* It is not possible express values (100 < x < 130) */

    'possible to express'

    > + chan_amplitude = chan_amplitude < 130
    > + ? 30 : chan_amplitude - 100;

    We could round < 115 to 100, and >= 115 to 130, but that's probably more
    effort that it's worth, so I think this is fine.

    I think it's really helpful to codify this parameter though:

    Reviewed-by: Kieran Bingham <kieran.bingham+renesas@ideasonboard.com>

    > + chan_config |= MAX9286_REV_AMP_X;
    > + }
    > + max9286_write(priv, 0x3b, chan_config | MAX9286_REV_AMP(chan_amplitude));
    > usleep_range(2000, 2500);
    > }
    >
    > @@ -957,7 +967,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);
    > + max9286_reverse_channel_setup(priv, 170);
    >
    > /*
    > * Enable GMSL links, mask unused ones and autodetect link
    >

    \
     
     \ /
      Last update: 2020-10-15 22:01    [W:5.510 / U:0.692 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site