diff options
Diffstat (limited to 'drivers/acpi/video.c')
-rw-r--r-- | drivers/acpi/video.c | 63 |
1 files changed, 0 insertions, 63 deletions
diff --git a/drivers/acpi/video.c b/drivers/acpi/video.c index b1a56bf682ae..d4b4b52facba 100644 --- a/drivers/acpi/video.c +++ b/drivers/acpi/video.c | |||
@@ -276,7 +276,6 @@ static void acpi_video_device_rebind(struct acpi_video_bus *video); | |||
276 | static void acpi_video_device_bind(struct acpi_video_bus *video, | 276 | static void acpi_video_device_bind(struct acpi_video_bus *video, |
277 | struct acpi_video_device *device); | 277 | struct acpi_video_device *device); |
278 | static int acpi_video_device_enumerate(struct acpi_video_bus *video); | 278 | static int acpi_video_device_enumerate(struct acpi_video_bus *video); |
279 | static int acpi_video_switch_output(struct acpi_video_bus *video, int event); | ||
280 | static int acpi_video_device_lcd_set_level(struct acpi_video_device *device, | 279 | static int acpi_video_device_lcd_set_level(struct acpi_video_device *device, |
281 | int level); | 280 | int level); |
282 | static int acpi_video_device_lcd_get_level_current( | 281 | static int acpi_video_device_lcd_get_level_current( |
@@ -1583,64 +1582,6 @@ static int acpi_video_device_enumerate(struct acpi_video_bus *video) | |||
1583 | return status; | 1582 | return status; |
1584 | } | 1583 | } |
1585 | 1584 | ||
1586 | /* | ||
1587 | * Arg: | ||
1588 | * video : video bus device | ||
1589 | * event : notify event | ||
1590 | * | ||
1591 | * Return: | ||
1592 | * < 0 : error | ||
1593 | * | ||
1594 | * 1. Find out the current active output device. | ||
1595 | * 2. Identify the next output device to switch to. | ||
1596 | * 3. call _DSS to do actual switch. | ||
1597 | */ | ||
1598 | |||
1599 | static int acpi_video_switch_output(struct acpi_video_bus *video, int event) | ||
1600 | { | ||
1601 | struct list_head *node; | ||
1602 | struct acpi_video_device *dev = NULL; | ||
1603 | struct acpi_video_device *dev_next = NULL; | ||
1604 | struct acpi_video_device *dev_prev = NULL; | ||
1605 | unsigned long state; | ||
1606 | int status = 0; | ||
1607 | |||
1608 | mutex_lock(&video->device_list_lock); | ||
1609 | |||
1610 | list_for_each(node, &video->video_device_list) { | ||
1611 | dev = container_of(node, struct acpi_video_device, entry); | ||
1612 | status = acpi_video_device_get_state(dev, &state); | ||
1613 | if (state & 0x2) { | ||
1614 | dev_next = container_of(node->next, | ||
1615 | struct acpi_video_device, entry); | ||
1616 | dev_prev = container_of(node->prev, | ||
1617 | struct acpi_video_device, entry); | ||
1618 | goto out; | ||
1619 | } | ||
1620 | } | ||
1621 | |||
1622 | dev_next = container_of(node->next, struct acpi_video_device, entry); | ||
1623 | dev_prev = container_of(node->prev, struct acpi_video_device, entry); | ||
1624 | |||
1625 | out: | ||
1626 | mutex_unlock(&video->device_list_lock); | ||
1627 | |||
1628 | switch (event) { | ||
1629 | case ACPI_VIDEO_NOTIFY_CYCLE: | ||
1630 | case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT: | ||
1631 | acpi_video_device_set_state(dev, 0); | ||
1632 | acpi_video_device_set_state(dev_next, 0x80000001); | ||
1633 | break; | ||
1634 | case ACPI_VIDEO_NOTIFY_PREV_OUTPUT: | ||
1635 | acpi_video_device_set_state(dev, 0); | ||
1636 | acpi_video_device_set_state(dev_prev, 0x80000001); | ||
1637 | default: | ||
1638 | break; | ||
1639 | } | ||
1640 | |||
1641 | return status; | ||
1642 | } | ||
1643 | |||
1644 | static int | 1585 | static int |
1645 | acpi_video_get_next_level(struct acpi_video_device *device, | 1586 | acpi_video_get_next_level(struct acpi_video_device *device, |
1646 | u32 level_current, u32 event) | 1587 | u32 level_current, u32 event) |
@@ -1800,23 +1741,19 @@ static void acpi_video_bus_notify(acpi_handle handle, u32 event, void *data) | |||
1800 | * connector. */ | 1741 | * connector. */ |
1801 | acpi_video_device_enumerate(video); | 1742 | acpi_video_device_enumerate(video); |
1802 | acpi_video_device_rebind(video); | 1743 | acpi_video_device_rebind(video); |
1803 | acpi_video_switch_output(video, event); | ||
1804 | acpi_bus_generate_proc_event(device, event, 0); | 1744 | acpi_bus_generate_proc_event(device, event, 0); |
1805 | keycode = KEY_SWITCHVIDEOMODE; | 1745 | keycode = KEY_SWITCHVIDEOMODE; |
1806 | break; | 1746 | break; |
1807 | 1747 | ||
1808 | case ACPI_VIDEO_NOTIFY_CYCLE: /* Cycle Display output hotkey pressed. */ | 1748 | case ACPI_VIDEO_NOTIFY_CYCLE: /* Cycle Display output hotkey pressed. */ |
1809 | acpi_video_switch_output(video, event); | ||
1810 | acpi_bus_generate_proc_event(device, event, 0); | 1749 | acpi_bus_generate_proc_event(device, event, 0); |
1811 | keycode = KEY_SWITCHVIDEOMODE; | 1750 | keycode = KEY_SWITCHVIDEOMODE; |
1812 | break; | 1751 | break; |
1813 | case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT: /* Next Display output hotkey pressed. */ | 1752 | case ACPI_VIDEO_NOTIFY_NEXT_OUTPUT: /* Next Display output hotkey pressed. */ |
1814 | acpi_video_switch_output(video, event); | ||
1815 | acpi_bus_generate_proc_event(device, event, 0); | 1753 | acpi_bus_generate_proc_event(device, event, 0); |
1816 | keycode = KEY_VIDEO_NEXT; | 1754 | keycode = KEY_VIDEO_NEXT; |
1817 | break; | 1755 | break; |
1818 | case ACPI_VIDEO_NOTIFY_PREV_OUTPUT: /* previous Display output hotkey pressed. */ | 1756 | case ACPI_VIDEO_NOTIFY_PREV_OUTPUT: /* previous Display output hotkey pressed. */ |
1819 | acpi_video_switch_output(video, event); | ||
1820 | acpi_bus_generate_proc_event(device, event, 0); | 1757 | acpi_bus_generate_proc_event(device, event, 0); |
1821 | keycode = KEY_VIDEO_PREV; | 1758 | keycode = KEY_VIDEO_PREV; |
1822 | break; | 1759 | break; |