• Josua Mayer's avatar
    net: rfkill: gpio: prevent value glitch during probe · b2f750c3
    Josua Mayer authored
    When either reset- or shutdown-gpio have are initially deasserted,
    e.g. after a reboot - or when the hardware does not include pull-down,
    there will be a short toggle of both IOs to logical 0 and back to 1.
    
    It seems that the rfkill default is unblocked, so the driver should not
    glitch to output low during probe.
    It can lead e.g. to unexpected lte modem reconnect:
    
    [1] root@localhost:~# dmesg | grep "usb 2-1"
    [    2.136124] usb 2-1: new SuperSpeed USB device number 2 using xhci-hcd
    [   21.215278] usb 2-1: USB disconnect, device number 2
    [   28.833977] usb 2-1: new SuperSpeed USB device number 3 using xhci-hcd
    
    The glitch has been discovered on an arm64 board, now that device-tree
    support for the rfkill-gpio driver has finally appeared :).
    
    Change the flags for devm_gpiod_get_optional from GPIOD_OUT_LOW to
    GPIOD_ASIS to avoid any glitches.
    The rfkill driver will set the intended value during rfkill_sync_work.
    
    Fixes: 7176ba23 ("net: rfkill: add generic gpio rfkill driver")
    Signed-off-by: default avatarJosua Mayer <josua@solid-run.com>
    Link: https://lore.kernel.org/r/20231004163928.14609-1-josua@solid-run.comSigned-off-by: default avatarJohannes Berg <johannes.berg@intel.com>
    b2f750c3
rfkill-gpio.c 4.42 KB