Merge branch 'merge' into release-2.6.27
This commit is contained in:
commit
97d2ef5686
3 changed files with 75 additions and 13 deletions
|
@ -113,20 +113,23 @@ acpi_pci_link_check_possible(struct acpi_resource *resource, void *context)
|
|||
|
||||
switch (resource->type) {
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
case ACPI_RESOURCE_TYPE_END_TAG:
|
||||
return AE_OK;
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
{
|
||||
struct acpi_resource_irq *p = &resource->data.irq;
|
||||
if (!p || !p->interrupt_count) {
|
||||
printk(KERN_WARNING PREFIX "Blank IRQ resource\n");
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"Blank _PRS IRQ resource\n"));
|
||||
return AE_OK;
|
||||
}
|
||||
for (i = 0;
|
||||
(i < p->interrupt_count
|
||||
&& i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) {
|
||||
if (!p->interrupts[i]) {
|
||||
printk(KERN_WARNING PREFIX "Invalid IRQ %d\n",
|
||||
p->interrupts[i]);
|
||||
printk(KERN_WARNING PREFIX
|
||||
"Invalid _PRS IRQ %d\n",
|
||||
p->interrupts[i]);
|
||||
continue;
|
||||
}
|
||||
link->irq.possible[i] = p->interrupts[i];
|
||||
|
@ -143,15 +146,16 @@ acpi_pci_link_check_possible(struct acpi_resource *resource, void *context)
|
|||
&resource->data.extended_irq;
|
||||
if (!p || !p->interrupt_count) {
|
||||
printk(KERN_WARNING PREFIX
|
||||
"Blank EXT IRQ resource\n");
|
||||
"Blank _PRS EXT IRQ resource\n");
|
||||
return AE_OK;
|
||||
}
|
||||
for (i = 0;
|
||||
(i < p->interrupt_count
|
||||
&& i < ACPI_PCI_LINK_MAX_POSSIBLE); i++) {
|
||||
if (!p->interrupts[i]) {
|
||||
printk(KERN_WARNING PREFIX "Invalid IRQ %d\n",
|
||||
p->interrupts[i]);
|
||||
printk(KERN_WARNING PREFIX
|
||||
"Invalid _PRS IRQ %d\n",
|
||||
p->interrupts[i]);
|
||||
continue;
|
||||
}
|
||||
link->irq.possible[i] = p->interrupts[i];
|
||||
|
@ -163,7 +167,8 @@ acpi_pci_link_check_possible(struct acpi_resource *resource, void *context)
|
|||
break;
|
||||
}
|
||||
default:
|
||||
printk(KERN_ERR PREFIX "Resource is not an IRQ entry\n");
|
||||
printk(KERN_ERR PREFIX "_PRS resource type 0x%x isn't an IRQ\n",
|
||||
resource->type);
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
|
@ -199,6 +204,9 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
|
|||
|
||||
|
||||
switch (resource->type) {
|
||||
case ACPI_RESOURCE_TYPE_START_DEPENDENT:
|
||||
case ACPI_RESOURCE_TYPE_END_TAG:
|
||||
return AE_OK;
|
||||
case ACPI_RESOURCE_TYPE_IRQ:
|
||||
{
|
||||
struct acpi_resource_irq *p = &resource->data.irq;
|
||||
|
@ -208,7 +216,7 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
|
|||
* particularly those those w/ _STA disabled
|
||||
*/
|
||||
ACPI_DEBUG_PRINT((ACPI_DB_INFO,
|
||||
"Blank IRQ resource\n"));
|
||||
"Blank _CRS IRQ resource\n"));
|
||||
return AE_OK;
|
||||
}
|
||||
*irq = p->interrupts[0];
|
||||
|
@ -224,7 +232,7 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
|
|||
* return at least 1 IRQ
|
||||
*/
|
||||
printk(KERN_WARNING PREFIX
|
||||
"Blank EXT IRQ resource\n");
|
||||
"Blank _CRS EXT IRQ resource\n");
|
||||
return AE_OK;
|
||||
}
|
||||
*irq = p->interrupts[0];
|
||||
|
@ -232,10 +240,11 @@ acpi_pci_link_check_current(struct acpi_resource *resource, void *context)
|
|||
}
|
||||
break;
|
||||
default:
|
||||
printk(KERN_ERR PREFIX "Resource %d isn't an IRQ\n", resource->type);
|
||||
case ACPI_RESOURCE_TYPE_END_TAG:
|
||||
printk(KERN_ERR PREFIX "_CRS resource type 0x%x isn't an IRQ\n",
|
||||
resource->type);
|
||||
return AE_OK;
|
||||
}
|
||||
|
||||
return AE_CTRL_TERMINATE;
|
||||
}
|
||||
|
||||
|
|
|
@ -769,6 +769,47 @@ static void acpi_thermal_run(unsigned long data)
|
|||
acpi_os_execute(OSL_GPE_HANDLER, acpi_thermal_check, (void *)data);
|
||||
}
|
||||
|
||||
static void acpi_thermal_active_off(void *data)
|
||||
{
|
||||
int result = 0;
|
||||
struct acpi_thermal *tz = data;
|
||||
int i = 0;
|
||||
int j = 0;
|
||||
struct acpi_thermal_active *active = NULL;
|
||||
|
||||
if (!tz) {
|
||||
printk(KERN_ERR PREFIX "Invalid (NULL) context\n");
|
||||
return;
|
||||
}
|
||||
|
||||
result = acpi_thermal_get_temperature(tz);
|
||||
if (result)
|
||||
return;
|
||||
|
||||
for (i = 0; i < ACPI_THERMAL_MAX_ACTIVE; i++) {
|
||||
active = &(tz->trips.active[i]);
|
||||
if (!active || !active->flags.valid)
|
||||
break;
|
||||
if (tz->temperature >= active->temperature) {
|
||||
/*
|
||||
* If the thermal temperature is greater than the
|
||||
* active threshod, unnecessary to turn off the
|
||||
* the active cooling device.
|
||||
*/
|
||||
continue;
|
||||
}
|
||||
/*
|
||||
* Below Threshold?
|
||||
* ----------------
|
||||
* Turn OFF all cooling devices associated with this
|
||||
* threshold.
|
||||
*/
|
||||
for (j = 0; j < active->devices.count; j++)
|
||||
result = acpi_bus_set_power(active->devices.handles[j],
|
||||
ACPI_STATE_D3);
|
||||
}
|
||||
}
|
||||
|
||||
static void acpi_thermal_check(void *data)
|
||||
{
|
||||
int result = 0;
|
||||
|
@ -1624,6 +1665,8 @@ static int acpi_thermal_add(struct acpi_device *device)
|
|||
|
||||
init_timer(&tz->timer);
|
||||
|
||||
acpi_thermal_active_off(tz);
|
||||
|
||||
acpi_thermal_check(tz);
|
||||
|
||||
status = acpi_install_notify_handler(device->handle,
|
||||
|
|
|
@ -741,7 +741,7 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
|
|||
|
||||
max_level = acpi_video_init_brightness(device);
|
||||
|
||||
if (device->cap._BCL && device->cap._BCM && device->cap._BQC && max_level > 0){
|
||||
if (device->cap._BCL && device->cap._BCM && max_level > 0) {
|
||||
int result;
|
||||
static int count = 0;
|
||||
char *name;
|
||||
|
@ -753,7 +753,17 @@ static void acpi_video_device_find_cap(struct acpi_video_device *device)
|
|||
device->backlight = backlight_device_register(name,
|
||||
NULL, device, &acpi_backlight_ops);
|
||||
device->backlight->props.max_brightness = device->brightness->count-3;
|
||||
device->backlight->props.brightness = acpi_video_get_brightness(device->backlight);
|
||||
/*
|
||||
* If there exists the _BQC object, the _BQC object will be
|
||||
* called to get the current backlight brightness. Otherwise
|
||||
* the brightness will be set to the maximum.
|
||||
*/
|
||||
if (device->cap._BQC)
|
||||
device->backlight->props.brightness =
|
||||
acpi_video_get_brightness(device->backlight);
|
||||
else
|
||||
device->backlight->props.brightness =
|
||||
device->backlight->props.max_brightness;
|
||||
backlight_update_status(device->backlight);
|
||||
kfree(name);
|
||||
|
||||
|
|
Loading…
Reference in a new issue