Skip to content
  • Rafael J. Wysocki's avatar
    ACPI: Centralized processing of ACPI device resources · 8e345c99
    Rafael J. Wysocki authored
    
    
    Currently, whoever wants to use ACPI device resources has to call
    acpi_walk_resources() to browse the buffer returned by the _CRS
    method for the given device and create filters passed to that
    routine to apply to the individual resource items.  This generally
    is cumbersome, time-consuming and inefficient.  Moreover, it may
    be problematic if resource conflicts need to be resolved, because
    the different users of _CRS will need to do that in a consistent
    way.  However, if there are resource conflicts, the ACPI core
    should be able to resolve them centrally instead of relying on
    various users of acpi_walk_resources() to handle them correctly
    together.
    
    For this reason, introduce a new function, acpi_dev_get_resources(),
    that can be used by subsystems to obtain a list of struct resource
    objects corresponding to the ACPI device resources returned by
    _CRS and, if necessary, to apply additional preprocessing routine
    to the ACPI resources before converting them to the struct resource
    format.
    
    Make the ACPI code that creates platform device objects use
    acpi_dev_get_resources() for resource processing instead of executing
    acpi_walk_resources() twice by itself, which causes it to be much
    more straightforward and easier to follow.
    
    In the future, acpi_dev_get_resources() can be extended to meet
    the needs of the ACPI PNP subsystem and other users of _CRS in
    the kernel.
    
    Signed-off-by: default avatarRafael J. Wysocki <rafael.j.wysocki@intel.com>
    Reviewed-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    Tested-by: default avatarMika Westerberg <mika.westerberg@linux.intel.com>
    8e345c99