lkml.org 
[lkml]   [2021]   [Dec]   [6]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 4.4 36/52] platform/x86: thinkpad_acpi: Fix WWAN device disabled issue after S3 deep
    Date
    From: Slark Xiao <slark_xiao@163.com>

    [ Upstream commit 39f53292181081d35174a581a98441de5da22bc9 ]

    When WWAN device wake from S3 deep, under thinkpad platform,
    WWAN would be disabled. This disable status could be checked
    by command 'nmcli r wwan' or 'rfkill list'.

    Issue analysis as below:
    When host resume from S3 deep, thinkpad_acpi driver would
    call hotkey_resume() function. Finnaly, it will use
    wan_get_status to check the current status of WWAN device.
    During this resume progress, wan_get_status would always
    return off even WWAN boot up completely.
    In patch V2, Hans said 'sw_state should be unchanged
    after a suspend/resume. It's better to drop the
    tpacpi_rfk_update_swstate call all together from the
    resume path'.
    And it's confimed by Lenovo that GWAN is no longer
    available from WHL generation because the design does not
    match with current pin control.

    Signed-off-by: Slark Xiao <slark_xiao@163.com>
    Link: https://lore.kernel.org/r/20211108060648.8212-1-slark_xiao@163.com
    Reviewed-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Hans de Goede <hdegoede@redhat.com>
    Signed-off-by: Sasha Levin <sashal@kernel.org>
    ---
    drivers/platform/x86/thinkpad_acpi.c | 12 ------------
    1 file changed, 12 deletions(-)

    diff --git a/drivers/platform/x86/thinkpad_acpi.c b/drivers/platform/x86/thinkpad_acpi.c
    index f3954af14f52f..466a0d0162c3d 100644
    --- a/drivers/platform/x86/thinkpad_acpi.c
    +++ b/drivers/platform/x86/thinkpad_acpi.c
    @@ -1168,15 +1168,6 @@ static int tpacpi_rfk_update_swstate(const struct tpacpi_rfk *tp_rfk)
    return status;
    }

    -/* Query FW and update rfkill sw state for all rfkill switches */
    -static void tpacpi_rfk_update_swstate_all(void)
    -{
    - unsigned int i;
    -
    - for (i = 0; i < TPACPI_RFK_SW_MAX; i++)
    - tpacpi_rfk_update_swstate(tpacpi_rfkill_switches[i]);
    -}
    -
    /*
    * Sync the HW-blocking state of all rfkill switches,
    * do notice it causes the rfkill core to schedule uevents
    @@ -3015,9 +3006,6 @@ static void tpacpi_send_radiosw_update(void)
    if (wlsw == TPACPI_RFK_RADIO_OFF)
    tpacpi_rfk_update_hwblock_state(true);

    - /* Sync sw blocking state */
    - tpacpi_rfk_update_swstate_all();
    -
    /* Sync hw blocking state last if it is hw-unblocked */
    if (wlsw == TPACPI_RFK_RADIO_ON)
    tpacpi_rfk_update_hwblock_state(false);
    --
    2.33.0


    \
     
     \ /
      Last update: 2021-12-06 16:01    [W:5.384 / U:0.136 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site