Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 966966a6 authored by Linus Torvalds's avatar Linus Torvalds
Browse files
Pull PCI fixes from Bjorn Helgaas:
 "These are fixes for things we merged for v4.3 (VPD, MSI, and bridge
  window management), and a new Renesas R8A7794 SoC device ID.

  Details:

  Resource management:
   - Revert pci_read_bridge_bases() unification (Bjorn Helgaas)
   - Clear IORESOURCE_UNSET when clipping a bridge window (Bjorn
     Helgaas)

  MSI:
   - Fix MSI IRQ domains for VFs on virtual buses (Alex Williamson)

  Renesas R-Car host bridge driver:
   - Add R8A7794 support (Sergei Shtylyov)

  Miscellaneous:
   - Fix devfn for VPD access through function 0 (Alex Williamson)
   - Use function 0 VPD only for identical functions (Alex Williamson)"

* tag 'pci-v4.3-fixes-1' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci:
  PCI: rcar: Add R8A7794 support
  PCI: Use function 0 VPD for identical functions, regular VPD for others
  PCI: Fix devfn for VPD access through function 0
  PCI/MSI: Fix MSI IRQ domains for VFs on virtual buses
  PCI: Clear IORESOURCE_UNSET when clipping a bridge window
  PCI: Revert "PCI: Call pci_read_bridge_bases() from core instead of arch code"
parents b6d980f4 de24c18c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -7,7 +7,8 @@ OHCI and EHCI controllers.

Required properties:
- compatible: "renesas,pci-r8a7790" for the R8A7790 SoC;
	      "renesas,pci-r8a7791" for the R8A7791 SoC.
	      "renesas,pci-r8a7791" for the R8A7791 SoC;
	      "renesas,pci-r8a7794" for the R8A7794 SoC.
- reg:	A list of physical regions to access the device: the first is
	the operational registers for the OHCI/EHCI controllers and the
	second is for the bridge configuration and control registers.
+6 −1
Original line number Diff line number Diff line
@@ -242,7 +242,12 @@ pci_restore_srm_config(void)

void pcibios_fixup_bus(struct pci_bus *bus)
{
	struct pci_dev *dev;
	struct pci_dev *dev = bus->self;

	if (pci_has_flag(PCI_PROBE_ONLY) && dev &&
	    (dev->class >> 8) == PCI_CLASS_BRIDGE_PCI) {
		pci_read_bridge_bases(bus);
	}

	list_for_each_entry(dev, &bus->devices, bus_list) {
		pdev_save_srm_config(dev);
+2 −0
Original line number Diff line number Diff line
@@ -294,6 +294,8 @@ void pcibios_fixup_bus(struct pci_bus *bus)
	printk("### PCIBIOS_FIXUP_BUS(%d)\n",bus->number);
#endif

	pci_read_bridge_bases(bus);

	if (bus->number == 0) {
		struct pci_dev *dev;
		list_for_each_entry(dev, &bus->devices, bus_list) {
+3 −2
Original line number Diff line number Diff line
@@ -533,9 +533,10 @@ void pcibios_fixup_bus(struct pci_bus *b)
{
	struct pci_dev *dev;

	if (b->self)
	if (b->self) {
		pci_read_bridge_bases(b);
		pcibios_fixup_bridge_resources(b->self);

	}
	list_for_each_entry(dev, &b->devices, bus_list)
		pcibios_fixup_device_resources(dev);
	platform_pci_fixup_bus(b);
+8 −1
Original line number Diff line number Diff line
@@ -863,7 +863,14 @@ void pcibios_setup_bus_devices(struct pci_bus *bus)

void pcibios_fixup_bus(struct pci_bus *bus)
{
	/* Fixup the bus */
	/* When called from the generic PCI probe, read PCI<->PCI bridge
	 * bases. This is -not- called when generating the PCI tree from
	 * the OF device-tree.
	 */
	if (bus->self != NULL)
		pci_read_bridge_bases(bus);

	/* Now fixup the bus bus */
	pcibios_setup_bus_self(bus);

	/* Now fixup devices on that bus */
Loading