X-Git-Url: http://git.onelab.eu/?a=blobdiff_plain;f=drivers%2Facpi%2Fbus.c;h=606f8733a776cf4ab3473db6a8288431f7d9bc84;hb=9464c7cf61b9433057924c36e6e02f303a00e768;hp=279c4bac92e553aaec80c4dc1181f682852e2c41;hpb=41689045f6a3cbe0550e1d34e9cc20d2e8c432ba;p=linux-2.6.git diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c index 279c4bac9..606f8733a 100644 --- a/drivers/acpi/bus.c +++ b/drivers/acpi/bus.c @@ -25,7 +25,6 @@ #include #include #include -#include #include #include #include @@ -44,7 +43,7 @@ ACPI_MODULE_NAME("acpi_bus") extern void __init acpi_pic_sci_set_trigger(unsigned int irq, u16 trigger); #endif -struct fadt_descriptor acpi_fadt; +FADT_DESCRIPTOR acpi_fadt; EXPORT_SYMBOL(acpi_fadt); struct acpi_device *acpi_root; @@ -61,20 +60,21 @@ int acpi_bus_get_device(acpi_handle handle, struct acpi_device **device) { acpi_status status = AE_OK; + ACPI_FUNCTION_TRACE("acpi_bus_get_device"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); /* TBD: Support fixed-feature devices */ status = acpi_get_data(handle, acpi_bus_data_handler, (void **)device); if (ACPI_FAILURE(status) || !*device) { - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "No context for object [%p]\n", + ACPI_DEBUG_PRINT((ACPI_DB_WARN, "No context for object [%p]\n", handle)); - return -ENODEV; + return_VALUE(-ENODEV); } - return 0; + return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_get_device); @@ -84,9 +84,10 @@ int acpi_bus_get_status(struct acpi_device *device) acpi_status status = AE_OK; unsigned long sta = 0; + ACPI_FUNCTION_TRACE("acpi_bus_get_status"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); /* * Evaluate _STA if present. @@ -95,7 +96,7 @@ int acpi_bus_get_status(struct acpi_device *device) status = acpi_evaluate_integer(device->handle, "_STA", NULL, &sta); if (ACPI_FAILURE(status)) - return -ENODEV; + return_VALUE(-ENODEV); STRUCT_TO_INT(device->status) = (int)sta; } @@ -119,7 +120,7 @@ int acpi_bus_get_status(struct acpi_device *device) device->pnp.bus_id, (u32) STRUCT_TO_INT(device->status))); - return 0; + return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_get_status); @@ -135,10 +136,11 @@ int acpi_bus_get_power(acpi_handle handle, int *state) struct acpi_device *device = NULL; unsigned long psc = 0; + ACPI_FUNCTION_TRACE("acpi_bus_get_power"); result = acpi_bus_get_device(handle, &device); if (result) - return result; + return_VALUE(result); *state = ACPI_STATE_UNKNOWN; @@ -157,12 +159,12 @@ int acpi_bus_get_power(acpi_handle handle, int *state) status = acpi_evaluate_integer(device->handle, "_PSC", NULL, &psc); if (ACPI_FAILURE(status)) - return -ENODEV; + return_VALUE(-ENODEV); device->power.state = (int)psc; } else if (device->power.flags.power_resources) { result = acpi_power_get_inferred_state(device); if (result) - return result; + return_VALUE(result); } *state = device->power.state; @@ -171,7 +173,7 @@ int acpi_bus_get_power(acpi_handle handle, int *state) ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] power state is D%d\n", device->pnp.bus_id, device->power.state)); - return 0; + return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_get_power); @@ -183,43 +185,42 @@ int acpi_bus_set_power(acpi_handle handle, int state) struct acpi_device *device = NULL; char object_name[5] = { '_', 'P', 'S', '0' + state, '\0' }; + ACPI_FUNCTION_TRACE("acpi_bus_set_power"); result = acpi_bus_get_device(handle, &device); if (result) - return result; + return_VALUE(result); if ((state < ACPI_STATE_D0) || (state > ACPI_STATE_D3)) - return -EINVAL; + return_VALUE(-EINVAL); /* Make sure this is a valid target state */ if (!device->flags.power_manageable) { - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device `[%s]' is not power manageable\n", - device->kobj.name)); - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_WARN, + "Device is not power manageable\n")); + return_VALUE(-ENODEV); } /* * Get device's current power state if it's unknown * This means device power state isn't initialized or previous setting failed */ - if (!device->flags.force_power_state) { - if (device->power.state == ACPI_STATE_UNKNOWN) - acpi_bus_get_power(device->handle, &device->power.state); - if (state == device->power.state) { - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device is already at D%d\n", - state)); - return 0; - } + if (device->power.state == ACPI_STATE_UNKNOWN) + acpi_bus_get_power(device->handle, &device->power.state); + if (state == device->power.state) { + ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device is already at D%d\n", + state)); + return_VALUE(0); } if (!device->power.states[state].flags.valid) { - printk(KERN_WARNING PREFIX "Device does not support D%d\n", state); - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_WARN, "Device does not support D%d\n", + state)); + return_VALUE(-ENODEV); } if (device->parent && (state < device->parent->power.state)) { - printk(KERN_WARNING PREFIX - "Cannot set device to a higher-powered" - " state than parent\n"); - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_WARN, + "Cannot set device to a higher-powered state than parent\n")); + return_VALUE(-ENODEV); } /* @@ -261,15 +262,15 @@ int acpi_bus_set_power(acpi_handle handle, int state) end: if (result) - printk(KERN_WARNING PREFIX - "Transitioning device [%s] to D%d\n", - device->pnp.bus_id, state); + ACPI_DEBUG_PRINT((ACPI_DB_WARN, + "Error transitioning device [%s] to D%d\n", + device->pnp.bus_id, state)); else ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Device [%s] transitioned to D%d\n", device->pnp.bus_id, state)); - return result; + return_VALUE(result); } EXPORT_SYMBOL(acpi_bus_set_power); @@ -290,17 +291,18 @@ int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data) struct acpi_bus_event *event = NULL; unsigned long flags = 0; + ACPI_FUNCTION_TRACE("acpi_bus_generate_event"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); /* drop event on the floor if no one's listening */ if (!event_is_open) - return 0; + return_VALUE(0); event = kmalloc(sizeof(struct acpi_bus_event), GFP_ATOMIC); if (!event) - return -ENOMEM; + return_VALUE(-ENOMEM); strcpy(event->device_class, device->pnp.device_class); strcpy(event->bus_id, device->pnp.bus_id); @@ -313,7 +315,7 @@ int acpi_bus_generate_event(struct acpi_device *device, u8 type, int data) wake_up_interruptible(&acpi_bus_event_queue); - return 0; + return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_generate_event); @@ -325,9 +327,10 @@ int acpi_bus_receive_event(struct acpi_bus_event *event) DECLARE_WAITQUEUE(wait, current); + ACPI_FUNCTION_TRACE("acpi_bus_receive_event"); if (!event) - return -EINVAL; + return_VALUE(-EINVAL); if (list_empty(&acpi_bus_event_list)) { @@ -341,7 +344,7 @@ int acpi_bus_receive_event(struct acpi_bus_event *event) set_current_state(TASK_RUNNING); if (signal_pending(current)) - return -ERESTARTSYS; + return_VALUE(-ERESTARTSYS); } spin_lock_irqsave(&acpi_bus_event_lock, flags); @@ -352,13 +355,13 @@ int acpi_bus_receive_event(struct acpi_bus_event *event) spin_unlock_irqrestore(&acpi_bus_event_lock, flags); if (!entry) - return -ENODEV; + return_VALUE(-ENODEV); memcpy(event, entry, sizeof(struct acpi_bus_event)); kfree(entry); - return 0; + return_VALUE(0); } EXPORT_SYMBOL(acpi_bus_receive_event); @@ -373,9 +376,10 @@ acpi_bus_check_device(struct acpi_device *device, int *status_changed) acpi_status status = 0; struct acpi_device_status old_status; + ACPI_FUNCTION_TRACE("acpi_bus_check_device"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); if (status_changed) *status_changed = 0; @@ -392,15 +396,15 @@ acpi_bus_check_device(struct acpi_device *device, int *status_changed) if (status_changed) *status_changed = 1; } - return 0; + return_VALUE(0); } status = acpi_bus_get_status(device); if (ACPI_FAILURE(status)) - return -ENODEV; + return_VALUE(-ENODEV); if (STRUCT_TO_INT(old_status) == STRUCT_TO_INT(device->status)) - return 0; + return_VALUE(0); if (status_changed) *status_changed = 1; @@ -416,7 +420,7 @@ acpi_bus_check_device(struct acpi_device *device, int *status_changed) /* TBD: Handle device removal */ } - return 0; + return_VALUE(0); } static int acpi_bus_check_scope(struct acpi_device *device) @@ -424,24 +428,25 @@ static int acpi_bus_check_scope(struct acpi_device *device) int result = 0; int status_changed = 0; + ACPI_FUNCTION_TRACE("acpi_bus_check_scope"); if (!device) - return -EINVAL; + return_VALUE(-EINVAL); /* Status Change? */ result = acpi_bus_check_device(device, &status_changed); if (result) - return result; + return_VALUE(result); if (!status_changed) - return 0; + return_VALUE(0); /* * TBD: Enumerate child devices within this device's scope and * run acpi_bus_check_device()'s on them. */ - return 0; + return_VALUE(0); } /** @@ -454,9 +459,10 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) int result = 0; struct acpi_device *device = NULL; + ACPI_FUNCTION_TRACE("acpi_bus_notify"); if (acpi_bus_get_device(handle, &device)) - return; + return_VOID; switch (type) { @@ -531,7 +537,7 @@ static void acpi_bus_notify(acpi_handle handle, u32 type, void *data) break; } - return; + return_VOID; } /* -------------------------------------------------------------------------- @@ -545,6 +551,7 @@ static int __init acpi_bus_init_irq(void) struct acpi_object_list arg_list = { 1, &arg }; char *message = NULL; + ACPI_FUNCTION_TRACE("acpi_bus_init_irq"); /* * Let the system know what interrupt model we are using by @@ -563,7 +570,7 @@ static int __init acpi_bus_init_irq(void) break; default: printk(KERN_WARNING PREFIX "Unknown interrupt routing model\n"); - return -ENODEV; + return_VALUE(-ENODEV); } printk(KERN_INFO PREFIX "Using %s for interrupt routing\n", message); @@ -572,11 +579,11 @@ static int __init acpi_bus_init_irq(void) status = acpi_evaluate_object(NULL, "\\_PIC", &arg_list, NULL); if (ACPI_FAILURE(status) && (status != AE_NOT_FOUND)) { - ACPI_EXCEPTION((AE_INFO, status, "Evaluating _PIC")); - return -ENODEV; + ACPI_DEBUG_PRINT((ACPI_DB_ERROR, "Error evaluating _PIC\n")); + return_VALUE(-ENODEV); } - return 0; + return_VALUE(0); } void __init acpi_early_init(void) @@ -584,11 +591,10 @@ void __init acpi_early_init(void) acpi_status status = AE_OK; struct acpi_buffer buffer = { sizeof(acpi_fadt), &acpi_fadt }; + ACPI_FUNCTION_TRACE("acpi_early_init"); if (acpi_disabled) - return; - - printk(KERN_INFO PREFIX "Core revision %08x\n", ACPI_CA_VERSION); + return_VOID; /* enable workarounds, unless strict ACPI spec. compliance */ if (!acpi_strict) @@ -611,7 +617,7 @@ void __init acpi_early_init(void) /* * Get a separate copy of the FADT for use by other drivers. */ - status = acpi_get_table(ACPI_TABLE_ID_FADT, 1, &buffer); + status = acpi_get_table(ACPI_TABLE_FADT, 1, &buffer); if (ACPI_FAILURE(status)) { printk(KERN_ERR PREFIX "Unable to get the FADT\n"); goto error0; @@ -646,11 +652,11 @@ void __init acpi_early_init(void) goto error0; } - return; + return_VOID; error0: disable_acpi(); - return; + return_VOID; } static int __init acpi_bus_init(void) @@ -659,6 +665,7 @@ static int __init acpi_bus_init(void) acpi_status status = AE_OK; extern acpi_status acpi_os_initialize1(void); + ACPI_FUNCTION_TRACE("acpi_bus_init"); status = acpi_os_initialize1(); @@ -720,12 +727,12 @@ static int __init acpi_bus_init(void) */ acpi_root_dir = proc_mkdir(ACPI_BUS_FILE_ROOT, NULL); - return 0; + return_VALUE(0); /* Mimic structured exception handling */ error1: acpi_terminate(); - return -ENODEV; + return_VALUE(-ENODEV); } decl_subsys(acpi, NULL, NULL); @@ -734,16 +741,16 @@ static int __init acpi_init(void) { int result = 0; + ACPI_FUNCTION_TRACE("acpi_init"); + + printk(KERN_INFO PREFIX "Subsystem revision %08x\n", ACPI_CA_VERSION); if (acpi_disabled) { printk(KERN_INFO PREFIX "Interpreter disabled.\n"); - return -ENODEV; + return_VALUE(-ENODEV); } - result = firmware_register(&acpi_subsys); - if (result < 0) - printk(KERN_WARNING "%s: firmware_register error: %d\n", - __FUNCTION__, result); + firmware_register(&acpi_subsys); result = acpi_bus_init(); @@ -761,7 +768,7 @@ static int __init acpi_init(void) } else disable_acpi(); - return result; + return_VALUE(result); } subsys_initcall(acpi_init);