diff options
Diffstat (limited to 'drivers/platform/x86/acerhdf.c')
| -rw-r--r-- | drivers/platform/x86/acerhdf.c | 114 | 
1 files changed, 67 insertions, 47 deletions
diff --git a/drivers/platform/x86/acerhdf.c b/drivers/platform/x86/acerhdf.c index 60f9cfcac93..f94467c0522 100644 --- a/drivers/platform/x86/acerhdf.c +++ b/drivers/platform/x86/acerhdf.c @@ -5,7 +5,7 @@   *   * (C) 2009 - Peter Feuerer     peter (a) piie.net   *                              http://piie.net - *     2009 Borislav Petkov <petkovbb@gmail.com> + *     2009 Borislav Petkov	bp (a) alien8.de   *   * Inspired by and many thanks to:   *  o acerfand   - Rachel Greenham @@ -35,10 +35,8 @@  #include <linux/kernel.h>  #include <linux/module.h> -#include <linux/fs.h>  #include <linux/dmi.h> -#include <acpi/acpi_drivers.h> -#include <linux/sched.h> +#include <linux/acpi.h>  #include <linux/thermal.h>  #include <linux/platform_device.h> @@ -52,7 +50,7 @@   */  #undef START_IN_KERNEL_MODE -#define DRV_VER "0.5.24" +#define DRV_VER "0.5.26"  /*   * According to the Atom N270 datasheet, @@ -85,8 +83,8 @@ static int kernelmode;  #endif  static unsigned int interval = 10; -static unsigned int fanon = 63000; -static unsigned int fanoff = 58000; +static unsigned int fanon = 60000; +static unsigned int fanoff = 53000;  static unsigned int verbose;  static unsigned int fanstate = ACERHDF_FAN_AUTO;  static char force_bios[16]; @@ -152,6 +150,8 @@ static const struct bios_settings_t bios_tbl[] = {  	{"Acer", "AOA150", "v0.3308", 0x55, 0x58, {0x20, 0x00} },  	{"Acer", "AOA150", "v0.3309", 0x55, 0x58, {0x20, 0x00} },  	{"Acer", "AOA150", "v0.3310", 0x55, 0x58, {0x20, 0x00} }, +	/* LT1005u */ +	{"Acer", "LT-10Q", "v0.3310", 0x55, 0x58, {0x20, 0x00} },  	/* Acer 1410 */  	{"Acer", "Aspire 1410", "v0.3108", 0x55, 0x58, {0x9e, 0x00} },  	{"Acer", "Aspire 1410", "v0.3113", 0x55, 0x58, {0x9e, 0x00} }, @@ -163,6 +163,7 @@ static const struct bios_settings_t bios_tbl[] = {  	{"Acer", "Aspire 1410", "v1.3303", 0x55, 0x58, {0x9e, 0x00} },  	{"Acer", "Aspire 1410", "v1.3308", 0x55, 0x58, {0x9e, 0x00} },  	{"Acer", "Aspire 1410", "v1.3310", 0x55, 0x58, {0x9e, 0x00} }, +	{"Acer", "Aspire 1410", "v1.3314", 0x55, 0x58, {0x9e, 0x00} },  	/* Acer 1810xx */  	{"Acer", "Aspire 1810TZ", "v0.3108", 0x55, 0x58, {0x9e, 0x00} },  	{"Acer", "Aspire 1810T",  "v0.3108", 0x55, 0x58, {0x9e, 0x00} }, @@ -184,29 +185,45 @@ static const struct bios_settings_t bios_tbl[] = {  	{"Acer", "Aspire 1810T",  "v1.3308", 0x55, 0x58, {0x9e, 0x00} },  	{"Acer", "Aspire 1810TZ", "v1.3310", 0x55, 0x58, {0x9e, 0x00} },  	{"Acer", "Aspire 1810T",  "v1.3310", 0x55, 0x58, {0x9e, 0x00} }, +	{"Acer", "Aspire 1810TZ", "v1.3314", 0x55, 0x58, {0x9e, 0x00} }, +	{"Acer", "Aspire 1810T",  "v1.3314", 0x55, 0x58, {0x9e, 0x00} },  	/* Acer 531 */ +	{"Acer", "AO531h", "v0.3104", 0x55, 0x58, {0x20, 0x00} },  	{"Acer", "AO531h", "v0.3201", 0x55, 0x58, {0x20, 0x00} }, +	{"Acer", "AO531h", "v0.3304", 0x55, 0x58, {0x20, 0x00} }, +	/* Acer 751 */ +	{"Acer", "AO751h", "V0.3212", 0x55, 0x58, {0x21, 0x00} }, +	/* Acer 1825 */ +	{"Acer", "Aspire 1825PTZ", "V1.3118", 0x55, 0x58, {0x9e, 0x00} }, +	{"Acer", "Aspire 1825PTZ", "V1.3127", 0x55, 0x58, {0x9e, 0x00} }, +	/* Acer TravelMate 7730 */ +	{"Acer", "TravelMate 7730G", "v0.3509", 0x55, 0x58, {0xaf, 0x00} },  	/* Gateway */ -	{"Gateway", "AOA110", "v0.3103", 0x55, 0x58, {0x21, 0x00} }, -	{"Gateway", "AOA150", "v0.3103", 0x55, 0x58, {0x20, 0x00} }, -	{"Gateway", "LT31",   "v1.3103", 0x55, 0x58, {0x9e, 0x00} }, -	{"Gateway", "LT31",   "v1.3201", 0x55, 0x58, {0x9e, 0x00} }, -	{"Gateway", "LT31",   "v1.3302", 0x55, 0x58, {0x9e, 0x00} }, +	{"Gateway", "AOA110", "v0.3103",  0x55, 0x58, {0x21, 0x00} }, +	{"Gateway", "AOA150", "v0.3103",  0x55, 0x58, {0x20, 0x00} }, +	{"Gateway", "LT31",   "v1.3103",  0x55, 0x58, {0x9e, 0x00} }, +	{"Gateway", "LT31",   "v1.3201",  0x55, 0x58, {0x9e, 0x00} }, +	{"Gateway", "LT31",   "v1.3302",  0x55, 0x58, {0x9e, 0x00} }, +	{"Gateway", "LT31",   "v1.3303t", 0x55, 0x58, {0x9e, 0x00} },  	/* Packard Bell */ -	{"Packard Bell", "DOA150", "v0.3104", 0x55, 0x58, {0x21, 0x00} }, -	{"Packard Bell", "DOA150", "v0.3105", 0x55, 0x58, {0x20, 0x00} }, -	{"Packard Bell", "AOA110", "v0.3105", 0x55, 0x58, {0x21, 0x00} }, -	{"Packard Bell", "AOA150", "v0.3105", 0x55, 0x58, {0x20, 0x00} }, -	{"Packard Bell", "DOTMU",  "v1.3303", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v0.3120", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v0.3108", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v0.3113", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v0.3115", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v0.3117", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v0.3119", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMU",  "v1.3204", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMA",  "v1.3201", 0x55, 0x58, {0x9e, 0x00} }, -	{"Packard Bell", "DOTMA",  "v1.3302", 0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOA150",  "v0.3104",  0x55, 0x58, {0x21, 0x00} }, +	{"Packard Bell", "DOA150",  "v0.3105",  0x55, 0x58, {0x20, 0x00} }, +	{"Packard Bell", "AOA110",  "v0.3105",  0x55, 0x58, {0x21, 0x00} }, +	{"Packard Bell", "AOA150",  "v0.3105",  0x55, 0x58, {0x20, 0x00} }, +	{"Packard Bell", "ENBFT",   "V1.3118",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "ENBFT",   "V1.3127",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v1.3303",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v0.3120",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v0.3108",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v0.3113",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v0.3115",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v0.3117",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v0.3119",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMU",   "v1.3204",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMA",   "v1.3201",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMA",   "v1.3302",  0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTMA",   "v1.3303t", 0x55, 0x58, {0x9e, 0x00} }, +	{"Packard Bell", "DOTVR46", "v1.3308",  0x55, 0x58, {0x9e, 0x00} },  	/* pewpew-terminator */  	{"", "", "", 0, 0, {0, 0} }  }; @@ -245,12 +262,11 @@ static void acerhdf_change_fanstate(int state)  	unsigned char cmd;  	if (verbose) -		pr_notice("fan %s\n", (state == ACERHDF_FAN_OFF) ? -				"OFF" : "ON"); +		pr_notice("fan %s\n", state == ACERHDF_FAN_OFF ? "OFF" : "ON");  	if ((state != ACERHDF_FAN_OFF) && (state != ACERHDF_FAN_AUTO)) {  		pr_err("invalid fan state %d requested, setting to auto!\n", -			state); +		       state);  		state = ACERHDF_FAN_AUTO;  	} @@ -265,19 +281,18 @@ static void acerhdf_check_param(struct thermal_zone_device *thermal)  {  	if (fanon > ACERHDF_MAX_FANON) {  		pr_err("fanon temperature too high, set to %d\n", -				ACERHDF_MAX_FANON); +		       ACERHDF_MAX_FANON);  		fanon = ACERHDF_MAX_FANON;  	}  	if (kernelmode && prev_interval != interval) {  		if (interval > ACERHDF_MAX_INTERVAL) {  			pr_err("interval too high, set to %d\n", -				ACERHDF_MAX_INTERVAL); +			       ACERHDF_MAX_INTERVAL);  			interval = ACERHDF_MAX_INTERVAL;  		}  		if (verbose) -			pr_notice("interval changed to: %d\n", -					interval); +			pr_notice("interval changed to: %d\n", interval);  		thermal->polling_delay = interval*1000;  		prev_interval = interval;  	} @@ -314,7 +329,8 @@ static int acerhdf_bind(struct thermal_zone_device *thermal,  	if (cdev != cl_dev)  		return 0; -	if (thermal_zone_bind_cooling_device(thermal, 0, cdev)) { +	if (thermal_zone_bind_cooling_device(thermal, 0, cdev, +			THERMAL_NO_LIMIT, THERMAL_NO_LIMIT)) {  		pr_err("error binding cooling dev\n");  		return -EINVAL;  	} @@ -499,7 +515,7 @@ static int acerhdf_suspend(struct device *dev)  	return 0;  } -static int __devinit acerhdf_probe(struct platform_device *device) +static int acerhdf_probe(struct platform_device *device)  {  	return 0;  } @@ -588,8 +604,8 @@ static int acerhdf_check_hardware(void)  	}  	if (!bios_cfg) { -		pr_err("unknown (unsupported) BIOS version %s/%s/%s, " -			"please report, aborting!\n", vendor, product, version); +		pr_err("unknown (unsupported) BIOS version %s/%s/%s, please report, aborting!\n", +		       vendor, product, version);  		return -EINVAL;  	} @@ -599,8 +615,7 @@ static int acerhdf_check_hardware(void)  	 */  	if (!kernelmode) {  		pr_notice("Fan control off, to enable do:\n"); -		pr_notice("echo -n \"enabled\" > " -			"/sys/class/thermal/thermal_zone0/mode\n"); +		pr_notice("echo -n \"enabled\" > /sys/class/thermal/thermal_zone0/mode\n");  	}  	return 0; @@ -646,8 +661,8 @@ static int acerhdf_register_thermal(void)  	if (IS_ERR(cl_dev))  		return -EINVAL; -	thz_dev = thermal_zone_device_register("acerhdf", 1, NULL, -					      &acerhdf_dev_ops, 0, 0, 0, +	thz_dev = thermal_zone_device_register("acerhdf", 1, 0, NULL, +					      &acerhdf_dev_ops, NULL, 0,  					      (kernelmode) ? interval*1000 : 0);  	if (IS_ERR(thz_dev))  		return -EINVAL; @@ -705,15 +720,20 @@ MODULE_LICENSE("GPL");  MODULE_AUTHOR("Peter Feuerer");  MODULE_DESCRIPTION("Aspire One temperature and fan driver");  MODULE_ALIAS("dmi:*:*Acer*:pnAOA*:"); -MODULE_ALIAS("dmi:*:*Acer*:pnAspire 1410*:"); -MODULE_ALIAS("dmi:*:*Acer*:pnAspire 1810*:"); +MODULE_ALIAS("dmi:*:*Acer*:pnAO751h*:"); +MODULE_ALIAS("dmi:*:*Acer*:pnAspire*1410*:"); +MODULE_ALIAS("dmi:*:*Acer*:pnAspire*1810*:"); +MODULE_ALIAS("dmi:*:*Acer*:pnAspire*1825PTZ:");  MODULE_ALIAS("dmi:*:*Acer*:pnAO531*:"); +MODULE_ALIAS("dmi:*:*Acer*:TravelMate*7730G:");  MODULE_ALIAS("dmi:*:*Gateway*:pnAOA*:");  MODULE_ALIAS("dmi:*:*Gateway*:pnLT31*:"); -MODULE_ALIAS("dmi:*:*Packard Bell*:pnAOA*:"); -MODULE_ALIAS("dmi:*:*Packard Bell*:pnDOA*:"); -MODULE_ALIAS("dmi:*:*Packard Bell*:pnDOTMU*:"); -MODULE_ALIAS("dmi:*:*Packard Bell*:pnDOTMA*:"); +MODULE_ALIAS("dmi:*:*Packard*Bell*:pnAOA*:"); +MODULE_ALIAS("dmi:*:*Packard*Bell*:pnDOA*:"); +MODULE_ALIAS("dmi:*:*Packard*Bell*:pnDOTMU*:"); +MODULE_ALIAS("dmi:*:*Packard*Bell*:pnENBFT*:"); +MODULE_ALIAS("dmi:*:*Packard*Bell*:pnDOTMA*:"); +MODULE_ALIAS("dmi:*:*Packard*Bell*:pnDOTVR46*:");  module_init(acerhdf_init);  module_exit(acerhdf_exit);  | 
