mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-31 12:10:52 -04:00
Merge branches 'release', 'bugzilla-9916', 'bugzilla-9982', 'bugzilla-9989', 'misc', 'suspend', 'thermal', 'thinkpad' and 'tsc' into release
This commit is contained in:
commit
1f1519ef59
684 changed files with 20693 additions and 10625 deletions
|
|
@ -186,6 +186,12 @@ static int __init dmi_unknown_osi_linux(const struct dmi_system_id *d)
|
|||
acpi_dmi_osi_linux(-1, d); /* unknown */
|
||||
return 0;
|
||||
}
|
||||
static int __init dmi_disable_osi_vista(const struct dmi_system_id *d)
|
||||
{
|
||||
printk(KERN_NOTICE PREFIX "DMI detected: %s\n", d->ident);
|
||||
acpi_osi_setup("!Windows 2006");
|
||||
return 0;
|
||||
}
|
||||
|
||||
/*
|
||||
* Most BIOS that invoke OSI(Linux) do nothing with it.
|
||||
|
|
@ -228,10 +234,10 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
* DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 5520"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 6460"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "TravelMate 7510"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "Extensa 5220"),
|
||||
*
|
||||
* _OSI(Linux) is a NOP:
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "Aspire 5315"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "Extensa 5220"),
|
||||
*/
|
||||
{
|
||||
.callback = dmi_disable_osi_linux,
|
||||
|
|
@ -327,12 +333,20 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
},
|
||||
{ /* OSI(Linux) effect unknown */
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.ident = "Dell OP GX620",
|
||||
.ident = "Dell OptiPlex GX620",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex GX620"),
|
||||
},
|
||||
},
|
||||
{ /* OSI(Linux) causes some USB initialization to not run */
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.ident = "Dell OptiPlex 755",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "OptiPlex 755"),
|
||||
},
|
||||
},
|
||||
{ /* OSI(Linux) effect unknown */
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.ident = "Dell PE 1900",
|
||||
|
|
@ -342,6 +356,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
},
|
||||
},
|
||||
{ /* OSI(Linux) is a NOP */
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.ident = "Dell PE 1950",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "PowerEdge 1950"),
|
||||
},
|
||||
},
|
||||
{ /* OSI(Linux) is a NOP */
|
||||
.callback = dmi_disable_osi_linux,
|
||||
.ident = "Dell PE R200",
|
||||
.matches = {
|
||||
|
|
@ -357,6 +379,22 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation 390"),
|
||||
},
|
||||
},
|
||||
{ /* OSI(Linux) touches USB */
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.ident = "Dell PR 390",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Precision WorkStation 690"),
|
||||
},
|
||||
},
|
||||
{ /* OSI(Linux) unknown - ASL looks benign, but may effect dock/SMM */
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.ident = "Dell PR M4300",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "Dell Inc."),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "Precision M4300"),
|
||||
},
|
||||
},
|
||||
{ /* OSI(Linux) is a NOP */
|
||||
.callback = dmi_disable_osi_linux,
|
||||
.ident = "Dell Vostro 1000",
|
||||
|
|
@ -390,10 +428,10 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
* DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pi 1536"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Pi 1556"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "AMILO Xi 1546"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"),
|
||||
* _OSI(Linux) unknown effect:
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "Amilo M1425"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "Amilo Si 1520"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"),
|
||||
*/
|
||||
{
|
||||
.callback = dmi_disable_osi_linux,
|
||||
|
|
@ -402,6 +440,14 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
|
||||
},
|
||||
},
|
||||
{
|
||||
.callback = dmi_disable_osi_vista,
|
||||
.ident = "Fujitsu Siemens",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "FUJITSU SIEMENS"),
|
||||
DMI_MATCH(DMI_PRODUCT_NAME, "ESPRIMO Mobile V5505"),
|
||||
},
|
||||
},
|
||||
/*
|
||||
* Disable OSI(Linux) warnings on all "Hewlett-Packard"
|
||||
*
|
||||
|
|
@ -443,10 +489,11 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
* _OSI(Linux) helps sound
|
||||
* DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad R61"),
|
||||
* DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad T61"),
|
||||
* _OSI(Linux) has Linux specific hooks
|
||||
* DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"),
|
||||
* _OSI(Linux) is a NOP:
|
||||
* DMI_MATCH(DMI_PRODUCT_VERSION, "3000 N100"),
|
||||
* _OSI(Linux) effect unknown
|
||||
* DMI_MATCH(DMI_PRODUCT_VERSION, "ThinkPad X61"),
|
||||
* DMI_MATCH(DMI_PRODUCT_VERSION, "LENOVO3000 V100"),
|
||||
*/
|
||||
{
|
||||
.callback = dmi_enable_osi_linux,
|
||||
|
|
@ -465,7 +512,7 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
},
|
||||
},
|
||||
{
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.callback = dmi_enable_osi_linux,
|
||||
.ident = "Lenovo ThinkPad X61",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
|
|
@ -473,7 +520,7 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
},
|
||||
},
|
||||
{
|
||||
.callback = dmi_unknown_osi_linux,
|
||||
.callback = dmi_disable_osi_linux,
|
||||
.ident = "Lenovo 3000 V100",
|
||||
.matches = {
|
||||
DMI_MATCH(DMI_SYS_VENDOR, "LENOVO"),
|
||||
|
|
@ -543,8 +590,9 @@ static struct dmi_system_id acpi_osi_dmi_table[] __initdata = {
|
|||
* Disable OSI(Linux) warnings on all "Sony Corporation"
|
||||
*
|
||||
* _OSI(Linux) is a NOP:
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ650N"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "VGN-NR11S_S"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ38GP_C"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "VGN-SZ650N"),
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "VGN-TZ21MN_N"),
|
||||
* _OSI(Linux) unknown effect:
|
||||
* DMI_MATCH(DMI_PRODUCT_NAME, "VGN-FZ11M"),
|
||||
|
|
|
|||
|
|
@ -110,7 +110,7 @@ static const struct file_operations acpi_system_event_ops = {
|
|||
#endif /* CONFIG_ACPI_PROC_EVENT */
|
||||
|
||||
/* ACPI notifier chain */
|
||||
BLOCKING_NOTIFIER_HEAD(acpi_chain_head);
|
||||
static BLOCKING_NOTIFIER_HEAD(acpi_chain_head);
|
||||
|
||||
int acpi_notifier_call_chain(struct acpi_device *dev, u32 type, u32 data)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -338,6 +338,7 @@ acpi_ex_pci_config_space_handler(u32 function,
|
|||
acpi_status status = AE_OK;
|
||||
struct acpi_pci_id *pci_id;
|
||||
u16 pci_register;
|
||||
u32 value32;
|
||||
|
||||
ACPI_FUNCTION_TRACE(ex_pci_config_space_handler);
|
||||
|
||||
|
|
@ -364,9 +365,9 @@ acpi_ex_pci_config_space_handler(u32 function,
|
|||
switch (function) {
|
||||
case ACPI_READ:
|
||||
|
||||
*value = 0;
|
||||
status = acpi_os_read_pci_configuration(pci_id, pci_register,
|
||||
value, bit_width);
|
||||
&value32, bit_width);
|
||||
*value = value32;
|
||||
break;
|
||||
|
||||
case ACPI_WRITE:
|
||||
|
|
|
|||
|
|
@ -256,22 +256,28 @@ static int acpi_fan_add(struct acpi_device *device)
|
|||
|
||||
cdev = thermal_cooling_device_register("Fan", device,
|
||||
&fan_cooling_ops);
|
||||
if (cdev)
|
||||
if (IS_ERR(cdev)) {
|
||||
result = PTR_ERR(cdev);
|
||||
goto end;
|
||||
}
|
||||
if (cdev) {
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev.bus_id, cdev->id);
|
||||
else
|
||||
goto end;
|
||||
acpi_driver_data(device) = cdev;
|
||||
result = sysfs_create_link(&device->dev.kobj, &cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = sysfs_create_link(&cdev->device.kobj, &device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
acpi_driver_data(device) = cdev;
|
||||
result = sysfs_create_link(&device->dev.kobj,
|
||||
&cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
|
||||
result = sysfs_create_link(&cdev->device.kobj,
|
||||
&device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
result = acpi_fan_add_fs(device);
|
||||
if (result)
|
||||
|
|
|
|||
|
|
@ -616,6 +616,7 @@ acpi_status acpi_leave_sleep_state(u8 sleep_state)
|
|||
return_ACPI_STATUS(status);
|
||||
}
|
||||
|
||||
arg.integer.value = sleep_state;
|
||||
status = acpi_evaluate_object(NULL, METHOD_NAME__WAK, &arg_list, NULL);
|
||||
if (ACPI_FAILURE(status) && status != AE_NOT_FOUND) {
|
||||
ACPI_EXCEPTION((AE_INFO, status, "During Method _WAK"));
|
||||
|
|
|
|||
|
|
@ -325,7 +325,7 @@ acpi_os_predefined_override(const struct acpi_predefined_names *init_val,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
|
||||
struct acpi_table_header *acpi_find_dsdt_initrd(void)
|
||||
static struct acpi_table_header *acpi_find_dsdt_initrd(void)
|
||||
{
|
||||
struct file *firmware_file;
|
||||
mm_segment_t oldfs;
|
||||
|
|
@ -419,7 +419,7 @@ acpi_os_table_override(struct acpi_table_header * existing_table,
|
|||
}
|
||||
|
||||
#ifdef CONFIG_ACPI_CUSTOM_DSDT_INITRD
|
||||
int __init acpi_no_initrd_override_setup(char *s)
|
||||
static int __init acpi_no_initrd_override_setup(char *s)
|
||||
{
|
||||
acpi_no_initrd_override = 1;
|
||||
return 1;
|
||||
|
|
@ -1109,7 +1109,7 @@ void __init acpi_dmi_osi_linux(int enable, const struct dmi_system_id *d)
|
|||
* string starting with '!' disables that string
|
||||
* otherwise string is added to list, augmenting built-in strings
|
||||
*/
|
||||
static int __init acpi_osi_setup(char *str)
|
||||
int __init acpi_osi_setup(char *str)
|
||||
{
|
||||
if (str == NULL || *str == '\0') {
|
||||
printk(KERN_INFO PREFIX "_OSI method disabled\n");
|
||||
|
|
|
|||
|
|
@ -670,21 +670,26 @@ static int __cpuinit acpi_processor_start(struct acpi_device *device)
|
|||
|
||||
pr->cdev = thermal_cooling_device_register("Processor", device,
|
||||
&processor_cooling_ops);
|
||||
if (pr->cdev)
|
||||
if (IS_ERR(pr->cdev)) {
|
||||
result = PTR_ERR(pr->cdev);
|
||||
goto end;
|
||||
}
|
||||
if (pr->cdev) {
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
device->dev.bus_id, pr->cdev->id);
|
||||
else
|
||||
goto end;
|
||||
|
||||
result = sysfs_create_link(&device->dev.kobj, &pr->cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
result = sysfs_create_link(&pr->cdev->device.kobj, &device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
result = sysfs_create_link(&device->dev.kobj,
|
||||
&pr->cdev->device.kobj,
|
||||
"thermal_cooling");
|
||||
if (result)
|
||||
return result;
|
||||
result = sysfs_create_link(&pr->cdev->device.kobj,
|
||||
&device->dev.kobj,
|
||||
"device");
|
||||
if (result)
|
||||
return result;
|
||||
}
|
||||
|
||||
if (pr->flags.throttling) {
|
||||
printk(KERN_INFO PREFIX "%s [%s] (supports",
|
||||
|
|
@ -809,10 +814,12 @@ static int acpi_processor_remove(struct acpi_device *device, int type)
|
|||
|
||||
acpi_processor_remove_fs(device);
|
||||
|
||||
sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
|
||||
sysfs_remove_link(&pr->cdev->device.kobj, "device");
|
||||
thermal_cooling_device_unregister(pr->cdev);
|
||||
pr->cdev = NULL;
|
||||
if (pr->cdev) {
|
||||
sysfs_remove_link(&device->dev.kobj, "thermal_cooling");
|
||||
sysfs_remove_link(&pr->cdev->device.kobj, "device");
|
||||
thermal_cooling_device_unregister(pr->cdev);
|
||||
pr->cdev = NULL;
|
||||
}
|
||||
|
||||
processors[pr->id] = NULL;
|
||||
|
||||
|
|
@ -826,8 +833,6 @@ static int acpi_processor_remove(struct acpi_device *device, int type)
|
|||
* Acpi processor hotplug support *
|
||||
****************************************************************************/
|
||||
|
||||
static int is_processor_present(acpi_handle handle);
|
||||
|
||||
static int is_processor_present(acpi_handle handle)
|
||||
{
|
||||
acpi_status status;
|
||||
|
|
|
|||
|
|
@ -364,7 +364,7 @@ int acpi_processor_resume(struct acpi_device * device)
|
|||
return 0;
|
||||
}
|
||||
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
|
||||
static int tsc_halts_in_c(int state)
|
||||
{
|
||||
switch (boot_cpu_data.x86_vendor) {
|
||||
|
|
@ -544,7 +544,7 @@ static void acpi_processor_idle(void)
|
|||
/* Get end time (ticks) */
|
||||
t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
|
||||
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
|
||||
/* TSC halts in C2, so notify users */
|
||||
if (tsc_halts_in_c(ACPI_STATE_C2))
|
||||
mark_tsc_unstable("possible TSC halt in C2");
|
||||
|
|
@ -609,7 +609,7 @@ static void acpi_processor_idle(void)
|
|||
acpi_set_register(ACPI_BITREG_ARB_DISABLE, 0);
|
||||
}
|
||||
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
|
||||
/* TSC halts in C3, so notify users */
|
||||
if (tsc_halts_in_c(ACPI_STATE_C3))
|
||||
mark_tsc_unstable("TSC halts in C3");
|
||||
|
|
@ -945,11 +945,16 @@ static int acpi_processor_get_power_info_cst(struct acpi_processor *pr)
|
|||
* Otherwise, ignore this info and continue.
|
||||
*/
|
||||
cx.entry_method = ACPI_CSTATE_HALT;
|
||||
snprintf(cx.desc, ACPI_CX_DESC_LEN, "ACPI HLT");
|
||||
} else {
|
||||
continue;
|
||||
}
|
||||
} else {
|
||||
snprintf(cx.desc, ACPI_CX_DESC_LEN, "ACPI IOPORT 0x%x",
|
||||
cx.address);
|
||||
}
|
||||
|
||||
|
||||
obj = &(element->package.elements[2]);
|
||||
if (obj->type != ACPI_TYPE_INTEGER)
|
||||
continue;
|
||||
|
|
@ -1420,6 +1425,14 @@ static int acpi_idle_enter_c1(struct cpuidle_device *dev,
|
|||
return 0;
|
||||
|
||||
local_irq_disable();
|
||||
|
||||
/* Do not access any ACPI IO ports in suspend path */
|
||||
if (acpi_idle_suspend) {
|
||||
acpi_safe_halt();
|
||||
local_irq_enable();
|
||||
return 0;
|
||||
}
|
||||
|
||||
if (pr->flags.bm_check)
|
||||
acpi_idle_update_bm_rld(pr, cx);
|
||||
|
||||
|
|
@ -1487,7 +1500,7 @@ static int acpi_idle_enter_simple(struct cpuidle_device *dev,
|
|||
acpi_idle_do_entry(cx);
|
||||
t2 = inl(acpi_gbl_FADT.xpm_timer_block.address);
|
||||
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
|
||||
/* TSC could halt in idle, so notify users */
|
||||
if (tsc_halts_in_c(cx->type))
|
||||
mark_tsc_unstable("TSC halts in idle");;
|
||||
|
|
@ -1601,7 +1614,7 @@ static int acpi_idle_enter_bm(struct cpuidle_device *dev,
|
|||
spin_unlock(&c3_lock);
|
||||
}
|
||||
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86_TSC)
|
||||
#if defined (CONFIG_GENERIC_TIME) && defined (CONFIG_X86)
|
||||
/* TSC could halt in idle, so notify users */
|
||||
if (tsc_halts_in_c(ACPI_STATE_C3))
|
||||
mark_tsc_unstable("TSC halts in idle");
|
||||
|
|
@ -1643,6 +1656,11 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr)
|
|||
return -EINVAL;
|
||||
}
|
||||
|
||||
for (i = 0; i < CPUIDLE_STATE_MAX; i++) {
|
||||
dev->states[i].name[0] = '\0';
|
||||
dev->states[i].desc[0] = '\0';
|
||||
}
|
||||
|
||||
for (i = 1; i < ACPI_PROCESSOR_MAX_POWER && i <= max_cstate; i++) {
|
||||
cx = &pr->power.states[i];
|
||||
state = &dev->states[count];
|
||||
|
|
@ -1659,6 +1677,7 @@ static int acpi_processor_setup_cpuidle(struct acpi_processor *pr)
|
|||
cpuidle_set_statedata(state, cx);
|
||||
|
||||
snprintf(state->name, CPUIDLE_NAME_LEN, "C%d", i);
|
||||
strncpy(state->desc, cx->desc, CPUIDLE_DESC_LEN);
|
||||
state->exit_latency = cx->latency;
|
||||
state->target_residency = cx->latency * latency_factor;
|
||||
state->power_usage = cx->power;
|
||||
|
|
|
|||
|
|
@ -36,16 +36,20 @@ ACPI_MODULE_NAME("utils");
|
|||
/* --------------------------------------------------------------------------
|
||||
Object Evaluation Helpers
|
||||
-------------------------------------------------------------------------- */
|
||||
static void
|
||||
acpi_util_eval_error(acpi_handle h, acpi_string p, acpi_status s)
|
||||
{
|
||||
#ifdef ACPI_DEBUG_OUTPUT
|
||||
#define acpi_util_eval_error(h,p,s) {\
|
||||
char prefix[80] = {'\0'};\
|
||||
struct acpi_buffer buffer = {sizeof(prefix), prefix};\
|
||||
acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);\
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate [%s.%s]: %s\n",\
|
||||
(char *) prefix, p, acpi_format_exception(s))); }
|
||||
char prefix[80] = {'\0'};
|
||||
struct acpi_buffer buffer = {sizeof(prefix), prefix};
|
||||
acpi_get_name(h, ACPI_FULL_PATHNAME, &buffer);
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Evaluate [%s.%s]: %s\n",
|
||||
(char *) prefix, p, acpi_format_exception(s)));
|
||||
#else
|
||||
#define acpi_util_eval_error(h,p,s)
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
acpi_status
|
||||
acpi_extract_package(union acpi_object *package,
|
||||
struct acpi_buffer *format, struct acpi_buffer *buffer)
|
||||
|
|
|
|||
|
|
@ -731,6 +731,9 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
|
|||
|
||||
device->cdev = thermal_cooling_device_register("LCD",
|
||||
device->dev, &video_cooling_ops);
|
||||
if (IS_ERR(device->cdev))
|
||||
return;
|
||||
|
||||
if (device->cdev) {
|
||||
printk(KERN_INFO PREFIX
|
||||
"%s is registered as cooling_device%d\n",
|
||||
|
|
|
|||
Loading…
Reference in a new issue