Skip to content

Commit

Permalink
msi-laptop: Add resume method for set the SCM load again
Browse files Browse the repository at this point in the history
Implement the resume method for set the load SCM flag after system reusme.
Without this patch, the wifi function key on SCM model will back to BIOS
control mode then confuse with the userland software control.
e.g. MSI N034

Signed-off-by: Lee, Chun-Yi <jlee@novell.com>
Cc: Lennart Poettering <mzxreary@0pointer.de>
Signed-off-by: Greg Kroah-Hartman <gregkh@suse.de>
  • Loading branch information
Lee, Chun-Yi authored and Greg Kroah-Hartman committed Mar 8, 2010
1 parent 472ea12 commit ec76627
Showing 1 changed file with 25 additions and 1 deletion.
26 changes: 25 additions & 1 deletion drivers/platform/x86/msi-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@
#define MSI_STANDARD_EC_SCM_LOAD_ADDRESS 0x2d
#define MSI_STANDARD_EC_SCM_LOAD_MASK (1 << 0)

static int msi_laptop_resume(struct platform_device *device);

static int force;
module_param(force, bool, 0);
MODULE_PARM_DESC(force, "Force driver load, ignore DMI data");
Expand Down Expand Up @@ -395,7 +397,8 @@ static struct platform_driver msipf_driver = {
.driver = {
.name = "msi-laptop-pf",
.owner = THIS_MODULE,
}
},
.resume = msi_laptop_resume,
};

static struct platform_device *msipf_device;
Expand Down Expand Up @@ -584,6 +587,27 @@ static int rfkill_init(struct platform_device *sdev)
return retval;
}

static int msi_laptop_resume(struct platform_device *device)
{
u8 data;
int result;

if (!load_scm_model)
return 0;

/* set load SCM to disable hardware control by fn key */
result = ec_read(MSI_STANDARD_EC_SCM_LOAD_ADDRESS, &data);
if (result < 0)
return result;

result = ec_write(MSI_STANDARD_EC_SCM_LOAD_ADDRESS,
data | MSI_STANDARD_EC_SCM_LOAD_MASK);
if (result < 0)
return result;

return 0;
}

static int load_scm_model_init(struct platform_device *sdev)
{
u8 data;
Expand Down

0 comments on commit ec76627

Please sign in to comment.