tech-kern archive

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

acpivga(4) v. MI display controls

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?


David Young             OJC Technologies      Urbana, IL * (217) 278-3933

Home | Main Index | Thread Index | Old Index