• Michał Kępień's avatar
    fujitsu-laptop: Support radio LED · 4f62568c
    Michał Kępień authored
    Lifebook E734/E744/E754 has a LED which the manual calls "radio
    components indicator".  It should be lit when any radio transmitter is
    enabled.  Its state can be read and set using ACPI (FUNC interface,
    RFKILL method).
    
    Since the Lifebook E734/E744/E754 only has a button (as compared to a
    slider) for enabling/disabling radio transmitters, I believe the LED in
    question is meant to indicate whether all radio transmitters are
    currently on or off.  However, pressing the radio toggle button does not
    automatically change the hardware state of the transmitters: it looks
    like this machine relies on soft rfkill.
    
    As for detecting whether the LED is present on a given machine, I had to
    resort to educated guesswork.  I assumed this LED is present on all
    devices which have a radio toggle button instead of a slider.  My
    Lifebook E744 holds 0x01010001 in BTNI.  By comparing the bits and
    buttons with those of a Lifebook E8420 (BTNI=0x000F0101, has a slider),
    I put my money on bit 24 as the indicator of the radio toggle button
    being present.  Furthermore, bit 24 is also clear on the S7020 which
    does not have the toggle button or an RF LED.
    
    Figuring out how the LED is controlled was more deterministic as all it
    took was decompiling the DSDT and taking a look at method S000 (the
    RFKILL method of the FUNC interface).
    
    The LED control method implemented here is unsuitable for use with
    "heavy" LED triggers, like phy0rx.  Once blinking frequency achieves a
    certain level, the system hangs.
    Signed-off-by: default avatarMichał Kępień <kernel@kempniu.pl>
    [jwoithe: Comment on bit 24 in BTNI, expanded commit msg]
    Signed-off-by: default avatarJonathan Woithe <jwoithe@just42.net>
    [dvhart: Minor style and commit log adjustments]
    Signed-off-by: default avatarDarren Hart <dvhart@linux.intel.com>
    4f62568c
fujitsu-laptop.c 32.9 KB