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

Reply via email to