diff options
| author | Linus Torvalds <torvalds@linux-foundation.org> | 2020-06-06 11:01:58 -0700 | 
|---|---|---|
| committer | Linus Torvalds <torvalds@linux-foundation.org> | 2020-06-06 11:01:58 -0700 | 
| commit | 3925c3bbdf886f1ddf64461b9b380e1bb36f90c1 (patch) | |
| tree | 99ebd7c46d46893057be0e5b16ea2bb356a1303b /drivers/pcmcia | |
| parent | 9fa88c5d3f5eae3e68ef20d226c3f13e21490668 (diff) | |
| parent | 2bd81cd04a3f5eb873cc81fa16c469377be3b092 (diff) | |
| download | linux-3925c3bbdf886f1ddf64461b9b380e1bb36f90c1.tar.bz2 | |
Merge tag 'pci-v5.8-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas:
 "Enumeration:
   - Program MPS for RCiEP devices (Ashok Raj)
   - Fix pci_register_host_bridge() device_register() error handling
     (Rob Herring)
   - Fix pci_host_bridge struct device release/free handling (Rob
     Herring)
  Resource management:
   - Allow resizing BARs for devices on root bus (Ard Biesheuvel)
  Power management:
   - Reduce Thunderbolt resume time by working around devices that don't
     support DLL Link Active reporting (Mika Westerberg)
   - Work around a Pericom USB controller OHCI/EHCI PME# defect
     (Kai-Heng Feng)
  Virtualization:
   - Add ACS quirk for Intel Root Complex Integrated Endpoints (Ashok
     Raj)
   - Avoid FLR for AMD Starship USB 3.0 (Kevin Buettner)
   - Avoid FLR for AMD Matisse HD Audio & USB 3.0 (Marcos Scriven)
  Error handling:
   - Use only _OSC (not HEST FIRMWARE_FIRST) to determine AER ownership
     (Alexandru Gagniuc, Kuppuswamy Sathyanarayanan)
   - Reduce verbosity by logging only ACPI_NOTIFY_DISCONNECT_RECOVER
     events (Kuppuswamy Sathyanarayanan)
   - Don't enable AER by default in Kconfig (Bjorn Helgaas)
  Peer-to-peer DMA:
   - Add AMD Zen Raven and Renoir Root Ports to whitelist (Alex Deucher)
  ASPM:
   - Allow ASPM on links to PCIe-to-PCI/PCI-X Bridges (Kai-Heng Feng)
  Endpoint framework:
   - Fix DMA channel release in test (Kunihiko Hayashi)
   - Add page size as argument to pci_epc_mem_init() (Lad Prabhakar)
   - Add support to handle multiple base for mapping outbound memory
     (Lad Prabhakar)
  Generic host bridge driver:
   - Support building as module (Rob Herring)
   - Eliminate pci_host_common_probe wrappers (Rob Herring)
  Amlogic Meson PCIe controller driver:
   - Don't use FAST_LINK_MODE to set up link (Marc Zyngier)
  Broadcom STB PCIe controller driver:
   - Disable ASPM L0s if 'aspm-no-l0s' in DT (Jim Quinlan)
   - Fix clk_put() error (Jim Quinlan)
   - Fix window register offset (Jim Quinlan)
   - Assert fundamental reset on initialization (Nicolas Saenz Julienne)
   - Add notify xHCI reset property (Nicolas Saenz Julienne)
   - Add init routine for Raspberry Pi 4 VL805 USB controller (Nicolas
     Saenz Julienne)
   - Sync with Raspberry Pi 4 firmware for VL805 initialization (Nicolas
     Saenz Julienne)
  Cadence PCIe controller driver:
   - Remove "cdns,max-outbound-regions" DT property (replaced by
     "ranges") (Kishon Vijay Abraham I)
   - Read 32-bit (not 16-bit) Vendor ID/Device ID property from DT
     (Kishon Vijay Abraham I)
  Marvell Aardvark PCIe controller driver:
   - Improve link training (Marek Behún)
   - Add PHY support (Marek Behún)
   - Add "phys", "max-link-speed", "reset-gpios" to dt-binding (Marek
     Behún)
   - Train link immediately after enabling training to work around
     detection issues with some cards (Pali Rohár)
   - Issue PERST via GPIO to work around detection issues (Pali Rohár)
   - Don't blindly enable ASPM L0s (Pali Rohár)
   - Replace custom macros by standard linux/pci_regs.h macros (Pali
     Rohár)
  Microsoft Hyper-V host bridge driver:
   - Fix probe failure path to release resource (Wei Hu)
   - Retry PCI bus D0 entry on invalid device state for kdump (Wei Hu)
  Renesas R-Car PCIe controller driver:
   - Fix incorrect programming of OB windows (Andrew Murray)
   - Add suspend/resume (Kazufumi Ikeda)
   - Rename pcie-rcar.c to pcie-rcar-host.c (Lad Prabhakar)
   - Add endpoint controller driver (Lad Prabhakar)
   - Fix PCIEPAMR mask calculation (Lad Prabhakar)
   - Add r8a77961 to DT binding (Yoshihiro Shimoda)
  Socionext UniPhier Pro5 controller driver:
   - Add endpoint controller driver (Kunihiko Hayashi)
  Synopsys DesignWare PCIe controller driver:
   - Program outbound ATU upper limit register (Alan Mikhak)
   - Fix inner MSI IRQ domain registration (Marc Zyngier)
  Miscellaneous:
   - Check for platform_get_irq() failure consistently (negative return
     means failure) (Aman Sharma)
   - Fix several runtime PM get/put imbalances (Dinghao Liu)
   - Use flexible-array and struct_size() helpers for code cleanup
     (Gustavo A. R. Silva)
   - Update & fix issues in bridge emulation of PCIe registers (Jon
     Derrick)
   - Add macros for bridge window names (PCI_BRIDGE_IO_WINDOW, etc)
     (Krzysztof Wilczyński)
   - Work around Intel PCH MROMs that have invalid BARs (Xiaochun Lee)"
