hc
2024-02-20 102a0743326a03cd1a1202ceda21e175b7d3575c
kernel/drivers/pcmcia/yenta_socket.c
....@@ -1,3 +1,4 @@
1
+// SPDX-License-Identifier: GPL-2.0-only
12 /*
23 * Regular cardbus driver ("yenta_socket")
34 *
....@@ -172,20 +173,19 @@
172173
173174 static ssize_t show_yenta_registers(struct device *yentadev, struct device_attribute *attr, char *buf)
174175 {
175
- struct pci_dev *dev = to_pci_dev(yentadev);
176
- struct yenta_socket *socket = pci_get_drvdata(dev);
176
+ struct yenta_socket *socket = dev_get_drvdata(yentadev);
177177 int offset = 0, i;
178178
179179 offset = snprintf(buf, PAGE_SIZE, "CB registers:");
180180 for (i = 0; i < 0x24; i += 4) {
181181 unsigned val;
182182 if (!(i & 15))
183
- offset += snprintf(buf + offset, PAGE_SIZE - offset, "\n%02x:", i);
183
+ offset += scnprintf(buf + offset, PAGE_SIZE - offset, "\n%02x:", i);
184184 val = cb_readl(socket, i);
185
- offset += snprintf(buf + offset, PAGE_SIZE - offset, " %08x", val);
185
+ offset += scnprintf(buf + offset, PAGE_SIZE - offset, " %08x", val);
186186 }
187187
188
- offset += snprintf(buf + offset, PAGE_SIZE - offset, "\n\nExCA registers:");
188
+ offset += scnprintf(buf + offset, PAGE_SIZE - offset, "\n\nExCA registers:");
189189 for (i = 0; i < 0x45; i++) {
190190 unsigned char val;
191191 if (!(i & 7)) {
....@@ -193,10 +193,10 @@
193193 memcpy(buf + offset, " -", 2);
194194 offset += 2;
195195 } else
196
- offset += snprintf(buf + offset, PAGE_SIZE - offset, "\n%02x:", i);
196
+ offset += scnprintf(buf + offset, PAGE_SIZE - offset, "\n%02x:", i);
197197 }
198198 val = exca_readb(socket, i);
199
- offset += snprintf(buf + offset, PAGE_SIZE - offset, " %02x", val);
199
+ offset += scnprintf(buf + offset, PAGE_SIZE - offset, " %02x", val);
200200 }
201201 buf[offset++] = '\n';
202202 return offset;
....@@ -694,7 +694,7 @@
694694 struct pci_bus_region region;
695695 unsigned mask;
696696
697
- res = dev->resource + PCI_BRIDGE_RESOURCES + nr;
697
+ res = &dev->resource[nr];
698698 /* Already allocated? */
699699 if (res->parent)
700700 return 0;
....@@ -711,7 +711,7 @@
711711 region.end = config_readl(socket, addr_end) | ~mask;
712712 if (region.start && region.end > region.start && !override_bios) {
713713 pcibios_bus_to_resource(dev->bus, res, &region);
714
- if (pci_claim_resource(dev, PCI_BRIDGE_RESOURCES + nr) == 0)
714
+ if (pci_claim_resource(dev, nr) == 0)
715715 return 0;
716716 dev_info(&dev->dev,
717717 "Preassigned resource %d busy or not available, reconfiguring...\n",
....@@ -745,19 +745,35 @@
745745 return 0;
746746 }
747747
748
+static void yenta_free_res(struct yenta_socket *socket, int nr)
749
+{
750
+ struct pci_dev *dev = socket->dev;
751
+ struct resource *res;
752
+
753
+ res = &dev->resource[nr];
754
+ if (res->start != 0 && res->end != 0)
755
+ release_resource(res);
756
+
757
+ res->start = res->end = res->flags = 0;
758
+}
759
+
748760 /*
749761 * Allocate the bridge mappings for the device..
750762 */
751763 static void yenta_allocate_resources(struct yenta_socket *socket)
752764 {
753765 int program = 0;
754
- program += yenta_allocate_res(socket, 0, IORESOURCE_IO,
766
+ program += yenta_allocate_res(socket, PCI_CB_BRIDGE_IO_0_WINDOW,
767
+ IORESOURCE_IO,
755768 PCI_CB_IO_BASE_0, PCI_CB_IO_LIMIT_0);
756
- program += yenta_allocate_res(socket, 1, IORESOURCE_IO,
769
+ program += yenta_allocate_res(socket, PCI_CB_BRIDGE_IO_1_WINDOW,
770
+ IORESOURCE_IO,
757771 PCI_CB_IO_BASE_1, PCI_CB_IO_LIMIT_1);
758
- program += yenta_allocate_res(socket, 2, IORESOURCE_MEM|IORESOURCE_PREFETCH,
772
+ program += yenta_allocate_res(socket, PCI_CB_BRIDGE_MEM_0_WINDOW,
773
+ IORESOURCE_MEM | IORESOURCE_PREFETCH,
759774 PCI_CB_MEMORY_BASE_0, PCI_CB_MEMORY_LIMIT_0);
760
- program += yenta_allocate_res(socket, 3, IORESOURCE_MEM,
775
+ program += yenta_allocate_res(socket, PCI_CB_BRIDGE_MEM_1_WINDOW,
776
+ IORESOURCE_MEM,
761777 PCI_CB_MEMORY_BASE_1, PCI_CB_MEMORY_LIMIT_1);
762778 if (program)
763779 pci_setup_cardbus(socket->dev->subordinate);
....@@ -769,14 +785,10 @@
769785 */
770786 static void yenta_free_resources(struct yenta_socket *socket)
771787 {
772
- int i;
773
- for (i = 0; i < 4; i++) {
774
- struct resource *res;
775
- res = socket->dev->resource + PCI_BRIDGE_RESOURCES + i;
776
- if (res->start != 0 && res->end != 0)
777
- release_resource(res);
778
- res->start = res->end = res->flags = 0;
779
- }
788
+ yenta_free_res(socket, PCI_CB_BRIDGE_IO_0_WINDOW);
789
+ yenta_free_res(socket, PCI_CB_BRIDGE_IO_1_WINDOW);
790
+ yenta_free_res(socket, PCI_CB_BRIDGE_MEM_0_WINDOW);
791
+ yenta_free_res(socket, PCI_CB_BRIDGE_MEM_1_WINDOW);
780792 }
781793
782794