05 Apr, 2009

1 commit

  • This patch adds support for ACPI device driver .notify() methods. If
    such a method is present, Linux/ACPI installs a handler for device
    notifications (but not for system notifications such as Bus Check,
    Device Check, etc). When a device notification occurs, Linux/ACPI
    passes it on to the driver's .notify() method.

    In most cases, this removes the need for drivers to install their own
    handlers for device-specific notifications.

    For fixed hardware devices like some power and sleep buttons, there's
    no notification value because there's no control method to execute a
    Notify opcode. When a fixed hardware device generates an event, we
    handle it the same as a regular device notification, except we send
    a ACPI_FIXED_HARDWARE_EVENT value. This is outside the normal 0x0-0xff
    range used by Notify opcodes.

    Several drivers install their own handlers for system Bus Check and
    Device Check notifications so they can support hot-plug. This patch
    doesn't affect that usage.

    Signed-off-by: Bjorn Helgaas
    Reviewed-by: Alex Chiang
    Signed-off-by: Len Brown

    Bjorn Helgaas
     

17 Mar, 2009

1 commit

  • A number of things that shouldn't be exposed outside the ACPI core
    were declared in include/acpi/acpi_drivers.h, where anybody can
    see them. This patch moves those declarations to a new "internal.h"
    inside drivers/acpi.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Len Brown

    Bjorn Helgaas
     

12 Nov, 2008

1 commit


08 Nov, 2008

3 commits


07 Nov, 2008

