mirror of https://gitee.com/openkylin/linux.git
Merge branch 'pci/microchip'
- Call platform_set_drvdata() earlier so drivers can do window setup in init functions instead of custom probe (Daire McNamara) - Add DT binding and host mode driver for Microchip PolarFire PCIe controller (Daire McNamara) * pci/microchip: MAINTAINERS: Add Daire McNamara as Microchip PCIe driver maintainer PCI: microchip: Add Microchip PolarFire PCIe controller driver dt-bindings: PCI: microchip: Add Microchip PolarFire host binding PCI: Call platform_set_drvdata earlier in devm_pci_alloc_host_bridge
This commit is contained in:
commit
52c1de640e
|
@ -0,0 +1,92 @@
|
||||||
|
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||||
|
%YAML 1.2
|
||||||
|
---
|
||||||
|
$id: http://devicetree.org/schemas/pci/microchip,pcie-host.yaml#
|
||||||
|
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||||
|
|
||||||
|
title: Microchip PCIe Root Port Bridge Controller Device Tree Bindings
|
||||||
|
|
||||||
|
maintainers:
|
||||||
|
- Daire McNamara <daire.mcnamara@microchip.com>
|
||||||
|
|
||||||
|
allOf:
|
||||||
|
- $ref: /schemas/pci/pci-bus.yaml#
|
||||||
|
|
||||||
|
properties:
|
||||||
|
compatible:
|
||||||
|
const: microchip,pcie-host-1.0 # PolarFire
|
||||||
|
|
||||||
|
reg:
|
||||||
|
maxItems: 2
|
||||||
|
|
||||||
|
reg-names:
|
||||||
|
items:
|
||||||
|
- const: cfg
|
||||||
|
- const: apb
|
||||||
|
|
||||||
|
interrupts:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 2
|
||||||
|
items:
|
||||||
|
- description: PCIe host controller
|
||||||
|
- description: builtin MSI controller
|
||||||
|
|
||||||
|
interrupt-names:
|
||||||
|
minItems: 1
|
||||||
|
maxItems: 2
|
||||||
|
items:
|
||||||
|
- const: pcie
|
||||||
|
- const: msi
|
||||||
|
|
||||||
|
ranges:
|
||||||
|
maxItems: 1
|
||||||
|
|
||||||
|
msi-controller:
|
||||||
|
description: Identifies the node as an MSI controller.
|
||||||
|
|
||||||
|
msi-parent:
|
||||||
|
description: MSI controller the device is capable of using.
|
||||||
|
|
||||||
|
required:
|
||||||
|
- reg
|
||||||
|
- reg-names
|
||||||
|
- "#interrupt-cells"
|
||||||
|
- interrupts
|
||||||
|
- interrupt-map-mask
|
||||||
|
- interrupt-map
|
||||||
|
- msi-controller
|
||||||
|
|
||||||
|
unevaluatedProperties: false
|
||||||
|
|
||||||
|
examples:
|
||||||
|
- |
|
||||||
|
soc {
|
||||||
|
#address-cells = <2>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
pcie0: pcie@2030000000 {
|
||||||
|
compatible = "microchip,pcie-host-1.0";
|
||||||
|
reg = <0x0 0x70000000 0x0 0x08000000>,
|
||||||
|
<0x0 0x43000000 0x0 0x00010000>;
|
||||||
|
reg-names = "cfg", "apb";
|
||||||
|
device_type = "pci";
|
||||||
|
#address-cells = <3>;
|
||||||
|
#size-cells = <2>;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupts = <119>;
|
||||||
|
interrupt-map-mask = <0x0 0x0 0x0 0x7>;
|
||||||
|
interrupt-map = <0 0 0 1 &pcie_intc0 0>,
|
||||||
|
<0 0 0 2 &pcie_intc0 1>,
|
||||||
|
<0 0 0 3 &pcie_intc0 2>,
|
||||||
|
<0 0 0 4 &pcie_intc0 3>;
|
||||||
|
interrupt-parent = <&plic0>;
|
||||||
|
msi-parent = <&pcie0>;
|
||||||
|
msi-controller;
|
||||||
|
bus-range = <0x00 0x7f>;
|
||||||
|
ranges = <0x03000000 0x0 0x78000000 0x0 0x78000000 0x0 0x04000000>;
|
||||||
|
pcie_intc0: interrupt-controller {
|
||||||
|
#address-cells = <0>;
|
||||||
|
#interrupt-cells = <1>;
|
||||||
|
interrupt-controller;
|
||||||
|
};
|
||||||
|
};
|
||||||
|
};
|
|
@ -13830,6 +13830,13 @@ S: Supported
|
||||||
F: Documentation/devicetree/bindings/pci/mediatek*
|
F: Documentation/devicetree/bindings/pci/mediatek*
|
||||||
F: drivers/pci/controller/*mediatek*
|
F: drivers/pci/controller/*mediatek*
|
||||||
|
|
||||||
|
PCIE DRIVER FOR MICROCHIP
|
||||||
|
M: Daire McNamara <daire.mcnamara@microchip.com>
|
||||||
|
L: linux-pci@vger.kernel.org
|
||||||
|
S: Supported
|
||||||
|
F: Documentation/devicetree/bindings/pci/microchip*
|
||||||
|
F: drivers/pci/controller/*microchip*
|
||||||
|
|
||||||
PCIE DRIVER FOR QUALCOMM MSM
|
PCIE DRIVER FOR QUALCOMM MSM
|
||||||
M: Stanimir Varbanov <svarbanov@mm-sol.com>
|
M: Stanimir Varbanov <svarbanov@mm-sol.com>
|
||||||
L: linux-pci@vger.kernel.org
|
L: linux-pci@vger.kernel.org
|
||||||
|
|
|
@ -298,6 +298,16 @@ config PCI_LOONGSON
|
||||||
Say Y here if you want to enable PCI controller support on
|
Say Y here if you want to enable PCI controller support on
|
||||||
Loongson systems.
|
Loongson systems.
|
||||||
|
|
||||||
|
config PCIE_MICROCHIP_HOST
|
||||||
|
bool "Microchip AXI PCIe host bridge support"
|
||||||
|
depends on PCI_MSI && OF
|
||||||
|
select PCI_MSI_IRQ_DOMAIN
|
||||||
|
select GENERIC_MSI_IRQ_DOMAIN
|
||||||
|
select PCI_HOST_COMMON
|
||||||
|
help
|
||||||
|
Say Y here if you want kernel to support the Microchip AXI PCIe
|
||||||
|
Host Bridge driver.
|
||||||
|
|
||||||
config PCIE_HISI_ERR
|
config PCIE_HISI_ERR
|
||||||
depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
|
depends on ACPI_APEI_GHES && (ARM64 || COMPILE_TEST)
|
||||||
bool "HiSilicon HIP PCIe controller error handling driver"
|
bool "HiSilicon HIP PCIe controller error handling driver"
|
||||||
|
|
|
@ -28,6 +28,7 @@ obj-$(CONFIG_PCIE_ROCKCHIP_EP) += pcie-rockchip-ep.o
|
||||||
obj-$(CONFIG_PCIE_ROCKCHIP_HOST) += pcie-rockchip-host.o
|
obj-$(CONFIG_PCIE_ROCKCHIP_HOST) += pcie-rockchip-host.o
|
||||||
obj-$(CONFIG_PCIE_MEDIATEK) += pcie-mediatek.o
|
obj-$(CONFIG_PCIE_MEDIATEK) += pcie-mediatek.o
|
||||||
obj-$(CONFIG_PCIE_TANGO_SMP8759) += pcie-tango.o
|
obj-$(CONFIG_PCIE_TANGO_SMP8759) += pcie-tango.o
|
||||||
|
obj-$(CONFIG_PCIE_MICROCHIP_HOST) += pcie-microchip-host.o
|
||||||
obj-$(CONFIG_VMD) += vmd.o
|
obj-$(CONFIG_VMD) += vmd.o
|
||||||
obj-$(CONFIG_PCIE_BRCMSTB) += pcie-brcmstb.o
|
obj-$(CONFIG_PCIE_BRCMSTB) += pcie-brcmstb.o
|
||||||
obj-$(CONFIG_PCI_LOONGSON) += pci-loongson.o
|
obj-$(CONFIG_PCI_LOONGSON) += pci-loongson.o
|
||||||
|
|
|
@ -64,6 +64,8 @@ int pci_host_common_probe(struct platform_device *pdev)
|
||||||
if (!bridge)
|
if (!bridge)
|
||||||
return -ENOMEM;
|
return -ENOMEM;
|
||||||
|
|
||||||
|
platform_set_drvdata(pdev, bridge);
|
||||||
|
|
||||||
of_pci_check_probe_only();
|
of_pci_check_probe_only();
|
||||||
|
|
||||||
/* Parse and map our Configuration Space windows */
|
/* Parse and map our Configuration Space windows */
|
||||||
|
@ -78,8 +80,6 @@ int pci_host_common_probe(struct platform_device *pdev)
|
||||||
bridge->sysdata = cfg;
|
bridge->sysdata = cfg;
|
||||||
bridge->ops = (struct pci_ops *)&ops->pci_ops;
|
bridge->ops = (struct pci_ops *)&ops->pci_ops;
|
||||||
|
|
||||||
platform_set_drvdata(pdev, bridge);
|
|
||||||
|
|
||||||
return pci_host_probe(bridge);
|
return pci_host_probe(bridge);
|
||||||
}
|
}
|
||||||
EXPORT_SYMBOL_GPL(pci_host_common_probe);
|
EXPORT_SYMBOL_GPL(pci_host_common_probe);
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue