diff options
| author | Ilpo Järvinen <ilpo.jarvinen@linux.intel.com> | 2025-12-19 20:40:31 +0300 |
|---|---|---|
| committer | Bjorn Helgaas <bhelgaas@google.com> | 2026-01-28 01:36:52 +0300 |
| commit | 08b3af830a35b66e0d40975dbf02feacc5d2aaa2 (patch) | |
| tree | 0ed530efbec34429101f6f6d3fa2018a4e65ffcf | |
| parent | fd29d4ea09baa54b87f7ec7278768d0db00382a8 (diff) | |
| download | linux-08b3af830a35b66e0d40975dbf02feacc5d2aaa2.tar.xz | |
PCI: Handle CardBus-specific params in setup-cardbus.c
Move CardBus window sizing parameters to setup-cardbus.c, which contains
all the other CardBus code.
Signed-off-by: Ilpo Järvinen <ilpo.jarvinen@linux.intel.com>
Signed-off-by: Bjorn Helgaas <bhelgaas@google.com>
Link: https://patch.msgid.link/20251219174036.16738-19-ilpo.jarvinen@linux.intel.com
| -rw-r--r-- | drivers/pci/pci.c | 14 | ||||
| -rw-r--r-- | drivers/pci/pci.h | 4 | ||||
| -rw-r--r-- | drivers/pci/setup-cardbus.c | 21 |
3 files changed, 26 insertions, 13 deletions
diff --git a/drivers/pci/pci.c b/drivers/pci/pci.c index 13dbb405dc31..85c22f30e20a 100644 --- a/drivers/pci/pci.c +++ b/drivers/pci/pci.c @@ -99,12 +99,6 @@ bool pci_reset_supported(struct pci_dev *dev) int pci_domains_supported = 1; #endif -#define DEFAULT_CARDBUS_IO_SIZE (256) -#define DEFAULT_CARDBUS_MEM_SIZE (64*1024*1024) -/* pci=cbmemsize=nnM,cbiosize=nn can override this */ -unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE; -unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE; - #define DEFAULT_HOTPLUG_IO_SIZE (256) #define DEFAULT_HOTPLUG_MMIO_SIZE (2*1024*1024) #define DEFAULT_HOTPLUG_MMIO_PREF_SIZE (2*1024*1024) @@ -6630,7 +6624,9 @@ static int __init pci_setup(char *str) if (k) *k++ = 0; if (*str && (str = pcibios_setup(str)) && *str) { - if (!strcmp(str, "nomsi")) { + if (!pci_setup_cardbus(str)) { + /* Function handled the parameters */ + } else if (!strcmp(str, "nomsi")) { pci_no_msi(); } else if (!strncmp(str, "noats", 5)) { pr_info("PCIe: ATS is disabled\n"); @@ -6649,10 +6645,6 @@ static int __init pci_setup(char *str) pcie_ari_disabled = true; } else if (!strncmp(str, "notph", 5)) { pci_no_tph(); - } else if (!strncmp(str, "cbiosize=", 9)) { - pci_cardbus_io_size = memparse(str + 9, &str); - } else if (!strncmp(str, "cbmemsize=", 10)) { - pci_cardbus_mem_size = memparse(str + 10, &str); } else if (!strncmp(str, "resource_alignment=", 19)) { resource_alignment_param = str + 19; } else if (!strncmp(str, "ecrc=", 5)) { diff --git a/drivers/pci/pci.h b/drivers/pci/pci.h index 2340e9df05c2..dbea5db07959 100644 --- a/drivers/pci/pci.h +++ b/drivers/pci/pci.h @@ -376,13 +376,12 @@ extern unsigned long pci_hotplug_io_size; extern unsigned long pci_hotplug_mmio_size; extern unsigned long pci_hotplug_mmio_pref_size; extern unsigned long pci_hotplug_bus_size; -extern unsigned long pci_cardbus_io_size; -extern unsigned long pci_cardbus_mem_size; #ifdef CONFIG_CARDBUS unsigned long pci_cardbus_resource_alignment(struct resource *res); int pci_bus_size_cardbus_bridge(struct pci_bus *bus, struct list_head *realloc_head); +int pci_setup_cardbus(char *str); #else static inline unsigned long pci_cardbus_resource_alignment(struct resource *res) @@ -394,6 +393,7 @@ static inline int pci_bus_size_cardbus_bridge(struct pci_bus *bus, { return -EOPNOTSUPP; } +static inline int pci_setup_cardbus(char *str) { return -ENOENT; } #endif /* CONFIG_CARDBUS */ /** diff --git a/drivers/pci/setup-cardbus.c b/drivers/pci/setup-cardbus.c index b017a2039fe1..93a2b43c637b 100644 --- a/drivers/pci/setup-cardbus.c +++ b/drivers/pci/setup-cardbus.c @@ -3,12 +3,20 @@ * Cardbus bridge setup routines. */ +#include <linux/errno.h> #include <linux/ioport.h> #include <linux/pci.h> +#include <linux/sizes.h> #include <linux/types.h> #include "pci.h" +#define DEFAULT_CARDBUS_IO_SIZE SZ_256 +#define DEFAULT_CARDBUS_MEM_SIZE SZ_64M +/* pci=cbmemsize=nnM,cbiosize=nn can override this */ +static unsigned long pci_cardbus_io_size = DEFAULT_CARDBUS_IO_SIZE; +static unsigned long pci_cardbus_mem_size = DEFAULT_CARDBUS_MEM_SIZE; + unsigned long pci_cardbus_resource_alignment(struct resource *res) { if (res->flags & IORESOURCE_IO) @@ -165,3 +173,16 @@ void pci_setup_cardbus_bridge(struct pci_bus *bus) } } EXPORT_SYMBOL(pci_setup_cardbus_bridge); + +int pci_setup_cardbus(char *str) +{ + if (!strncmp(str, "cbiosize=", 9)) { + pci_cardbus_io_size = memparse(str + 9, &str); + return 0; + } else if (!strncmp(str, "cbmemsize=", 10)) { + pci_cardbus_mem_size = memparse(str + 10, &str); + return 0; + } + + return -ENOENT; +} |
