Re: [PATCH RESEND] ACPI video: guess flags for devices with non-standard addressing

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Sun, 2007-06-17 at 08:02 +0800, Daniel Drake wrote:
> Dell laptops seem to address video devices without the
> device_id_scheme bit,
> which means that Linux doesn't know the device types of the video
> devices.
> 
> This patch makes the ACPI video driver guess the device type based on
> the
> device name for devices which do not have the device_id_scheme set.
> This
> fixes the flags field for all 4 of my video devices on this laptop
> (Inspiron 640m).

> Signed-off-by: Daniel Drake <dsd@xxxxxxxxxx>
> 
> Index: linux/drivers/acpi/video.c
> ===================================================================
> --- linux.orig/drivers/acpi/video.c
> +++ linux/drivers/acpi/video.c
> @@ -1343,26 +1343,46 @@ acpi_video_bus_get_one_device(struct acp
> 
>                 attribute = acpi_video_get_device_attr(video,
> device_id);
> 
> -               if((attribute != NULL) && attribute->device_id_scheme)
> {
> -                       switch (attribute->display_type) {
> -                       case ACPI_VIDEO_DISPLAY_CRT:
> -                               data->flags.crt = 1;
> -                               break;
> -                       case ACPI_VIDEO_DISPLAY_TV:
> -                               data->flags.tvout = 1;
> -                               break;
> -                       case ACPI_VIDEO_DISPLAY_DVI:
> -                               data->flags.dvi = 1;
> -                               break;
> -                       case ACPI_VIDEO_DISPLAY_LCD:
> -                               data->flags.lcd = 1;
> -                               break;
> -                       default:
> -                               data->flags.unknown = 1;
> -                               break;
> +               if (attribute) {
> +                       if (!attribute->device_id_scheme) {
> +                               char *name = acpi_device_bid(device);
> +
> +                               /* Dell laptops seem to follow
> standard video
> +                                * device addressing but do not set
> the
> +                                * device_id_scheme bit.
> +                                * Guess the flags based on the device
> names.
> +                                */
> +                               if (strcmp(name, "CRT") == 0)
> +                                       data->flags.crt = 1;
Thinkpad laptops don't set the device_id_scheme bit as well.
And they use LCD0/CRT0/TV0/DVI0 as the device name.
can we use strncmp(name, "CRT", 3) here?

> +                               else if (strcmp(name, "TV") == 0)
> +                                       data->flags.tvout = 1;
> +                               else if (strcmp(name, "DVI") == 0)
> +                                       data->flags.dvi = 1;
> +                               else if (strcmp(name, "LCD") == 0)
> +                                       data->flags.lcd = 1;
ditto
> +                               else
> +                                       data->flags.unknown = 1;
> +                       } else {
> +                               switch (attribute->display_type) {
> +                               case ACPI_VIDEO_DISPLAY_CRT:
> +                                       data->flags.crt = 1;
> +                                       break;
> +                               case ACPI_VIDEO_DISPLAY_TV:
> +                                       data->flags.tvout = 1;
> +                                       break;
> +                               case ACPI_VIDEO_DISPLAY_DVI:
> +                                       data->flags.dvi = 1;
> +                                       break;
> +                               case ACPI_VIDEO_DISPLAY_LCD:
> +                                       data->flags.lcd = 1;
> +                                       break;
> +                               default:
> +                                       data->flags.unknown = 1;
> +                                       break;
> +                               }
> +                               if(attribute->bios_can_detect)
> +                                       data->flags.bios = 1;
>                         }
> -                       if(attribute->bios_can_detect)
> -                               data->flags.bios = 1;
>                 } else
>                         data->flags.unknown = 1;
> 
> -
> To unsubscribe from this list: send the line "unsubscribe linux-acpi"
> in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 
> 
-
To unsubscribe from this list: send the line "unsubscribe linux-acpi" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Linux IBM ACPI]     [Linux Power Management]     [Linux Kernel]     [Linux Laptop]     [Kernel Newbies]     [Share Photos]     [Security]     [Netfilter]     [Bugtraq]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Samba]     [Video 4 Linux]     [Device Mapper]     [Linux Resources]

  Powered by Linux