diff options
author | Sinan Kaya <okaya@kernel.org> | 2018-12-19 22:46:53 +0000 |
---|---|---|
committer | Rafael J. Wysocki <rafael.j.wysocki@intel.com> | 2018-12-20 10:19:49 +0100 |
commit | 36ad7d2b9e9bde9aeb097fcfd3c033b5c010f92a (patch) | |
tree | d724d7500b61c11d9630ceba376adba59fd84591 /drivers/acpi/reboot.c | |
parent | 7566ec393f4161572ba6f11ad5171fd5d59b0fbd (diff) | |
download | linux-36ad7d2b9e9bde9aeb097fcfd3c033b5c010f92a.tar.gz linux-36ad7d2b9e9bde9aeb097fcfd3c033b5c010f92a.tar.bz2 linux-36ad7d2b9e9bde9aeb097fcfd3c033b5c010f92a.zip |
ACPI: Move PCI reset to a separate function
Getting ready to factor out PCI specific code when CONFIG_PCI is unset.
Create a acpi_pci_reset() that kick starts PCI specific reset.
Signed-off-by: Sinan Kaya <okaya@kernel.org>
Signed-off-by: Rafael J. Wysocki <rafael.j.wysocki@intel.com>
Diffstat (limited to 'drivers/acpi/reboot.c')
-rw-r--r-- | drivers/acpi/reboot.c | 32 |
1 files changed, 19 insertions, 13 deletions
diff --git a/drivers/acpi/reboot.c b/drivers/acpi/reboot.c index 6fa9c2a4cfe9..d642a9dede52 100644 --- a/drivers/acpi/reboot.c +++ b/drivers/acpi/reboot.c @@ -4,11 +4,27 @@ #include <linux/acpi.h> #include <acpi/reboot.h> +static void acpi_pci_reboot(struct acpi_generic_address *rr, u8 reset_value) +{ + unsigned int devfn; + struct pci_bus *bus0; + + /* The reset register can only live on bus 0. */ + bus0 = pci_find_bus(0, 0); + if (!bus0) + return; + /* Form PCI device/function pair. */ + devfn = PCI_DEVFN((rr->address >> 32) & 0xffff, + (rr->address >> 16) & 0xffff); + pr_debug("Resetting with ACPI PCI RESET_REG.\n"); + /* Write the value that resets us. */ + pci_bus_write_config_byte(bus0, devfn, + (rr->address & 0xffff), reset_value); +} + void acpi_reboot(void) { struct acpi_generic_address *rr; - struct pci_bus *bus0; - unsigned int devfn; u8 reset_value; if (acpi_disabled) @@ -33,17 +49,7 @@ void acpi_reboot(void) * on a device on bus 0. */ switch (rr->space_id) { case ACPI_ADR_SPACE_PCI_CONFIG: - /* The reset register can only live on bus 0. */ - bus0 = pci_find_bus(0, 0); - if (!bus0) - return; - /* Form PCI device/function pair. */ - devfn = PCI_DEVFN((rr->address >> 32) & 0xffff, - (rr->address >> 16) & 0xffff); - printk(KERN_DEBUG "Resetting with ACPI PCI RESET_REG.\n"); - /* Write the value that resets us. */ - pci_bus_write_config_byte(bus0, devfn, - (rr->address & 0xffff), reset_value); + acpi_pci_reboot(rr, reset_value); break; case ACPI_ADR_SPACE_SYSTEM_MEMORY: |