From 1d2c0c8d875984dd8536ff3bd64a1909347a0da4 Mon Sep 17 00:00:00 2001 From: Len Brown Date: Tue, 24 Jul 2007 01:50:46 -0400 Subject: [PATCH] --- yaml --- r: 62895 b: refs/heads/master c: fb804714560463534ebcb538a3b0a3c687a830ec h: refs/heads/master i: 62893: 209754219b443b29f5616677aa188c58718bb869 62891: 27aaf1468ef8da5dcf9a9e348d0eceabef48f936 62887: ce613841270e867044876946355d940eef6e75fc 62879: 9f8b589f405bfd23c812294d9f8383d8e67803bc v: v3 --- [refs] | 2 +- trunk/drivers/acpi/Kconfig | 27 +++++++---- trunk/drivers/acpi/processor_throttling.c | 59 +++++++---------------- trunk/drivers/misc/asus-laptop.c | 32 +++++------- 4 files changed, 47 insertions(+), 73 deletions(-) diff --git a/[refs] b/[refs] index 6e59ac9bea2a..312abffaab65 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: c30c620ee1cc351bcc149c4280e1166998df0064 +refs/heads/master: fb804714560463534ebcb538a3b0a3c687a830ec diff --git a/trunk/drivers/acpi/Kconfig b/trunk/drivers/acpi/Kconfig index 408b45168aba..8e42977c6d07 100644 --- a/trunk/drivers/acpi/Kconfig +++ b/trunk/drivers/acpi/Kconfig @@ -76,17 +76,24 @@ config ACPI_SLEEP_PROC_SLEEP Deprecated by /sys/power/state config ACPI_PROCFS - bool "Procfs interface (deprecated)" - default y + bool "Deprecated /proc/acpi files" + depends on PROC_FS ---help--- - The Procfs interface for ACPI is made optional for backward compatibility. - As the same functions are duplicated in the sysfs interface - and this proc interface will be removed some time later, - it's marked as deprecated. - ( /proc/acpi/debug_layer && debug_level are deprecated by - /sys/module/acpi/parameters/debug_layer && debug_level. - /proc/acpi/info is deprecated by - /sys/module/acpi/parameters/acpica_version ) + For backwards compatibility, this option allows + depricated /proc/acpi/ files to exist, even when + they have been replaced by functions in /sys. + The deprecated files (and their replacements) include: + + /proc/acpi/info (/sys/modules/acpi/parameters/acpica_version) + /proc/acpi/dsdt (/sys/firmware/acpi/tables/DSDT) + /proc/acpi/fadt (/sys/firmware/acpi/tables/FACP) + /proc/acpi/debug_layer (/sys/module/acpi/parameters/debug_layer) + /proc/acpi/debug_level (/sys/module/acpi/parameters/debug_level) + + This option has no effect on /proc/acpi/ files + and functions which do not yet exist in /sys. + + Say N to delete /proc/acpi/ files that have moved to /sys/ config ACPI_AC tristate "AC Adapter" diff --git a/trunk/drivers/acpi/processor_throttling.c b/trunk/drivers/acpi/processor_throttling.c index 0b8204e7082a..3f55d1f90c11 100644 --- a/trunk/drivers/acpi/processor_throttling.c +++ b/trunk/drivers/acpi/processor_throttling.c @@ -47,9 +47,6 @@ ACPI_MODULE_NAME("processor_throttling"); static int acpi_processor_get_throttling(struct acpi_processor *pr); int acpi_processor_set_throttling(struct acpi_processor *pr, int state); -/* - * _TPC - Throttling Present Capabilities - */ static int acpi_processor_get_platform_limit(struct acpi_processor *pr) { acpi_status status = 0; @@ -58,10 +55,8 @@ static int acpi_processor_get_platform_limit(struct acpi_processor *pr) if (!pr) return -EINVAL; status = acpi_evaluate_integer(pr->handle, "_TPC", NULL, &tpc); - if (ACPI_FAILURE(status)) { - if (status != AE_NOT_FOUND) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TPC")); - } + if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) { + ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TPC")); return -ENODEV; } pr->throttling_platform_limit = (int)tpc; @@ -73,9 +68,9 @@ int acpi_processor_tstate_has_changed(struct acpi_processor *pr) return acpi_processor_get_platform_limit(pr); } -/* - * _PTC - Processor Throttling Control (and status) register location - */ +/* -------------------------------------------------------------------------- + _PTC, _TSS, _TSD support + -------------------------------------------------------------------------- */ static int acpi_processor_get_throttling_control(struct acpi_processor *pr) { int result = 0; @@ -86,9 +81,7 @@ static int acpi_processor_get_throttling_control(struct acpi_processor *pr) status = acpi_evaluate_object(pr->handle, "_PTC", NULL, &buffer); if (ACPI_FAILURE(status)) { - if (status != AE_NOT_FOUND) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PTC")); - } + ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PTC")); return -ENODEV; } @@ -139,10 +132,6 @@ static int acpi_processor_get_throttling_control(struct acpi_processor *pr) return result; } - -/* - * _TSS - Throttling Supported States - */ static int acpi_processor_get_throttling_states(struct acpi_processor *pr) { int result = 0; @@ -155,9 +144,7 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr) status = acpi_evaluate_object(pr->handle, "_TSS", NULL, &buffer); if (ACPI_FAILURE(status)) { - if (status != AE_NOT_FOUND) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TSS")); - } + ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TSS")); return -ENODEV; } @@ -214,10 +201,6 @@ static int acpi_processor_get_throttling_states(struct acpi_processor *pr) return result; } - -/* - * _TSD - T-State Dependencies - */ static int acpi_processor_get_tsd(struct acpi_processor *pr) { int result = 0; @@ -230,9 +213,6 @@ static int acpi_processor_get_tsd(struct acpi_processor *pr) status = acpi_evaluate_object(pr->handle, "_TSD", NULL, &buffer); if (ACPI_FAILURE(status)) { - if (status != AE_NOT_FOUND) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _TSD")); - } return -ENODEV; } @@ -545,6 +525,9 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr) int result = 0; int step = 0; int i = 0; + int no_ptc = 0; + int no_tss = 0; + int no_tsd = 0; ACPI_DEBUG_PRINT((ACPI_DB_INFO, "pblk_address[0x%08x] duty_offset[%d] duty_width[%d]\n", @@ -555,14 +538,12 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr) if (!pr) return -EINVAL; - /* - * Evaluate _PTC, _TSS and _TPC - * They must all be present or none of them can be used. - */ - if (acpi_processor_get_throttling_control(pr) || - acpi_processor_get_throttling_states(pr) || - acpi_processor_get_platform_limit(pr)) - { + /* TBD: Support ACPI 2.0 objects */ + no_ptc = acpi_processor_get_throttling_control(pr); + no_tss = acpi_processor_get_throttling_states(pr); + no_tsd = acpi_processor_get_tsd(pr); + + if (no_ptc || no_tss) { pr->throttling.acpi_processor_get_throttling = &acpi_processor_get_throttling_fadt; pr->throttling.acpi_processor_set_throttling = @@ -574,8 +555,6 @@ int acpi_processor_get_throttling_info(struct acpi_processor *pr) &acpi_processor_set_throttling_ptc; } - acpi_processor_get_tsd(pr); - if (!pr->throttling.address) { ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No throttling register\n")); return 0; @@ -679,20 +658,18 @@ static int acpi_processor_throttling_seq_show(struct seq_file *seq, pr->throttling.state_count - 1); seq_puts(seq, "states:\n"); - if (pr->throttling.acpi_processor_get_throttling == - acpi_processor_get_throttling_fadt) { + if (acpi_processor_get_throttling == acpi_processor_get_throttling_fadt) for (i = 0; i < pr->throttling.state_count; i++) seq_printf(seq, " %cT%d: %02d%%\n", (i == pr->throttling.state ? '*' : ' '), i, (pr->throttling.states[i].performance ? pr-> throttling.states[i].performance / 10 : 0)); - } else { + else for (i = 0; i < pr->throttling.state_count; i++) seq_printf(seq, " %cT%d: %02d%%\n", (i == pr->throttling.state ? '*' : ' '), i, (int)pr->throttling.states_tss[i]. freqpercentage); - } end: return 0; diff --git a/trunk/drivers/misc/asus-laptop.c b/trunk/drivers/misc/asus-laptop.c index 6b89854bd3ff..f75306059971 100644 --- a/trunk/drivers/misc/asus-laptop.c +++ b/trunk/drivers/misc/asus-laptop.c @@ -1067,16 +1067,19 @@ static void asus_backlight_exit(void) } #define ASUS_LED_UNREGISTER(object) \ - led_classdev_unregister(&object##_led) + if(object##_led.class_dev \ + && !IS_ERR(object##_led.class_dev)) \ + led_classdev_unregister(&object##_led) static void asus_led_exit(void) { - destroy_workqueue(led_workqueue); ASUS_LED_UNREGISTER(mled); ASUS_LED_UNREGISTER(tled); ASUS_LED_UNREGISTER(pled); ASUS_LED_UNREGISTER(rled); ASUS_LED_UNREGISTER(gled); + + destroy_workqueue(led_workqueue); } static void __exit asus_laptop_exit(void) @@ -1132,42 +1135,29 @@ static int asus_led_init(struct device *dev) rv = ASUS_LED_REGISTER(mled, dev); if (rv) - goto out; + return rv; rv = ASUS_LED_REGISTER(tled, dev); if (rv) - goto out1; + return rv; rv = ASUS_LED_REGISTER(rled, dev); if (rv) - goto out2; + return rv; rv = ASUS_LED_REGISTER(pled, dev); if (rv) - goto out3; + return rv; rv = ASUS_LED_REGISTER(gled, dev); if (rv) - goto out4; + return rv; led_workqueue = create_singlethread_workqueue("led_workqueue"); if (!led_workqueue) - goto out5; + return -ENOMEM; return 0; -out5: - rv = -ENOMEM; - ASUS_LED_UNREGISTER(gled); -out4: - ASUS_LED_UNREGISTER(pled); -out3: - ASUS_LED_UNREGISTER(rled); -out2: - ASUS_LED_UNREGISTER(tled); -out1: - ASUS_LED_UNREGISTER(mled); -out: - return rv; } static int __init asus_laptop_init(void)