It's important to be able to control display switching and brightness, but I don't think that those functions should reside in acpivga(4) and acpiout(4) devices under acpi(4). For example, I read in somebody's dmesg today:
acpivga0 at acpi0 (GFX0): ACPI Display Adapter acpiout0 at acpivga0 (CRT1, 0x0100): ACPI Display Output Device acpiout1 at acpivga0 (DTV1, 0x0200): ACPI Display Output Device acpiout2 at acpivga0 (LCD, 0x0400): ACPI Display Output Device acpivga0: connected output devices: acpivga0: 0x0100 (acpiout0): Ext. Monitor, head 0, bios detect acpivga0: 0x0200 (acpiout1): TV, head 0, bios detect acpivga0: 0x0400 (acpiout2): Unknown Output Device, head 0, bios detect Rather than attaching new nodes at acpi0, the system should let ACPI BIOS inform the autoconfiguration process, which should attach one or more instances of a new, MI device, display(4). For example: vga0 at pci0 device ... function ... display0 at vga0: Ext. Monitor, head 0, bios detect (ACPI CRT1) display1 at vga0: TV, head 0, bios detect (ACPI DTV1) display2 at vga0: Unknown Output Device, head 0, bios detect (ACPI LCD) No nodes acpivga0..N or acpiout0..N should be attached. Each display(4) exists for reading information about its corresponding display, such as EDID; for activating power-saving modes on the display; for changing the display brightness; and for turning the display on and off. In principle, display(4) can use methods provided either by a non-ACPI BIOS or by a NetBSD driver that accesses the hardware directly. In this way, no single device has two representations in the device tree (think about the consequences, they're not pretty), and every device appears in the most appropriate place in the device tree for the purpose of suspending, resuming, detaching and re-attaching it. Make sense? Dave -- David Young OJC Technologies [email protected] Urbana, IL * (217) 278-3933
