X-Git-Url: http://pilppa.org/gitweb/gitweb.cgi?a=blobdiff_plain;f=drivers%2Facpi%2Fscan.c;h=78a82b3c7b60e3929eee0d4831300fb4afaaf2ba;hb=87ecd5cddaa37f057d8d8c2813e1b748b1804423;hp=be74347d135435e5c5b4508b8144528bc58a0459;hpb=2f63251ed0a803ddbe7bf2577b69d467aa872f68;p=linux-2.6-omap-h63xx.git diff --git a/drivers/acpi/scan.c b/drivers/acpi/scan.c index be74347d135..78a82b3c7b6 100644 --- a/drivers/acpi/scan.c +++ b/drivers/acpi/scan.c @@ -35,8 +35,9 @@ struct acpi_device_bus_id{ * e.g. on a device with hid:IBM0001 and cid:ACPI0001 you get: * char *modalias: "acpi:IBM0001:ACPI0001" */ -int create_modalias(struct acpi_device *acpi_dev, char *modalias, int size){ - +static int create_modalias(struct acpi_device *acpi_dev, char *modalias, + int size) +{ int len; if (!acpi_dev->flags.hardware_id) @@ -58,7 +59,7 @@ int create_modalias(struct acpi_device *acpi_dev, char *modalias, int size){ count = snprintf(&modalias[len], size, "%s:", cid_list->id[i].value); if (count < 0 || count >= size) { - printk(KERN_ERR "acpi: %s cid[%i] exceeds event buffer size", + printk(KERN_ERR PREFIX "%s cid[%i] exceeds event buffer size", acpi_dev->pnp.device_name, i); break; } @@ -318,16 +319,18 @@ static int acpi_bus_match(struct device *dev, struct device_driver *drv) return !acpi_match_device_ids(acpi_dev, acpi_drv->ids); } -static int acpi_device_uevent(struct device *dev, char **envp, int num_envp, - char *buffer, int buffer_size) +static int acpi_device_uevent(struct device *dev, struct kobj_uevent_env *env) { struct acpi_device *acpi_dev = to_acpi_device(dev); + int len; - strcpy(buffer, "MODALIAS="); - if (create_modalias(acpi_dev, buffer + 9, buffer_size - 9) > 0) { - envp[0] = buffer; - envp[1] = NULL; - } + if (add_uevent_var(env, "MODALIAS=")) + return -ENOMEM; + len = create_modalias(acpi_dev, &env->buf[env->buflen - 1], + sizeof(env->buf) - env->buflen); + if (len >= (sizeof(env->buf) - env->buflen)) + return -ENOMEM; + env->buflen += len; return 0; } @@ -450,7 +453,7 @@ static int acpi_device_register(struct acpi_device *device, device->dev.release = &acpi_device_release; result = device_add(&device->dev); if(result) { - printk("Error adding device %s", device->dev.bus_id); + printk(KERN_ERR PREFIX "Error adding device %s", device->dev.bus_id); goto end; } @@ -827,7 +830,7 @@ static int acpi_bus_get_flags(struct acpi_device *device) if (ACPI_SUCCESS(status)) device->flags.wake_capable = 1; - /* TBD: Peformance management */ + /* TBD: Performance management */ return 0; } @@ -953,7 +956,7 @@ static void acpi_device_set_id(struct acpi_device *device, case ACPI_BUS_TYPE_DEVICE: status = acpi_get_object_info(handle, &buffer); if (ACPI_FAILURE(status)) { - printk("%s: Error reading device info\n", __FUNCTION__); + printk(KERN_ERR PREFIX "%s: Error reading device info\n", __FUNCTION__); return; } @@ -1023,7 +1026,7 @@ static void acpi_device_set_id(struct acpi_device *device, if (device->pnp.cid_list) memcpy(device->pnp.cid_list, cid_list, cid_list->size); else - printk(KERN_ERR "Memory allocation error\n"); + printk(KERN_ERR PREFIX "Memory allocation error\n"); } kfree(buffer.pointer); @@ -1047,7 +1050,7 @@ static int acpi_device_set_context(struct acpi_device *device, int type) acpi_bus_data_handler, device); if (ACPI_FAILURE(status)) { - printk("Error attaching device data\n"); + printk(KERN_ERR PREFIX "Error attaching device data\n"); result = -ENODEV; } } @@ -1446,6 +1449,8 @@ static int acpi_bus_scan_fixed(struct acpi_device *root) return result; } +int __init acpi_boot_ec_enable(void); + static int __init acpi_scan_init(void) { int result; @@ -1477,6 +1482,10 @@ static int __init acpi_scan_init(void) * Enumerate devices in the ACPI namespace. */ result = acpi_bus_scan_fixed(acpi_root); + + /* EC region might be needed at bus_scan, so enable it now */ + acpi_boot_ec_enable(); + if (!result) result = acpi_bus_scan(acpi_root, &ops);