You've already forked linux-apfs
mirror of
https://github.com/linux-apfs/linux-apfs.git
synced 2026-05-01 15:00:59 -07:00
Merge tag 'pci-v4.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci
Pull PCI updates from Bjorn Helgaas: - skip AER driver error recovery callbacks for correctable errors reported via ACPI APEI, as we already do for errors reported via the native path (Tyler Baicar) - fix DPC shared interrupt handling (Alex Williamson) - print full DPC interrupt number (Keith Busch) - enable DPC only if AER is available (Keith Busch) - simplify DPC code (Bjorn Helgaas) - calculate ASPM L1 substate parameter instead of hardcoding it (Bjorn Helgaas) - enable Latency Tolerance Reporting for ASPM L1 substates (Bjorn Helgaas) - move ASPM internal interfaces out of public header (Bjorn Helgaas) - allow hot-removal of VGA devices (Mika Westerberg) - speed up unplug and shutdown by assuming Thunderbolt controllers don't support Command Completed events (Lukas Wunner) - add AtomicOps support for GPU and Infiniband drivers (Felix Kuehling, Jay Cornwall) - expose "ari_enabled" in sysfs to help NIC naming (Stuart Hayes) - clean up PCI DMA interface usage (Christoph Hellwig) - remove PCI pool API (replaced with DMA pool) (Romain Perier) - deprecate pci_get_bus_and_slot(), which assumed PCI domain 0 (Sinan Kaya) - move DT PCI code from drivers/of/ to drivers/pci/ (Rob Herring) - add PCI-specific wrappers for dev_info(), etc (Frederick Lawler) - remove warnings on sysfs mmap failure (Bjorn Helgaas) - quiet ROM validation messages (Alex Deucher) - remove redundant memory alloc failure messages (Markus Elfring) - fill in types for compile-time VGA and other I/O port resources (Bjorn Helgaas) - make "pci=pcie_scan_all" work for Root Ports as well as Downstream Ports to help AmigaOne X1000 (Bjorn Helgaas) - add SPDX tags to all PCI files (Bjorn Helgaas) - quirk Marvell 9128 DMA aliases (Alex Williamson) - quirk broken INTx disable on Ceton InfiniTV4 (Bjorn Helgaas) - fix CONFIG_PCI=n build by adding dummy pci_irqd_intx_xlate() (Niklas Cassel) - use DMA API to get MSI address for DesignWare IP (Niklas Cassel) - fix endpoint-mode DMA mask configuration (Kishon Vijay Abraham I) - fix ARTPEC-6 incorrect IS_ERR() usage (Wei Yongjun) - add support for ARTPEC-7 SoC (Niklas Cassel) - add endpoint-mode support for ARTPEC (Niklas Cassel) - add Cadence PCIe host and endpoint controller driver (Cyrille Pitchen) - handle multiple INTx status bits being set in dra7xx (Vignesh R) - translate dra7xx hwirq range to fix INTD handling (Vignesh R) - remove deprecated Exynos PHY initialization code (Jaehoon Chung) - fix MSI erratum workaround for HiSilicon Hip06/Hip07 (Dongdong Liu) - fix NULL pointer dereference in iProc BCMA driver (Ray Jui) - fix Keystone interrupt-controller-node lookup (Johan Hovold) - constify qcom driver structures (Julia Lawall) - rework Tegra config space mapping to increase space available for endpoints (Vidya Sagar) - simplify Tegra driver by using bus->sysdata (Manikanta Maddireddy) - remove PCI_REASSIGN_ALL_BUS usage on Tegra (Manikanta Maddireddy) - add support for Global Fabric Manager Server (GFMS) event to Microsemi Switchtec switch driver (Logan Gunthorpe) - add IDs for Switchtec PSX 24xG3 and PSX 48xG3 (Kelvin Cao) * tag 'pci-v4.16-changes' of git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci: (140 commits) PCI: cadence: Add EndPoint Controller driver for Cadence PCIe controller dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe endpoint controller PCI: endpoint: Fix EPF device name to support multi-function devices PCI: endpoint: Add the function number as argument to EPC ops PCI: cadence: Add host driver for Cadence PCIe controller dt-bindings: PCI: cadence: Add DT bindings for Cadence PCIe host controller PCI: Add vendor ID for Cadence PCI: Add generic function to probe PCI host controllers PCI: generic: fix missing call of pci_free_resource_list() PCI: OF: Add generic function to parse and allocate PCI resources PCI: Regroup all PCI related entries into drivers/pci/Makefile PCI/DPC: Reformat DPC register definitions PCI/DPC: Add and use DPC Status register field definitions PCI/DPC: Squash dpc_rp_pio_get_info() into dpc_process_rp_pio_error() PCI/DPC: Remove unnecessary RP PIO register structs PCI/DPC: Push dpc->rp_pio_status assignment into dpc_rp_pio_get_info() PCI/DPC: Squash dpc_rp_pio_print_error() into dpc_rp_pio_get_info() PCI/DPC: Make RP PIO log size check more generic PCI/DPC: Rename local "status" to "dpc_status" PCI/DPC: Squash dpc_rp_pio_print_tlp_header() into dpc_rp_pio_print_error() ...
This commit is contained in:
@@ -3711,7 +3711,11 @@
|
||||
[KNL, SMP] Set scheduler's default relax_domain_level.
|
||||
See Documentation/cgroup-v1/cpusets.txt.
|
||||
|
||||
reserve= [KNL,BUGS] Force the kernel to ignore some iomem area
|
||||
reserve= [KNL,BUGS] Force kernel to ignore I/O ports or memory
|
||||
Format: <base1>,<size1>[,<base2>,<size2>,...]
|
||||
Reserve I/O ports or memory so the kernel won't use
|
||||
them. If <base> is less than 0x10000, the region
|
||||
is assumed to be I/O ports; otherwise it is memory.
|
||||
|
||||
reservetop= [X86-32]
|
||||
Format: nn[KMG]
|
||||
|
||||
@@ -4,7 +4,10 @@ This PCIe host controller is based on the Synopsys DesignWare PCIe IP
|
||||
and thus inherits all the common properties defined in designware-pcie.txt.
|
||||
|
||||
Required properties:
|
||||
- compatible: "axis,artpec6-pcie", "snps,dw-pcie"
|
||||
- compatible: "axis,artpec6-pcie", "snps,dw-pcie" for ARTPEC-6 in RC mode;
|
||||
"axis,artpec6-pcie-ep", "snps,dw-pcie" for ARTPEC-6 in EP mode;
|
||||
"axis,artpec7-pcie", "snps,dw-pcie" for ARTPEC-7 in RC mode;
|
||||
"axis,artpec7-pcie-ep", "snps,dw-pcie" for ARTPEC-7 in EP mode;
|
||||
- reg: base addresses and lengths of the PCIe controller (DBI),
|
||||
the PHY controller, and configuration address space.
|
||||
- reg-names: Must include the following entries:
|
||||
|
||||
@@ -0,0 +1,22 @@
|
||||
* Cadence PCIe endpoint controller
|
||||
|
||||
Required properties:
|
||||
- compatible: Should contain "cdns,cdns-pcie-ep" to identify the IP used.
|
||||
- reg: Should contain the controller register base address and AXI interface
|
||||
region base address respectively.
|
||||
- reg-names: Must be "reg" and "mem" respectively.
|
||||
- cdns,max-outbound-regions: Set to maximum number of outbound regions
|
||||
|
||||
Optional properties:
|
||||
- max-functions: Maximum number of functions that can be configured (default 1).
|
||||
|
||||
Example:
|
||||
|
||||
pcie@fc000000 {
|
||||
compatible = "cdns,cdns-pcie-ep";
|
||||
reg = <0x0 0xfc000000 0x0 0x01000000>,
|
||||
<0x0 0x80000000 0x0 0x40000000>;
|
||||
reg-names = "reg", "mem";
|
||||
cdns,max-outbound-regions = <16>;
|
||||
max-functions = /bits/ 8 <8>;
|
||||
};
|
||||
@@ -0,0 +1,60 @@
|
||||
* Cadence PCIe host controller
|
||||
|
||||
This PCIe controller inherits the base properties defined in
|
||||
host-generic-pci.txt.
|
||||
|
||||
Required properties:
|
||||
- compatible: Should contain "cdns,cdns-pcie-host" to identify the IP used.
|
||||
- reg: Should contain the controller register base address, PCIe configuration
|
||||
window base address, and AXI interface region base address respectively.
|
||||
- reg-names: Must be "reg", "cfg" and "mem" respectively.
|
||||
- #address-cells: Set to <3>
|
||||
- #size-cells: Set to <2>
|
||||
- device_type: Set to "pci"
|
||||
- ranges: Ranges for the PCI memory and I/O regions
|
||||
- #interrupt-cells: Set to <1>
|
||||
- interrupt-map-mask and interrupt-map: Standard PCI properties to define the
|
||||
mapping of the PCIe interface to interrupt numbers.
|
||||
|
||||
Optional properties:
|
||||
- cdns,max-outbound-regions: Set to maximum number of outbound regions
|
||||
(default 32)
|
||||
- cdns,no-bar-match-nbits: Set into the no BAR match register to configure the
|
||||
number of least significant bits kept during inbound (PCIe -> AXI) address
|
||||
translations (default 32)
|
||||
- vendor-id: The PCI vendor ID (16 bits, default is design dependent)
|
||||
- device-id: The PCI device ID (16 bits, default is design dependent)
|
||||
|
||||
Example:
|
||||
|
||||
pcie@fb000000 {
|
||||
compatible = "cdns,cdns-pcie-host";
|
||||
device_type = "pci";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
bus-range = <0x0 0xff>;
|
||||
linux,pci-domain = <0>;
|
||||
cdns,max-outbound-regions = <16>;
|
||||
cdns,no-bar-match-nbits = <32>;
|
||||
vendor-id = /bits/ 16 <0x17cd>;
|
||||
device-id = /bits/ 16 <0x0200>;
|
||||
|
||||
reg = <0x0 0xfb000000 0x0 0x01000000>,
|
||||
<0x0 0x41000000 0x0 0x00001000>,
|
||||
<0x0 0x40000000 0x0 0x04000000>;
|
||||
reg-names = "reg", "cfg", "mem";
|
||||
|
||||
ranges = <0x02000000 0x0 0x42000000 0x0 0x42000000 0x0 0x1000000>,
|
||||
<0x01000000 0x0 0x43000000 0x0 0x43000000 0x0 0x0010000>;
|
||||
|
||||
#interrupt-cells = <0x1>;
|
||||
|
||||
interrupt-map = <0x0 0x0 0x0 0x1 &gic 0x0 0x0 0x0 14 0x1
|
||||
0x0 0x0 0x0 0x2 &gic 0x0 0x0 0x0 15 0x1
|
||||
0x0 0x0 0x0 0x3 &gic 0x0 0x0 0x0 16 0x1
|
||||
0x0 0x0 0x0 0x4 &gic 0x0 0x0 0x0 17 0x1>;
|
||||
|
||||
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||
|
||||
msi-parent = <&its_pci>;
|
||||
};
|
||||
@@ -6,9 +6,6 @@ and thus inherits all the common properties defined in designware-pcie.txt.
|
||||
Required properties:
|
||||
- compatible: "samsung,exynos5440-pcie"
|
||||
- reg: base addresses and lengths of the PCIe controller,
|
||||
the PHY controller, additional register for the PHY controller.
|
||||
(Registers for the PHY controller are DEPRECATED.
|
||||
Use the PHY framework.)
|
||||
- reg-names : First name should be set to "elbi".
|
||||
And use the "config" instead of getting the configuration address space
|
||||
from "ranges".
|
||||
@@ -23,49 +20,8 @@ For other common properties, refer to
|
||||
|
||||
Example:
|
||||
|
||||
SoC-specific DT Entry:
|
||||
SoC-specific DT Entry (with using PHY framework):
|
||||
|
||||
pcie@290000 {
|
||||
compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
|
||||
reg = <0x290000 0x1000
|
||||
0x270000 0x1000
|
||||
0x271000 0x40>;
|
||||
interrupts = <0 20 0>, <0 21 0>, <0 22 0>;
|
||||
clocks = <&clock 28>, <&clock 27>;
|
||||
clock-names = "pcie", "pcie_bus";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
ranges = <0x00000800 0 0x40000000 0x40000000 0 0x00001000 /* configuration space */
|
||||
0x81000000 0 0 0x40001000 0 0x00010000 /* downstream I/O */
|
||||
0x82000000 0 0x40011000 0x40011000 0 0x1ffef000>; /* non-prefetchable memory */
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
||||
num-lanes = <4>;
|
||||
};
|
||||
|
||||
pcie@2a0000 {
|
||||
compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
|
||||
reg = <0x2a0000 0x1000
|
||||
0x272000 0x1000
|
||||
0x271040 0x40>;
|
||||
interrupts = <0 23 0>, <0 24 0>, <0 25 0>;
|
||||
clocks = <&clock 29>, <&clock 27>;
|
||||
clock-names = "pcie", "pcie_bus";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
ranges = <0x00000800 0 0x60000000 0x60000000 0 0x00001000 /* configuration space */
|
||||
0x81000000 0 0 0x60001000 0 0x00010000 /* downstream I/O */
|
||||
0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>; /* non-prefetchable memory */
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
|
||||
num-lanes = <4>;
|
||||
};
|
||||
|
||||
With using PHY framework:
|
||||
pcie_phy0: pcie-phy@270000 {
|
||||
...
|
||||
reg = <0x270000 0x1000>, <0x271000 0x40>;
|
||||
@@ -74,13 +30,21 @@ With using PHY framework:
|
||||
};
|
||||
|
||||
pcie@290000 {
|
||||
...
|
||||
compatible = "samsung,exynos5440-pcie", "snps,dw-pcie";
|
||||
reg = <0x290000 0x1000>, <0x40000000 0x1000>;
|
||||
reg-names = "elbi", "config";
|
||||
clocks = <&clock 28>, <&clock 27>;
|
||||
clock-names = "pcie", "pcie_bus";
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
phys = <&pcie_phy0>;
|
||||
ranges = <0x81000000 0 0 0x60001000 0 0x00010000
|
||||
0x82000000 0 0x60011000 0x60011000 0 0x1ffef000>;
|
||||
...
|
||||
#interrupt-cells = <1>;
|
||||
interrupt-map-mask = <0 0 0 0>;
|
||||
interrupt-map = <0 0 0 0 &gic GIC_SPI 21 IRQ_TYPE_LEVEL_HIGH>;
|
||||
num-lanes = <4>;
|
||||
};
|
||||
|
||||
Board-specific DT Entry:
|
||||
|
||||
+11
@@ -10513,6 +10513,13 @@ S: Maintained
|
||||
F: Documentation/devicetree/bindings/pci/pci-armada8k.txt
|
||||
F: drivers/pci/dwc/pcie-armada8k.c
|
||||
|
||||
PCI DRIVER FOR CADENCE PCIE IP
|
||||
M: Alan Douglas <adouglas@cadence.com>
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pci/cdns,*.txt
|
||||
F: drivers/pci/cadence/pcie-cadence*
|
||||
|
||||
PCI DRIVER FOR FREESCALE LAYERSCAPE
|
||||
M: Minghuan Lian <minghuan.Lian@freescale.com>
|
||||
M: Mingkai Hu <mingkai.hu@freescale.com>
|
||||
@@ -10663,8 +10670,12 @@ T: git git://git.kernel.org/pub/scm/linux/kernel/git/helgaas/pci.git
|
||||
S: Supported
|
||||
F: Documentation/devicetree/bindings/pci/
|
||||
F: Documentation/PCI/
|
||||
F: drivers/acpi/pci*
|
||||
F: drivers/pci/
|
||||
F: include/asm-generic/pci*
|
||||
F: include/linux/pci*
|
||||
F: include/uapi/linux/pci*
|
||||
F: lib/pci*
|
||||
F: arch/x86/pci/
|
||||
F: arch/x86/kernel/quirks.c
|
||||
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
struct pci_controller *pci_vga_hose;
|
||||
static struct resource alpha_vga = {
|
||||
.name = "alpha-vga+",
|
||||
.flags = IORESOURCE_IO,
|
||||
.start = 0x3C0,
|
||||
.end = 0x3DF
|
||||
};
|
||||
|
||||
@@ -10,10 +10,7 @@ extern unsigned long pcibios_min_io;
|
||||
extern unsigned long pcibios_min_mem;
|
||||
#define PCIBIOS_MIN_MEM pcibios_min_mem
|
||||
|
||||
static inline int pcibios_assign_all_busses(void)
|
||||
{
|
||||
return pci_has_flag(PCI_REASSIGN_ALL_RSRC);
|
||||
}
|
||||
#define pcibios_assign_all_busses() pci_has_flag(PCI_REASSIGN_ALL_BUS)
|
||||
|
||||
#ifdef CONFIG_PCI_DOMAINS
|
||||
static inline int pci_proc_domain(struct pci_bus *bus)
|
||||
|
||||
@@ -527,7 +527,7 @@ void pci_common_init_dev(struct device *parent, struct hw_pci *hw)
|
||||
struct pci_sys_data *sys;
|
||||
LIST_HEAD(head);
|
||||
|
||||
pci_add_flags(PCI_REASSIGN_ALL_RSRC);
|
||||
pci_add_flags(PCI_REASSIGN_ALL_BUS);
|
||||
if (hw->preinit)
|
||||
hw->preinit();
|
||||
pcibios_init_hw(parent, hw, &head);
|
||||
|
||||
@@ -10,7 +10,6 @@ menuconfig ARCH_MVEBU
|
||||
select ZONE_DMA if ARM_LPAE
|
||||
select GPIOLIB
|
||||
select PCI_QUIRKS if PCI
|
||||
select OF_ADDRESS_PCI
|
||||
|
||||
if ARCH_MVEBU
|
||||
|
||||
|
||||
@@ -32,22 +32,22 @@ static struct resource jazz_io_resources[] = {
|
||||
.start = 0x00,
|
||||
.end = 0x1f,
|
||||
.name = "dma1",
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0x40,
|
||||
.end = 0x5f,
|
||||
.name = "timer",
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0x80,
|
||||
.end = 0x8f,
|
||||
.name = "dma page reg",
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
}, {
|
||||
.start = 0xc0,
|
||||
.end = 0xdf,
|
||||
.name = "dma2",
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
}
|
||||
};
|
||||
|
||||
|
||||
@@ -47,31 +47,31 @@ static struct resource standard_io_resources[] = {
|
||||
.name = "dma1",
|
||||
.start = 0x00,
|
||||
.end = 0x1f,
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
},
|
||||
{
|
||||
.name = "timer",
|
||||
.start = 0x40,
|
||||
.end = 0x5f,
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
},
|
||||
{
|
||||
.name = "keyboard",
|
||||
.start = 0x60,
|
||||
.end = 0x6f,
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
},
|
||||
{
|
||||
.name = "dma page reg",
|
||||
.start = 0x80,
|
||||
.end = 0x8f,
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
},
|
||||
{
|
||||
.name = "dma2",
|
||||
.start = 0xc0,
|
||||
.end = 0xdf,
|
||||
.flags = IORESOURCE_BUSY
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY
|
||||
},
|
||||
};
|
||||
|
||||
|
||||
@@ -756,14 +756,14 @@ int eeh_restore_vf_config(struct pci_dn *pdn)
|
||||
eeh_ops->write_config(pdn, edev->pcie_cap + PCI_EXP_DEVCTL,
|
||||
2, devctl);
|
||||
|
||||
/* Disable Completion Timeout */
|
||||
/* Disable Completion Timeout if possible */
|
||||
eeh_ops->read_config(pdn, edev->pcie_cap + PCI_EXP_DEVCAP2,
|
||||
4, &cap2);
|
||||
if (cap2 & 0x10) {
|
||||
if (cap2 & PCI_EXP_DEVCAP2_COMP_TMOUT_DIS) {
|
||||
eeh_ops->read_config(pdn,
|
||||
edev->pcie_cap + PCI_EXP_DEVCTL2,
|
||||
4, &cap2);
|
||||
cap2 |= 0x10;
|
||||
cap2 |= PCI_EXP_DEVCTL2_COMP_TMOUT_DIS;
|
||||
eeh_ops->write_config(pdn,
|
||||
edev->pcie_cap + PCI_EXP_DEVCTL2,
|
||||
4, cap2);
|
||||
|
||||
@@ -362,8 +362,7 @@ struct pci_controller* pci_find_hose_for_OF_device(struct device_node* node)
|
||||
*/
|
||||
static int pci_read_irq_line(struct pci_dev *pci_dev)
|
||||
{
|
||||
struct of_phandle_args oirq;
|
||||
unsigned int virq;
|
||||
unsigned int virq = 0;
|
||||
|
||||
pr_debug("PCI: Try to map irq for %s...\n", pci_name(pci_dev));
|
||||
|
||||
@@ -371,7 +370,7 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
|
||||
memset(&oirq, 0xff, sizeof(oirq));
|
||||
#endif
|
||||
/* Try to get a mapping from the device-tree */
|
||||
if (of_irq_parse_pci(pci_dev, &oirq)) {
|
||||
if (!of_irq_parse_and_map_pci(pci_dev, 0, 0)) {
|
||||
u8 line, pin;
|
||||
|
||||
/* If that fails, lets fallback to what is in the config
|
||||
@@ -395,11 +394,6 @@ static int pci_read_irq_line(struct pci_dev *pci_dev)
|
||||
virq = irq_create_mapping(NULL, line);
|
||||
if (virq)
|
||||
irq_set_irq_type(virq, IRQ_TYPE_LEVEL_LOW);
|
||||
} else {
|
||||
pr_debug(" Got one, spec %d cells (0x%08x 0x%08x...) on %pOF\n",
|
||||
oirq.args_count, oirq.args[0], oirq.args[1], oirq.np);
|
||||
|
||||
virq = irq_create_of_mapping(&oirq);
|
||||
}
|
||||
|
||||
if (!virq) {
|
||||
|
||||
@@ -104,7 +104,7 @@ EXPORT_SYMBOL_GPL(pci_hp_remove_devices);
|
||||
*/
|
||||
void pci_hp_add_devices(struct pci_bus *bus)
|
||||
{
|
||||
int slotno, mode, pass, max;
|
||||
int slotno, mode, max;
|
||||
struct pci_dev *dev;
|
||||
struct pci_controller *phb;
|
||||
struct device_node *dn = pci_bus_to_OF_node(bus);
|
||||
@@ -133,13 +133,17 @@ void pci_hp_add_devices(struct pci_bus *bus)
|
||||
pci_scan_slot(bus, PCI_DEVFN(slotno, 0));
|
||||
pcibios_setup_bus_devices(bus);
|
||||
max = bus->busn_res.start;
|
||||
for (pass = 0; pass < 2; pass++) {
|
||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||
if (pci_is_bridge(dev))
|
||||
max = pci_scan_bridge(bus, dev,
|
||||
max, pass);
|
||||
}
|
||||
}
|
||||
/*
|
||||
* Scan bridges that are already configured. We don't touch
|
||||
* them unless they are misconfigured (which will be done in
|
||||
* the second scan below).
|
||||
*/
|
||||
for_each_pci_bridge(dev, bus)
|
||||
max = pci_scan_bridge(bus, dev, max, 0);
|
||||
|
||||
/* Scan bridges that need to be reconfigured */
|
||||
for_each_pci_bridge(dev, bus)
|
||||
max = pci_scan_bridge(bus, dev, max, 1);
|
||||
}
|
||||
pcibios_finish_adding_to_bus(bus);
|
||||
}
|
||||
|
||||
@@ -96,7 +96,8 @@ make_one_node_map(struct device_node* node, u8 pci_bus)
|
||||
reg = of_get_property(node, "reg", NULL);
|
||||
if (!reg)
|
||||
continue;
|
||||
dev = pci_get_bus_and_slot(pci_bus, ((reg[0] >> 8) & 0xff));
|
||||
dev = pci_get_domain_bus_and_slot(0, pci_bus,
|
||||
((reg[0] >> 8) & 0xff));
|
||||
if (!dev || !dev->subordinate) {
|
||||
pci_dev_put(dev);
|
||||
continue;
|
||||
|
||||
@@ -369,11 +369,8 @@ static void __of_scan_bus(struct device_node *node, struct pci_bus *bus,
|
||||
pcibios_setup_bus_devices(bus);
|
||||
|
||||
/* Now scan child busses */
|
||||
list_for_each_entry(dev, &bus->devices, bus_list) {
|
||||
if (pci_is_bridge(dev)) {
|
||||
of_scan_pci_bridge(dev);
|
||||
}
|
||||
}
|
||||
for_each_pci_bridge(dev, bus)
|
||||
of_scan_pci_bridge(dev);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -134,7 +134,7 @@ int maple_set_rtc_time(struct rtc_time *tm)
|
||||
|
||||
static struct resource rtc_iores = {
|
||||
.name = "rtc",
|
||||
.flags = IORESOURCE_BUSY,
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY,
|
||||
};
|
||||
|
||||
unsigned long __init maple_get_boot_time(void)
|
||||
|
||||
@@ -829,7 +829,7 @@ core99_ata100_enable(struct device_node *node, long value)
|
||||
|
||||
if (value) {
|
||||
if (pci_device_from_OF_node(node, &pbus, &pid) == 0)
|
||||
pdev = pci_get_bus_and_slot(pbus, pid);
|
||||
pdev = pci_get_domain_bus_and_slot(0, pbus, pid);
|
||||
if (pdev == NULL)
|
||||
return 0;
|
||||
rc = pci_enable_device(pdev);
|
||||
|
||||
@@ -145,21 +145,21 @@ static struct resource pic1_iores = {
|
||||
.name = "8259 (master)",
|
||||
.start = 0x20,
|
||||
.end = 0x21,
|
||||
.flags = IORESOURCE_BUSY,
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY,
|
||||
};
|
||||
|
||||
static struct resource pic2_iores = {
|
||||
.name = "8259 (slave)",
|
||||
.start = 0xa0,
|
||||
.end = 0xa1,
|
||||
.flags = IORESOURCE_BUSY,
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY,
|
||||
};
|
||||
|
||||
static struct resource pic_edgectrl_iores = {
|
||||
.name = "8259 edge control",
|
||||
.start = 0x4d0,
|
||||
.end = 0x4d1,
|
||||
.flags = IORESOURCE_BUSY,
|
||||
.flags = IORESOURCE_IO | IORESOURCE_BUSY,
|
||||
};
|
||||
|
||||
static int i8259_host_match(struct irq_domain *h, struct device_node *node,
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user