3 commits

  • Declaring processors in ACPI namespace can be done using either a
    "Processor" definition or a "Device" definition (see section 8.4 -
    Declaring Processors; "Advanced Configuration and Power Interface
    Specification", Revision 3.0b). Currently the two processor
    declaration types are conflated.

    This patch disambiguates the processor declaration's definition type
    enabling subsequent code to behave uniquely based explicitly on the
    declaration's type.

    Signed-off-by: Myron Stowe
    Signed-off-by: Len Brown

    Myron Stowe
     
  • Remove CONFIG_ACPI_EC. It was always set the same as CONFIG_ACPI,
    and it had no menu label, so there was no way to set it to anything
    other than "y".

    Per section 6.5.4 of the ACPI 3.0b specification,

    OSPM must make Embedded Controller operation regions, accessed
    via the Embedded Controllers described in ECDT, available before
    executing any control method.

    The ECDT table is optional, but if it is present, the above text
    means that the EC it describes is a required part of the ACPI
    subsystem, so CONFIG_ACPI_EC=n wouldn't make sense.

    Signed-off-by: Bjorn Helgaas
    Acked-by: Alexey Starikovskiy
    Signed-off-by: Len Brown

    Bjorn Helgaas
     
  • Remove CONFIG_ACPI_POWER. It was always set the same as CONFIG_ACPI,
    and it had no menu label, so there was no way to set it to anything
    other than "y".

    The interfaces under CONFIG_ACPI_POWER (acpi_device_sleep_wake(),
    acpi_power_transition(), etc) are called unconditionally from the
    ACPI core, so we already depend on it always being present.

    Signed-off-by: Bjorn Helgaas
    Signed-off-by: Len Brown

    Bjorn Helgaas
     

23 Oct, 2008

3 commits

  • Len Brown
     
  • Conflicts:
    drivers/acpi/osl.c

    Signed-off-by: Len Brown

    Len Brown
     
  • Maybe the incorrect power state is returned on the bogus bios, which
    is different with the real power state. For example: the bios returns D0
    state and the real power state is D3. OS expects to set the device to D0
    state. In such case if OS uses the power state returned by the BIOS and
    checks the device power state very strictly in power transition, the device
    can't be transited to the correct power state.

    So the boot option of "acpi.power_nocheck=1" is added to avoid checking
    the device power in the course of device power transition.

    http://bugzilla.kernel.org/show_bug.cgi?id=8049
    http://bugzilla.kernel.org/show_bug.cgi?id=11000

    Signed-off-by: Zhao Yakui
    Signed-off-by: Zhang Rui
    Signed-off-by: Li Shaohua
    Signed-off-by: Andi Kleen
    Signed-off-by: Len Brown

    Zhao Yakui
     

11 Oct, 2008

1 commit

  • when there is no ECDT table and no _INI object for EC device, it will be
    enabled before scanning ACPI device. But it is too late after the following
    the commit is merged.
    >commit 7752d5cfe3d11ca0bb9c673ec38bd78ba6578f8e
    > Author: Robert Hancock
    > Date: Fri Feb 15 01:27:20 2008 -0800
    >x86: validate against acpi motherboard resources

    After the above commit is merged, OS will check whether MCFG area is
    reserved in ACPI motherboard resources by calling the function of
    acpi_get_devices when there exists MCFG table. In the acpi_get_devices the _STA
    object will be evaluated to check the status of the ACPI device. On some broken
    BIOS the MYEC object of EC device is initialized as one, which indicates that
    EC operation region is already accessible before enabling EC device.So on these
    broken BIOS the EC operation region will be accessed in course of evaluating
    the _STA object before enabling EC device, which causes that OS will print the
    following warning messages:
    >ACPI Error (evregion-0315): No handler for Region [EC__] (ffff88007f8145e8)
    [EmbeddedControl] [20080609]
    >ACPI Error (exfldio-0290): Region EmbeddedControl(3) has no handler [20080321]
    >ACPI Error (psparse-0530): Method parse/execution failed [\_SB_.PCI0.SBRG.
    EC__.BAT1._STA] (Node ffff81013fc17a00), AE_NOT_EXIST
    >ACPI Error (uteval-0233): Method execution failed [\_SB_.PCI0.SBRG.EC__.BAT1.
    _STA] (Node ffff81013fc17a00), AE_NOT_EXIST

    Although the above warning message is harmless, it looks confusing.
    So it is necessary to enable EC device as early as possible.Maybe it is
    appropriate to enable it immediately after ACPI full initialization.

    http://bugzilla.kernel.org/show_bug.cgi?id=11255
    http://bugzilla.kernel.org/show_bug.cgi?id=11374
    http://bugzilla.kernel.org/show_bug.cgi?id=11660

    Signed-off-by: Zhao Yakui
    Acked-by: Alexey Starikovskiy
    Signed-off-by: Len Brown

    Zhao Yakui
     

24 Sep, 2008

1 commit

  • dock's uevent reported itself, not ata. It might be difficult to find an
    ata device just according to a dock. This patch introduces docking ops
    for each device in a dock. when docking, dock driver can send device
    specific uevent. This should help dock station too (not just bay)

    Signed-off-by: Shaohua Li
    Acked-by: Tejun Heo
    Signed-off-by: Len Brown

    Shaohua Li
     

08 Jul, 2008

1 commit

  • The currect ACPI code attempts to execute _PSW at three different
    places and in one of them only it tries to execute _DSW before _PSW,
    which is inconsistent with the other two cases.

    Move the execution of _DSW and _PSW into a separate function called
    acpi_device_sleep_wake() and call it wherever appropriate instead of
    executing _DSW and/or _PSW directly.

    Signed-off-by: Rafael J. Wysocki
    Acked-by: Pavel Machek
    Signed-off-by: Jesse Barnes

    Rafael J. Wysocki
     

07 Feb, 2008

2 commits

  • Conflicts:

    drivers/acpi/scan.c
    include/linux/acpi.h

    Signed-off-by: Len Brown

    Len Brown
     
  • This patch contains the following possible cleanups:
    - make the following needlessly global code static:
    - drivers/acpi/bay.c:dev_attr_eject
    - drivers/acpi/bay.c:dev_attr_present
    - drivers/acpi/dock.c:dev_attr_docked
    - drivers/acpi/dock.c:dev_attr_flags
    - drivers/acpi/dock.c:dev_attr_uid
    - drivers/acpi/dock.c:dev_attr_undock
    - drivers/acpi/pci_bind.c:acpi_pci_unbind()
    - drivers/acpi/pci_link.c:acpi_link_lock
    - drivers/acpi/sbs.c:acpi_sbs_callback()
    - drivers/acpi/sbshc.c:acpi_smbus_transaction()
    - drivers/acpi/sleep/main.c:acpi_sleep_prepare()
    - #if 0 the following unused global functions:
    - drivers/acpi/numa.c:acpi_unmap_pxm_to_node()
    - remove the following unused EXPORT_SYMBOL's:
    - acpi_register_gsi
    - acpi_unregister_gsi
    - acpi_strict
    - acpi_bus_receive_event
    - register_acpi_bus_type
    - unregister_acpi_bus_type
    - acpi_os_printf
    - acpi_os_sleep
    - acpi_os_stall
    - acpi_os_read_pci_configuration
    - acpi_os_create_semaphore
    - acpi_os_delete_semaphore
    - acpi_os_wait_semaphore
    - acpi_os_signal_semaphore
    - acpi_os_signal
    - acpi_pci_irq_enable
    - acpi_get_pxm

    Signed-off-by: Adrian Bunk
    Acked-by: Alexey Starikovskiy
    Signed-off-by: Len Brown

    Adrian Bunk
     

08 Dec, 2007

1 commit


26 Sep, 2007

1 commit


30 Jul, 2007

2 commits

  • Restore the 2.6.22 CONFIG_ACPI_SLEEP build option, but now shadowing the
    new CONFIG_PM_SLEEP option.

    Signed-off-by: Len Brown
    [ Modified to work with the PM config setup changes. ]
    Signed-off-by: Linus Torvalds

    Len Brown
     
  • Introduce CONFIG_SUSPEND representing the ability to enter system sleep
    states, such as the ACPI S3 state, and allow the user to choose SUSPEND
    and HIBERNATION independently of each other.

    Make HOTPLUG_CPU be selected automatically if SUSPEND or HIBERNATION has
    been chosen and the kernel is intended for SMP systems.

    Also, introduce CONFIG_PM_SLEEP which is automatically selected if
    CONFIG_SUSPEND or CONFIG_HIBERNATION is set and use it to select the
    code needed for both suspend and hibernation.

    The top-level power management headers and the ACPI code related to
    suspend and hibernation are modified to use the new definitions (the
    changes in drivers/acpi/sleep/main.c are, mostly, moving code to reduce
    the number of ifdefs).

    There are many other files in which CONFIG_PM can be replaced with
    CONFIG_PM_SLEEP or even with CONFIG_SUSPEND, but they can be updated in
    the future.

    Signed-off-by: Rafael J. Wysocki
    Signed-off-by: Linus Torvalds

    Rafael J. Wysocki
     

25 Jul, 2007

2 commits


24 Jul, 2007

1 commit


10 May, 2007

1 commit


17 Feb, 2007

3 commits


10 Feb, 2007

1 commit


09 Feb, 2007

1 commit

  • drivers/acpi/bay.c: In function 'bay_add':
    drivers/acpi/bay.c:310: warning: statement with no effect

    Fix it by rewriting those macros in C. Much nicer.

    Cc: Kristen Carlson Accardi
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Andrew Morton
     

03 Feb, 2007

2 commits


06 Jan, 2007

1 commit

  • Some of the ACPI devices use the internal fake hids
    which are exposed to userspace as devces' bus_id after sysfs conversion.
    To make it more friendly, we convert them to more understandable strings.

    For those devices w/o PNPids, we use "device:instance_no" as the bus_id
    instead of "PNPIDNON:instance_no".

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     

21 Dec, 2006

1 commit

  • http://bugzilla.kernel.org/show_bug.cgi?id=7695

    Originally we converted bind/unbind to use a new pci bridge driver.
    The driver will add/remove _PRT, so we can eventually remove
    .bind/.unbind methods.

    But we found that some of the _ADR-Based devices don't have _PRT,
    i.e. they are not managed by the new ACPI PCI bridge driver.
    So that .bind method is not called for some _ADR-Based devices,
    which leads to a failure.

    Now we make ACPI PCI Root Bridge Driver scan and binds all _ADR-Based devices
    once the driver is loaded, in the .add method of ACPI PCI Root Bridge driver.

    Extra code path for calling .bind/.unbind when _ADR-Based devices
    are hot added/removed is also added.

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Rui Zhang
     

16 Dec, 2006

1 commit

  • We do this mainly because:
    1. hid is used to match ACPI devices and drivers.
    .match method which is incompatible to driver model
    can be deleted from acpi_driver.ops then.
    2. As the .uevent method mark ACPI drivers by PNPID,
    fake hid is set to non-PNPID devices so that udev script
    can load the right ACPI driver by looking for
    "HWID = " or "COMPTID = ".

    Signed-off-by: Zhang Rui
    Signed-off-by: Len Brown

    Zhang Rui
     

10 Jul, 2006

1 commit


09 Jul, 2006

1 commit


28 Jun, 2006

1 commit

  • Create a driver which lives in the acpi subsystem to handle dock events.
    This driver is not an "ACPI" driver, because acpi drivers require that the
    object be present when the driver is loaded.

    Signed-off-by: Kristen Carlson Accardi
    Cc: Dave Hansen
    Signed-off-by: Andrew Morton
    Signed-off-by: Len Brown

    Kristen Accardi
     

10 Dec, 2005

1 commit

  • Completed a major overhaul of the Resource Manager code -
    specifically, optimizations in the area of the AML/internal
    resource conversion code. The code has been optimized to
    simplify and eliminate duplicated code, CPU stack use has
    been decreased by optimizing function parameters and local
    variables, and naming conventions across the manager have
    been standardized for clarity and ease of maintenance (this
    includes function, parameter, variable, and struct/typedef
    names.)

    All Resource Manager dispatch and information tables have
    been moved to a single location for clarity and ease of
    maintenance. One new file was created, named "rsinfo.c".

    The ACPI return macros (return_ACPI_STATUS, etc.) have
    been modified to guarantee that the argument is
    not evaluated twice, making them less prone to macro
    side-effects. However, since there exists the possibility
    of additional stack use if a particular compiler cannot
    optimize them (such as in the debug generation case),
    the original macros are optionally available. Note that
    some invocations of the return_VALUE macro may now cause
    size mismatch warnings; the return_UINT8 and return_UINT32
    macros are provided to eliminate these. (From Randy Dunlap)

    Implemented a new mechanism to enable debug tracing for
    individual control methods. A new external interface,
    acpi_debug_trace(), is provided to enable this mechanism. The
    intent is to allow the host OS to easily enable and disable
    tracing for problematic control methods. This interface
    can be easily exposed to a user or debugger interface if
    desired. See the file psxface.c for details.

    acpi_ut_callocate() will now return a valid pointer if a
    length of zero is specified - a length of one is used
    and a warning is issued. This matches the behavior of
    acpi_ut_allocate().

    Signed-off-by: Bob Moore
    Signed-off-by: Len Brown

    Bob Moore
     

26 Aug, 2005

1 commit

  • Delete the ability to build an ACPI kernel that does
    not include PCI support. When such a machine is created
    and it requires a tuned kernel, send a patch.

    http://bugzilla.kernel.org/show_bug.cgi?id=1364

    Signed-off-by: Len Brown

    Len Brown