Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 187102
b: refs/heads/master
c: e22388e
h: refs/heads/master
v: v3
  • Loading branch information
Lee, Chun-Yi authored and Greg Kroah-Hartman committed Mar 8, 2010
1 parent 3f71adc commit 0d730e1
Show file tree
Hide file tree
Showing 2 changed files with 35 additions and 11 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: ec766278ba927f3d3c75211ea7697aae37f327f0
refs/heads/master: e22388e71b8787b26dc33d023e5c1eec58865541
44 changes: 34 additions & 10 deletions trunk/drivers/platform/x86/msi-laptop.c
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,8 @@

static int msi_laptop_resume(struct platform_device *device);

#define MSI_STANDARD_EC_DEVICES_EXISTS_ADDRESS 0x2f

static int force;
module_param(force, bool, 0);
MODULE_PARM_DESC(force, "Force driver load, ignore DMI data");
Expand All @@ -89,6 +91,7 @@ MODULE_PARM_DESC(auto_brightness, "Enable automatic brightness control (0: disab

static bool old_ec_model;
static int wlan_s, bluetooth_s, threeg_s;
static int threeg_exists;

/* Some MSI 3G netbook only have one fn key to control Wlan/Bluetooth/3G,
* those netbook will load the SCM (windows app) to disable the original
Expand Down Expand Up @@ -224,6 +227,20 @@ static int get_wireless_state_ec_standard(void)
return 0;
}

static int get_threeg_exists(void)
{
u8 rdata;
int result;

result = ec_read(MSI_STANDARD_EC_DEVICES_EXISTS_ADDRESS, &rdata);
if (result < 0)
return -1;

threeg_exists = !!(rdata & MSI_STANDARD_EC_3G_MASK);

return 0;
}

/* Backlight device stuff */

static int bl_get_brightness(struct backlight_device *b)
Expand Down Expand Up @@ -561,15 +578,17 @@ static int rfkill_init(struct platform_device *sdev)
if (retval)
goto err_wlan;

rfk_threeg = rfkill_alloc("msi-threeg", &sdev->dev, RFKILL_TYPE_WWAN,
&rfkill_threeg_ops, NULL);
if (!rfk_threeg) {
retval = -ENOMEM;
goto err_threeg;
if (threeg_exists) {
rfk_threeg = rfkill_alloc("msi-threeg", &sdev->dev,
RFKILL_TYPE_WWAN, &rfkill_threeg_ops, NULL);
if (!rfk_threeg) {
retval = -ENOMEM;
goto err_threeg;
}
retval = rfkill_register(rfk_threeg);
if (retval)
goto err_threeg;
}
retval = rfkill_register(rfk_threeg);
if (retval)
goto err_threeg;

return 0;

Expand Down Expand Up @@ -649,6 +668,9 @@ static int __init msi_init(void)
if (force || dmi_check_system(msi_dmi_table))
old_ec_model = 1;

if (!old_ec_model)
get_threeg_exists();

if (!old_ec_model && dmi_check_system(msi_load_scm_models_dmi_table))
load_scm_model = 1;

Expand Down Expand Up @@ -694,7 +716,9 @@ static int __init msi_init(void)
goto fail_platform_device2;

if (!old_ec_model) {
ret = device_create_file(&msipf_device->dev, &dev_attr_threeg);
if (threeg_exists)
ret = device_create_file(&msipf_device->dev,
&dev_attr_threeg);
if (ret)
goto fail_platform_device2;
}
Expand Down Expand Up @@ -733,7 +757,7 @@ static void __exit msi_cleanup(void)
{

sysfs_remove_group(&msipf_device->dev.kobj, &msipf_attribute_group);
if (!old_ec_model)
if (!old_ec_model && threeg_exists)
device_remove_file(&msipf_device->dev, &dev_attr_threeg);
platform_device_unregister(msipf_device);
platform_driver_unregister(&msipf_driver);
Expand Down

0 comments on commit 0d730e1

Please sign in to comment.