All of lore.kernel.org
 help / color / mirror / Atom feed
From: Dmitry Torokhov <dmitry.torokhov@gmail.com>
To: Greg Kroah-Hartman <gregkh@suse.de>
Cc: mjg@redhat.com, mzxreary@0pointer.de, rpurdie@linux.intel.com,
	jlee@novell.com, linux-kernel@vger.kernel.org,
	platform-driver-x86@vger.kernel.org, greg@kroah.com
Subject: Re: [PATCH 4/4] msi-laptop: Add i8042 filter to sync sw state with BIOS when function key pressed
Date: Wed, 12 May 2010 10:33:59 -0700	[thread overview]
Message-ID: <20100512173359.GA16431@core.coreip.homeip.net> (raw)
In-Reply-To: <1273683490-27090-4-git-send-email-gregkh@suse.de>

On Wed, May 12, 2010 at 09:58:10AM -0700, Greg Kroah-Hartman wrote:
> From: Lee, Chun-Yi <jlee@novell.com>
> 
> There have some MSI netbook change devices state by EC when user press
> wlan/bluetooth/wwan function keys. So, add a i8042 filter to sync sw
> state with BIOS when function keys pressed.
> 
> Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
> Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
> ---
>  drivers/platform/x86/msi-laptop.c |   59 ++++++++++++++++++++++++++++++++++++-
>  1 files changed, 58 insertions(+), 1 deletions(-)
> 
> diff --git a/drivers/platform/x86/msi-laptop.c b/drivers/platform/x86/msi-laptop.c
> index 34bec2e..3c6e160 100644
> --- a/drivers/platform/x86/msi-laptop.c
> +++ b/drivers/platform/x86/msi-laptop.c
> @@ -59,6 +59,7 @@
>  #include <linux/backlight.h>
>  #include <linux/platform_device.h>
>  #include <linux/rfkill.h>
> +#include <linux/i8042.h>
>  
>  #define MSI_DRIVER_VERSION "0.5"
>  
> @@ -581,6 +582,46 @@ static void rfkill_cleanup(void)
>  	}
>  }
>  
> +static void msi_update_rfkill(struct work_struct *ignored)
> +{
> +	get_wireless_state_ec_standard();
> +
> +	if (rfk_wlan)
> +		rfkill_set_sw_state(rfk_wlan, !wlan_s);
> +	if (rfk_bluetooth)
> +		rfkill_set_sw_state(rfk_bluetooth, !bluetooth_s);
> +	if (rfk_threeg)
> +		rfkill_set_sw_state(rfk_threeg, !threeg_s);
> +}
> +static DECLARE_DELAYED_WORK(msi_rfkill_work, msi_update_rfkill);
> +
> +bool msi_laptop_i8042_filter(unsigned char data, unsigned char str,
> +				struct serio *port)

Make it static bool...

> +{
> +	static bool extended;
> +
> +	if (str & 0x20)
> +		return false;
> +
> +	/* 0x54 wwan, 0x62 bluetooth, 0x76 wlan*/
> +	if (unlikely(data == 0xe0)) {
> +		extended = true;
> +		return false;
> +	} else if (unlikely(extended)) {
> +		switch (data) {
> +		case 0x54:
> +		case 0x62:
> +		case 0x76:
> +			schedule_delayed_work(&msi_rfkill_work,
> +				round_jiffies_relative(0.5 * HZ));
> +			break;
> +		}
> +		extended = false;
> +	}
> +
> +	return false;
> +}
> +
>  static void msi_init_rfkill(struct work_struct *ignored)
>  {
>  	if (rfk_wlan) {
> @@ -706,9 +747,24 @@ static int load_scm_model_init(struct platform_device *sdev)
>  	/* initial rfkill */
>  	result = rfkill_init(sdev);
>  	if (result < 0)
> -		return result;
> +		goto fail_rfkill;
> +
> +	result = i8042_install_filter(msi_laptop_i8042_filter);
> +	if (result) {
> +		printk(KERN_WARNING

Since we fail driver load this should be error, not warning message.

> +			"msi-laptop: Unable to install key filter\n");
> +		goto fail_filter;
> +	}
>  
>  	return 0;
> +
> +fail_filter:
> +	rfkill_cleanup();
> +
> +fail_rfkill:
> +
> +	return result;
> +
>  }
>  
>  static int __init msi_init(void)
> @@ -819,6 +875,7 @@ static void __exit msi_cleanup(void)
>  	platform_driver_unregister(&msipf_driver);
>  	backlight_device_unregister(msibl_device);
>  
> +	i8042_remove_filter(msi_laptop_i8042_filter);
>  	rfkill_cleanup();
>  
>  	/* Enable automatic brightness control again */

-- 
Dmitry

  reply	other threads:[~2010-05-12 17:34 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
     [not found] <20100512141149.GB20564@kroah.com>
2010-05-12 16:58 ` [PATCH 1/4] msi-laptop: Add N014 N051 dmi information to scm models table Greg Kroah-Hartman
2010-05-12 16:58 ` [PATCH 2/4] msi-laptop: Add MSI CR620 notebook " Greg Kroah-Hartman
2010-05-12 16:58 ` [PATCH 3/4] msi-laptop: Set rfkill init state when msi-laptop intiial Greg Kroah-Hartman
2010-05-12 16:58 ` [PATCH 4/4] msi-laptop: Add i8042 filter to sync sw state with BIOS when function key pressed Greg Kroah-Hartman
2010-05-12 17:33   ` Dmitry Torokhov [this message]
2010-05-12 18:55     ` Greg KH
2010-05-12 18:56     ` Greg KH
2010-05-13  7:52       ` Dmitry Torokhov
2010-05-13 11:53 Joey Lee
2010-05-13 11:53 ` Joey Lee
2010-05-13 22:54 ` Greg KH
2010-05-13 22:54   ` Greg KH
  -- strict thread matches above, loose matches on Subject: below --
2010-05-14  0:37 Joey Lee
2010-05-14  0:37 ` Joey Lee
2010-05-14 22:49 Joey Lee
2010-05-14 22:49 ` Joey Lee
2010-05-20 13:32 ` Matthew Garrett
2010-05-20 13:39 Joey Lee
2010-05-20 13:39 ` Joey Lee

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20100512173359.GA16431@core.coreip.homeip.net \
    --to=dmitry.torokhov@gmail.com \
    --cc=greg@kroah.com \
    --cc=gregkh@suse.de \
    --cc=jlee@novell.com \
    --cc=linux-kernel@vger.kernel.org \
    --cc=mjg@redhat.com \
    --cc=mzxreary@0pointer.de \
    --cc=platform-driver-x86@vger.kernel.org \
    --cc=rpurdie@linux.intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.