Awesome Thanks a lot Danny
I'll try this on Tuesday as I hae a very busy family weekend. Luis El dom, 04-11-2007 a las 03:08 +0000, Dany Martineau escribió: > I think i may have some answers about this "bug". > I own a toshiba P100, so i know about the problem and custom DSDT. > Last summer, i was using Arch Linux and when kernel 2.6.22 was out for Arch, > i installed it on my laptop and lost sound, even if my DSDT file was ok. > I decided to check on patched applied by arch devs on their kernel to find > out that acpi-asus-m6-battery-fix.patch was the cause of all this > (http://bugs.archlinux.org/task/7598#comment17914). I recompiled the 2.6.22 > kernel without this patch and magically, the sound on my laptop was working > again with my custom DSDT file. > Last week, i've decided to try Gusty. Before trying it, i found out about > this bug so i decided to investigate on it. > I downloaded patch-2.6.23.bz2 from kernel.org to find out that that the some > of the modifications that were in acpi-asus-m6-battery-fix.patch were in > kernel 2.6.23. > > Here's acpi-asus-m6-battery-fix.patch > > If ECDT is not found, look up EC in DSDT. > > ---------------------------------------------begins here > --------------------------------------- > From: Alexey Starikovskiy <[EMAIL PROTECTED]> > > > --- > > drivers/acpi/ec.c | 29 ++++++++++++++++------------- > 1 files changed, 16 insertions(+), 13 deletions(-) > > diff --git a/drivers/acpi/ec.c b/drivers/acpi/ec.c > index 82f496c..5cae633 100644 > --- a/drivers/acpi/ec.c > +++ b/drivers/acpi/ec.c > @@ -801,8 +801,8 @@ ec_parse_device(acpi_handle handle, u32 Level, void > *context, void **retval) > > ec->handle = handle; > > - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "GPE=0x%02lx, ports=0x%2lx, 0x%2lx", > - ec->gpe, ec->command_addr, ec->data_addr)); > + printk(KERN_INFO PREFIX "GPE=0x%02lx, ports=0x%2lx, 0x%2lx\n", > + ec->gpe, ec->command_addr, ec->data_addr); > > return AE_CTRL_TERMINATE; > } > @@ -819,19 +819,22 @@ int __init acpi_ec_ecdt_probe(void) > /* > * Generate a boot ec context > */ > - > status = acpi_get_table(ACPI_SIG_ECDT, 1, > (struct acpi_table_header **)&ecdt_ptr); > - if (ACPI_FAILURE(status)) > - goto error; > - > - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found ECDT")); > - > - boot_ec->command_addr = ecdt_ptr->control.address; > - boot_ec->data_addr = ecdt_ptr->data.address; > - boot_ec->gpe = ecdt_ptr->gpe; > - boot_ec->handle = ACPI_ROOT_OBJECT; > - > + if (ACPI_SUCCESS(status)) { > + printk(KERN_INFO PREFIX "Found ECDT\n"); > + boot_ec->command_addr = ecdt_ptr->control.address; > + boot_ec->data_addr = ecdt_ptr->data.address; > + boot_ec->gpe = ecdt_ptr->gpe; > + boot_ec->handle = ACPI_ROOT_OBJECT; > + } else { > + printk(KERN_DEBUG PREFIX "Look up EC in DSDT\n"); > + status = acpi_get_devices(ACPI_EC_HID, ec_parse_device, > + boot_ec, NULL); > + if (ACPI_FAILURE(status)) > + goto error; > + } > + > ret = ec_install_handlers(boot_ec); > if (!ret) { > first_ec = boot_ec; > > ---------------------------------------------ends here > --------------------------------------- > > > Here's what's been changed in drivers/acpi/ec.c in kernel 2.6.23 > > ---------------------------------------------begins here > --------------------------------------- > @@ -819,18 +874,22 @@ int __init acpi_ec_ecdt_probe(void) > /* > * Generate a boot ec context > */ > - > status = acpi_get_table(ACPI_SIG_ECDT, 1, > (struct acpi_table_header **)&ecdt_ptr); > - if (ACPI_FAILURE(status)) > - goto error; > - > - ACPI_DEBUG_PRINT((ACPI_DB_INFO, "Found ECDT")); > - > - boot_ec->command_addr = ecdt_ptr->control.address; > - boot_ec->data_addr = ecdt_ptr->data.address; > - boot_ec->gpe = ecdt_ptr->gpe; > - boot_ec->handle = ACPI_ROOT_OBJECT; > + if (ACPI_SUCCESS(status)) { > + printk(KERN_INFO PREFIX "EC description table is found, > configuring boot EC\n\n"); > + boot_ec->command_addr = ecdt_ptr->control.address; > + boot_ec->data_addr = ecdt_ptr->data.address; > + boot_ec->gpe = ecdt_ptr->gpe; > + boot_ec->handle = ACPI_ROOT_OBJECT; > + } else { > + printk(KERN_DEBUG PREFIX "Look up EC in DSDT\n"); > + status = acpi_get_devices(ec_device_ids[0].id, ec_parse_device, > + boot_ec, NULL); > + /* Check that acpi_get_devices actually find something */ > + if (ACPI_FAILURE(status) || !boot_ec->handle) > + goto error; > + } > > ret = ec_install_handlers(boot_ec); > if (!ret) { > > ---------------------------------------------ends here > --------------------------------------- > > > My laptop is my only production machine, so i currently uses mandriva 2008 > and have some works to do on it for the next days. Maybe, i'll try later to > install gusty and look into the sources of their kernel to modify this file > to try to prove my theory! If someone is welling to do it, go ahead! > > Sorry for my english since i'm french! > -- toshiba p100 series dsdt acpi error no sound, works with acpi turned off. https://bugs.launchpad.net/bugs/136469 You received this bug notification because you are a member of Ubuntu Bugs, which is the bug contact for Ubuntu. -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
