lkml.org 
[lkml]   [2013]   [Nov]   [8]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 3/4] extcon: arizona: Fix race with microphone detection and removal
    Date
    The microphone detection code is run as delayed work to provide
    additional debounce, it is possible that the jack could have been
    removed by the time we process the microphone detection. Turn this
    case into a no op.

    Signed-off-by: Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
    ---
    drivers/extcon/extcon-arizona.c | 13 +++++++++++++
    1 files changed, 13 insertions(+), 0 deletions(-)

    diff --git a/drivers/extcon/extcon-arizona.c b/drivers/extcon/extcon-arizona.c
    index cce24de..0d70bf6 100644
    --- a/drivers/extcon/extcon-arizona.c
    +++ b/drivers/extcon/extcon-arizona.c
    @@ -782,6 +782,19 @@ static void arizona_micd_detect(struct work_struct *work)

    mutex_lock(&info->lock);

    + /* If the cable was removed while measuring ignore the result */
    + ret = extcon_get_cable_state_(&info->edev, ARIZONA_CABLE_MECHANICAL);
    + if (ret < 0) {
    + dev_err(arizona->dev, "Failed to check cable state: %d\n",
    + ret);
    + mutex_unlock(&info->lock);
    + return;
    + } else if (!ret) {
    + dev_dbg(arizona->dev, "Ignoring MICDET for removed cable\n");
    + mutex_unlock(&info->lock);
    + return;
    + }
    +
    for (i = 0; i < 10 && !(val & MICD_LVL_0_TO_8); i++) {
    ret = regmap_read(arizona->regmap, ARIZONA_MIC_DETECT_3, &val);
    if (ret != 0) {
    --
    1.7.2.5


    \
     
     \ /
      Last update: 2013-11-08 15:01    [W:3.762 / U:0.004 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site