]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
PCI: Handle CardBus-specific params in setup-cardbus.c
authorIlpo Järvinen <ilpo.jarvinen@linux.intel.com>
Fri, 19 Dec 2025 17:40:31 +0000 (19:40 +0200)
committerBjorn Helgaas <bhelgaas@google.com>
Tue, 27 Jan 2026 22:36:52 +0000 (16:36 -0600)
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
drivers/pci/pci.c
drivers/pci/pci.h
drivers/pci/setup-cardbus.c

index 13dbb405dc31f8054afa090a2d14acf16845f587..85c22f30e20a582e4106743e5dfb3844f5f5b3e6 100644 (file)
@@ -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)) {
index 2340e9df05c28d9f9901e776b4b47730de3ebd35..dbea5db0795989c0e11b1b3d882db176f95a4278 100644 (file)
@@ -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 */
 
 /**
index b017a2039fe163e0f3d157e7432d99ec7acc1eb1..93a2b43c637bbf63465d5afec6f6b0437857e846 100644 (file)
@@ -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;
+}