* tag 'pci-v5.8-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (100 commits)
  PCI: uniphier: Add Socionext UniPhier Pro5 PCIe endpoint controller driver
  PCI: Add ACS quirk for Intel Root Complex Integrated Endpoints
  PCI/DPC: Print IRQ number used by port
  PCI/AER: Use "aer" variable for capability offset
  PCI/AER: Remove redundant dev->aer_cap checks
  PCI/AER: Remove redundant pci_is_pcie() checks
  PCI/AER: Remove HEST/FIRMWARE_FIRST parsing for AER ownership
  PCI: tegra: Fix runtime PM imbalance on error
  PCI: vmd: Filter resource type bits from shadow register
  PCI: tegra194: Fix runtime PM imbalance on error
  dt-bindings: PCI: Add UniPhier PCIe endpoint controller description
  PCI: hv: Use struct_size() helper
  PCI: Rename _DSM constants to align with spec
  PCI: Avoid FLR for AMD Starship USB 3.0
  PCI: Avoid FLR for AMD Matisse HD Audio & USB 3.0
  x86/PCI: Drop unused xen_register_pirq() gsi_override parameter
  PCI: dwc: Use private data pointer of "struct irq_domain" to get pcie_port
  PCI: amlogic: meson: Don't use FAST_LINK_MODE to set up link
  PCI: dwc: Fix inner MSI IRQ domain registration
  PCI: dwc: pci-dra7xx: Use devm_platform_ioremap_resource_byname()
  ...
