From d4d889711556eaea294ca52a9a1d539a7d505d93 Mon Sep 17 00:00:00 2001 From: Pali Rohár Date: Thu, 18 May 2023 21:34:49 +0200 Subject: libpci: ecam: Deduplicate get_bus_addr() code for calculating bus address Move duplicate code block into helper function calculate_bus_addr(). --- lib/ecam.c | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/lib/ecam.c b/lib/ecam.c index 961e416..f4d2e9b 100644 --- a/lib/ecam.c +++ b/lib/ecam.c @@ -618,6 +618,21 @@ validate_addrs(const char *addrs) return 1; } +static int +calculate_bus_addr(u8 start_bus, off_t start_addr, u32 total_length, u8 bus, off_t *addr, u32 *length) +{ + u32 offset; + + offset = 32*8*4096 * (bus - start_bus); + if (offset >= total_length) + return 0; + + *addr = start_addr + offset; + *length = total_length - offset; + + return 1; +} + static int get_bus_addr(struct acpi_mcfg *mcfg, const char *addrs, int domain, u8 bus, off_t *addr, u32 *length) { @@ -626,7 +641,6 @@ get_bus_addr(struct acpi_mcfg *mcfg, const char *addrs, int domain, u8 bus, off_ u8 end_bus; off_t start_addr; u32 total_length; - u32 offset; int i, count; if (mcfg) @@ -636,14 +650,7 @@ get_bus_addr(struct acpi_mcfg *mcfg, const char *addrs, int domain, u8 bus, off_ { get_mcfg_allocation(mcfg, i, &cur_domain, &start_bus, &end_bus, &start_addr, &total_length); if (domain == cur_domain && bus >= start_bus && bus <= end_bus) - { - offset = 32*8*4096 * (bus - start_bus); - if (offset >= total_length) - return 0; - *addr = start_addr + offset; - *length = total_length - offset; - return 1; - } + return calculate_bus_addr(start_bus, start_addr, total_length, bus, addr, length); } return 0; } @@ -654,14 +661,7 @@ get_bus_addr(struct acpi_mcfg *mcfg, const char *addrs, int domain, u8 bus, off_ if (!parse_next_addrs(addrs, &addrs, &cur_domain, &start_bus, &end_bus, &start_addr, &total_length)) return 0; if (domain == cur_domain && bus >= start_bus && bus <= end_bus) - { - offset = 32*8*4096 * (bus - start_bus); - if (offset >= total_length) - return 0; - *addr = start_addr + offset; - *length = total_length - offset; - return 1; - } + return calculate_bus_addr(start_bus, start_addr, total_length, bus, addr, length); } return 0; } -- cgit 1.2.3-korg