lkml.org 
[lkml]   [2021]   [Jul]   [28]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH v2 24/27] ALSA: hda/cs8409: Use timeout rather than retries for I2C transaction waits
    Date
    From: Stefan Binding <sbinding@opensource.cirrus.com>

    Signed-off-by: Stefan Binding <sbinding@opensource.cirrus.com>
    Signed-off-by: Vitaly Rodionov <vitalyr@opensource.cirrus.com>

    Changes in v2:
    - No changes

    ---
    sound/pci/hda/patch_cs8409.c | 16 +++-------------
    sound/pci/hda/patch_cs8409.h | 2 ++
    2 files changed, 5 insertions(+), 13 deletions(-)

    diff --git a/sound/pci/hda/patch_cs8409.c b/sound/pci/hda/patch_cs8409.c
    index 5b6d843ab7fb..422381913bc6 100644
    --- a/sound/pci/hda/patch_cs8409.c
    +++ b/sound/pci/hda/patch_cs8409.c
    @@ -119,24 +119,14 @@ static void cs8409_enable_i2c_clock(struct hda_codec *codec)
    * @codec: the codec instance
    *
    * Wait for I2C transaction to complete.
    - * Return -1 if transaction wait times out.
    + * Return -ETIMEDOUT if transaction wait times out.
    */
    static int cs8409_i2c_wait_complete(struct hda_codec *codec)
    {
    - int repeat = 5;
    unsigned int retval;

    - do {
    - retval = cs8409_vendor_coef_get(codec, CS8409_I2C_STS);
    - if ((retval & 0x18) != 0x18) {
    - usleep_range(2000, 4000);
    - --repeat;
    - } else
    - return 0;
    -
    - } while (repeat);
    -
    - return -1;
    + return read_poll_timeout(cs8409_vendor_coef_get, retval, retval & 0x18,
    + CS42L42_I2C_SLEEP_US, CS42L42_I2C_TIMEOUT_US, false, codec, CS8409_I2C_STS);
    }

    /**
    diff --git a/sound/pci/hda/patch_cs8409.h b/sound/pci/hda/patch_cs8409.h
    index 2208be2ffad1..71dbbd8e2f3b 100644
    --- a/sound/pci/hda/patch_cs8409.h
    +++ b/sound/pci/hda/patch_cs8409.h
    @@ -231,6 +231,8 @@ enum cs8409_coefficient_index_registers {
    #define CS42L42_HSTYPE_MASK (0x03)
    #define CS42L42_JACK_INSERTED (0x0C)
    #define CS42L42_JACK_REMOVED (0x00)
    +#define CS42L42_I2C_TIMEOUT_US (20000)
    +#define CS42L42_I2C_SLEEP_US (2000)

    /* Dell BULLSEYE / WARLOCK / CYBORG Specific Definitions */

    --
    2.25.1
    \
     
     \ /
      Last update: 2021-07-28 15:48    [W:4.182 / U:1.320 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site