freebsd-dev/sys/dev/acpica
John Baldwin 5217af301c Rework how the nexus(4) device works on x86 to better handle the idea of
different "platforms" on x86 machines.  The existing code already handles
having two platforms: ACPI and legacy.  However, the existing approach was
rather hardcoded and difficult to extend.  These changes take the approach
that each x86 hardware platform should provide its own nexus(4) driver (it
can inherit most of its behavior from the default legacy nexus(4) driver)
which is responsible for probing for the platform and performing
appropriate platform-specific setup during attach (such as adding a
platform-specific bus device).  This does mean changing the x86 platform
busses to no longer use an identify routine for probing, but to move that
logic into their matching nexus(4) driver instead.
- Make the default nexus(4) driver in nexus.c on i386 and amd64 handle the
  legacy platform.  It's probe routine now returns BUS_PROBE_GENERIC so it
  can be overriden.
- Expose a nexus_init_resources() routine which initializes the various
  resource managers so that subclassed nexus(4) drivers can invoke it from
  their attach routine.
- The legacy nexus(4) driver explicitly adds a legacy0 device in its
  attach routine.
- The ACPI driver no longer contains an new-bus identify method.  Instead
  it exposes a public function (acpi_identify()) which is a probe routine
  that the MD nexus(4) drivers can use to probe for ACPI.  All of the
  probe logic in acpi_probe() is now moved into acpi_identify() and
  acpi_probe() is just a stub.
- On i386 and amd64, an ACPI-specific nexus(4) driver checks for ACPI via
  acpi_identify() and claims the nexus0 device if the probe succeeds.  It
  then explicitly adds an acpi0 device in its attach routine.
- The legacy(4) driver no longer knows anything about the acpi0 device.
- On ia64 if acpi_identify() fails you basically end up with no devices.
  This matches the previous behavior where the old acpi_identify() would
  fail to add an acpi0 device again leaving you with no devices.

Discussed with:	imp
Silence on:	arch@
2008-03-13 20:39:04 +00:00
..
Osd Fix GPE livelock that occurs on HP/Compaq laptops, mostly in the thermal 2008-01-12 22:13:12 +00:00
acpi_acad.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_battery.c Check battery presence first before trying to get battery information. 2007-11-20 18:35:36 +00:00
acpi_button.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_cmbat.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_cpu.c Some PIIX4 chipsets need to be told to generate Stop Breaks by setting 2008-03-09 11:19:03 +00:00
acpi_dock.c Use ACPICA defined value for notification rather than locally defined one. 2007-05-31 08:49:51 +00:00
acpi_ec.c Whitespace only. 2007-11-08 21:20:34 +00:00
acpi_hpet.c Add a header containing constants for the various HPET registers and their 2008-01-16 18:47:07 +00:00
acpi_hpet.h Add a header containing constants for the various HPET registers and their 2008-01-16 18:47:07 +00:00
acpi_if.m Canonize the include of acpi.h. 2005-09-11 18:39:03 +00:00
acpi_isab.c Canonize the include of acpi.h. 2005-09-11 18:39:03 +00:00
acpi_lid.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_package.c Re-work Cx handling to be per-cpu and asymmetrical, fixing support on 2007-01-07 21:53:42 +00:00
acpi_pci_link.c Don't return an error from resume() if execution of _DIS fails for some 2007-10-27 22:14:17 +00:00
acpi_pci.c Don't destroy an ACPI device_t for a PCI device and reassign the ACPI 2007-10-27 14:54:43 +00:00
acpi_pcib_acpi.c Make the PCI code aware of PCI domains (aka PCI segments) so we can 2007-09-30 11:05:18 +00:00
acpi_pcib_pci.c Revamp the MSI/MSI-X code a bit to achieve two main goals: 2007-05-02 17:50:36 +00:00
acpi_pcib.c Force any hardwire-routed interrupts to level trigger and active low 2005-12-03 21:17:17 +00:00
acpi_pcibvar.h Protect against multiple includes and use _KERNEL to protect the PCI fns. 2005-02-28 05:39:34 +00:00
acpi_perf.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_powerres.c Remove unnecessary assignment. 2006-04-21 19:06:29 +00:00
acpi_quirk.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_quirks Add a quirk for a motherboard whose acpi timer runs too fast. 2005-06-26 18:19:14 +00:00
acpi_resource.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_smbat.c Remove unused variable. 2006-02-21 03:16:58 +00:00
acpi_smbus.h Import ACPI smart battery support. Newer systems (Acer, mostly) do not 2005-10-23 00:20:13 +00:00
acpi_thermal.c Create a thread to handle passive cooling for 1st zone which has _PSV, 2008-02-16 07:15:34 +00:00
acpi_throttle.c Catch up with ACPI-CA 20070320 import. 2007-03-22 18:16:43 +00:00
acpi_timer.c Dynamically choose the quality of the ACPI timer depending on whether 2007-07-30 15:21:26 +00:00
acpi_video.c Improve the way we'll detect video devices as per ACPI 3.0. 2006-08-10 13:18:02 +00:00
acpi.c Rework how the nexus(4) device works on x86 to better handle the idea of 2008-03-13 20:39:04 +00:00
acpiio.h Update the suspend/resume user API while maintaining backwards compat. 2007-06-21 22:50:37 +00:00
acpivar.h Rework how the nexus(4) device works on x86 to better handle the idea of 2008-03-13 20:39:04 +00:00