Diffstat (limited to 'drivers/pcmcia')
| -rw-r--r-- | drivers/pcmcia/yenta_socket.c | 40 | 
1 files changed, 26 insertions, 14 deletions
| diff --git a/drivers/pcmcia/yenta_socket.c b/drivers/pcmcia/yenta_socket.c index bf6529b0b5b0..84bfc0e85d6b 100644 --- a/drivers/pcmcia/yenta_socket.c +++ b/drivers/pcmcia/yenta_socket.c @@ -694,7 +694,7 @@ static int yenta_allocate_res(struct yenta_socket *socket, int nr, unsigned type  	struct pci_bus_region region;  	unsigned mask; -	res = dev->resource + PCI_BRIDGE_RESOURCES + nr; +	res = &dev->resource[nr];  	/* Already allocated? */  	if (res->parent)  		return 0; @@ -711,7 +711,7 @@ static int yenta_allocate_res(struct yenta_socket *socket, int nr, unsigned type  	region.end = config_readl(socket, addr_end) | ~mask;  	if (region.start && region.end > region.start && !override_bios) {  		pcibios_bus_to_resource(dev->bus, res, ®ion); -		if (pci_claim_resource(dev, PCI_BRIDGE_RESOURCES + nr) == 0) +		if (pci_claim_resource(dev, nr) == 0)  			return 0;  		dev_info(&dev->dev,  			 "Preassigned resource %d busy or not available, reconfiguring...\n", @@ -745,19 +745,35 @@ static int yenta_allocate_res(struct yenta_socket *socket, int nr, unsigned type  	return 0;  } +static void yenta_free_res(struct yenta_socket *socket, int nr) +{ +	struct pci_dev *dev = socket->dev; +	struct resource *res; + +	res = &dev->resource[nr]; +	if (res->start != 0 && res->end != 0) +		release_resource(res); + +	res->start = res->end = res->flags = 0; +} +  /*   * Allocate the bridge mappings for the device..   */  static void yenta_allocate_resources(struct yenta_socket *socket)  {  	int program = 0; -	program += yenta_allocate_res(socket, 0, IORESOURCE_IO, +	program += yenta_allocate_res(socket, PCI_CB_BRIDGE_IO_0_WINDOW, +			   IORESOURCE_IO,  			   PCI_CB_IO_BASE_0, PCI_CB_IO_LIMIT_0); -	program += yenta_allocate_res(socket, 1, IORESOURCE_IO, +	program += yenta_allocate_res(socket, PCI_CB_BRIDGE_IO_1_WINDOW, +			   IORESOURCE_IO,  			   PCI_CB_IO_BASE_1, PCI_CB_IO_LIMIT_1); -	program += yenta_allocate_res(socket, 2, IORESOURCE_MEM|IORESOURCE_PREFETCH, +	program += yenta_allocate_res(socket, PCI_CB_BRIDGE_MEM_0_WINDOW, +			   IORESOURCE_MEM | IORESOURCE_PREFETCH,  			   PCI_CB_MEMORY_BASE_0, PCI_CB_MEMORY_LIMIT_0); -	program += yenta_allocate_res(socket, 3, IORESOURCE_MEM, +	program += yenta_allocate_res(socket, PCI_CB_BRIDGE_MEM_1_WINDOW, +			   IORESOURCE_MEM,  			   PCI_CB_MEMORY_BASE_1, PCI_CB_MEMORY_LIMIT_1);  	if (program)  		pci_setup_cardbus(socket->dev->subordinate); @@ -769,14 +785,10 @@ static void yenta_allocate_resources(struct yenta_socket *socket)   */  static void yenta_free_resources(struct yenta_socket *socket)  { -	int i; -	for (i = 0; i < 4; i++) { -		struct resource *res; -		res = socket->dev->resource + PCI_BRIDGE_RESOURCES + i; -		if (res->start != 0 && res->end != 0) -			release_resource(res); -		res->start = res->end = res->flags = 0; -	} +	yenta_free_res(socket, PCI_CB_BRIDGE_IO_0_WINDOW); +	yenta_free_res(socket, PCI_CB_BRIDGE_IO_1_WINDOW); +	yenta_free_res(socket, PCI_CB_BRIDGE_MEM_0_WINDOW); +	yenta_free_res(socket, PCI_CB_BRIDGE_MEM_1_WINDOW);  } |