mirror of
https://github.com/torvalds/linux.git
synced 2026-03-08 03:44:45 +01:00
Merge branch 'pci/controller/aspeed'
- Add ASPEED Root Complex DT binding and driver (Jacky Chou) * pci/controller/aspeed: MAINTAINERS: Add ASPEED PCIe RC driver PCI: aspeed: Add ASPEED PCIe RC driver PCI: Add FMT, TYPE and CPL status definition for TLP header dt-bindings: PCI: Add ASPEED PCIe RC support
This commit is contained in:
commit
a8a811cb3c
6 changed files with 1333 additions and 0 deletions
182
Documentation/devicetree/bindings/pci/aspeed,ast2600-pcie.yaml
Normal file
182
Documentation/devicetree/bindings/pci/aspeed,ast2600-pcie.yaml
Normal file
|
|
@ -0,0 +1,182 @@
|
|||
# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
|
||||
%YAML 1.2
|
||||
---
|
||||
$id: http://devicetree.org/schemas/pci/aspeed,ast2600-pcie.yaml#
|
||||
$schema: http://devicetree.org/meta-schemas/core.yaml#
|
||||
|
||||
title: ASPEED PCIe Root Complex Controller
|
||||
|
||||
maintainers:
|
||||
- Jacky Chou <jacky_chou@aspeedtech.com>
|
||||
|
||||
description:
|
||||
The ASPEED PCIe Root Complex controller provides PCI Express Root Complex
|
||||
functionality for ASPEED SoCs, such as the AST2600 and AST2700.
|
||||
This controller enables connectivity to PCIe endpoint devices, supporting
|
||||
memory and I/O windows, MSI and INTx interrupts, and integration with
|
||||
the SoC's clock, reset, and pinctrl subsystems. On AST2600, the PCIe Root
|
||||
Port device number is always 8.
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
- aspeed,ast2600-pcie
|
||||
- aspeed,ast2700-pcie
|
||||
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
ranges:
|
||||
minItems: 2
|
||||
maxItems: 2
|
||||
|
||||
interrupts:
|
||||
maxItems: 1
|
||||
description: INTx and MSI interrupt
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: PCIe controller reset
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: h2x
|
||||
|
||||
aspeed,ahbc:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
Phandle to the ASPEED AHB Controller (AHBC) syscon node.
|
||||
This reference is used by the PCIe controller to access
|
||||
system-level configuration registers related to the AHB bus.
|
||||
To enable AHB access for the PCIe controller.
|
||||
|
||||
aspeed,pciecfg:
|
||||
$ref: /schemas/types.yaml#/definitions/phandle
|
||||
description:
|
||||
Phandle to the ASPEED PCIe configuration syscon node.
|
||||
This reference allows the PCIe controller to access
|
||||
SoC-specific PCIe configuration registers. There are the others
|
||||
functions such PCIe RC and PCIe EP will use this common register
|
||||
to configure the SoC interfaces.
|
||||
|
||||
interrupt-controller: true
|
||||
|
||||
patternProperties:
|
||||
"^pcie@[0-9a-f]+,0$":
|
||||
type: object
|
||||
$ref: /schemas/pci/pci-pci-bridge.yaml#
|
||||
|
||||
properties:
|
||||
reg:
|
||||
maxItems: 1
|
||||
|
||||
resets:
|
||||
items:
|
||||
- description: PERST# signal
|
||||
|
||||
reset-names:
|
||||
items:
|
||||
- const: perst
|
||||
|
||||
clocks:
|
||||
maxItems: 1
|
||||
|
||||
phys:
|
||||
maxItems: 1
|
||||
|
||||
required:
|
||||
- resets
|
||||
- reset-names
|
||||
- clocks
|
||||
- phys
|
||||
- ranges
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
allOf:
|
||||
- $ref: /schemas/pci/pci-host-bridge.yaml#
|
||||
- $ref: /schemas/interrupt-controller/msi-controller.yaml#
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: aspeed,ast2600-pcie
|
||||
then:
|
||||
required:
|
||||
- aspeed,ahbc
|
||||
else:
|
||||
properties:
|
||||
aspeed,ahbc: false
|
||||
- if:
|
||||
properties:
|
||||
compatible:
|
||||
contains:
|
||||
const: aspeed,ast2700-pcie
|
||||
then:
|
||||
required:
|
||||
- aspeed,pciecfg
|
||||
else:
|
||||
properties:
|
||||
aspeed,pciecfg: false
|
||||
|
||||
required:
|
||||
- reg
|
||||
- interrupts
|
||||
- bus-range
|
||||
- ranges
|
||||
- resets
|
||||
- reset-names
|
||||
- msi-controller
|
||||
- interrupt-controller
|
||||
- interrupt-map-mask
|
||||
- interrupt-map
|
||||
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
#include <dt-bindings/interrupt-controller/arm-gic.h>
|
||||
#include <dt-bindings/clock/ast2600-clock.h>
|
||||
|
||||
pcie0: pcie@1e770000 {
|
||||
compatible = "aspeed,ast2600-pcie";
|
||||
device_type = "pci";
|
||||
reg = <0x1e770000 0x100>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
interrupts = <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>;
|
||||
bus-range = <0x00 0xff>;
|
||||
|
||||
ranges = <0x01000000 0x0 0x00018000 0x00018000 0x0 0x00008000
|
||||
0x02000000 0x0 0x60000000 0x60000000 0x0 0x20000000>;
|
||||
|
||||
resets = <&syscon ASPEED_RESET_H2X>;
|
||||
reset-names = "h2x";
|
||||
|
||||
#interrupt-cells = <1>;
|
||||
msi-controller;
|
||||
|
||||
aspeed,ahbc = <&ahbc>;
|
||||
|
||||
interrupt-controller;
|
||||
interrupt-map-mask = <0 0 0 7>;
|
||||
interrupt-map = <0 0 0 1 &pcie0 0>,
|
||||
<0 0 0 2 &pcie0 1>,
|
||||
<0 0 0 3 &pcie0 2>,
|
||||
<0 0 0 4 &pcie0 3>;
|
||||
|
||||
pcie@8,0 {
|
||||
compatible = "pciclass,0604";
|
||||
reg = <0x00004000 0 0 0 0>;
|
||||
#address-cells = <3>;
|
||||
#size-cells = <2>;
|
||||
device_type = "pci";
|
||||
resets = <&syscon ASPEED_RESET_PCIE_RC_O>;
|
||||
reset-names = "perst";
|
||||
clocks = <&syscon ASPEED_CLK_GATE_BCLK>;
|
||||
pinctrl-names = "default";
|
||||
pinctrl-0 = <&pinctrl_pcierc1_default>;
|
||||
phys = <&pcie_phy1>;
|
||||
ranges;
|
||||
};
|
||||
};
|
||||
|
|
@ -3902,6 +3902,14 @@ S: Maintained
|
|||
F: Documentation/devicetree/bindings/media/aspeed,video-engine.yaml
|
||||
F: drivers/media/platform/aspeed/
|
||||
|
||||
ASPEED PCIE CONTROLLER DRIVER
|
||||
M: Jacky Chou <jacky_chou@aspeedtech.com>
|
||||
L: linux-aspeed@lists.ozlabs.org (moderated for non-subscribers)
|
||||
L: linux-pci@vger.kernel.org
|
||||
S: Maintained
|
||||
F: Documentation/devicetree/bindings/pci/aspeed,ast2600-pcie.yaml
|
||||
F: drivers/pci/controller/pcie-aspeed.c
|
||||
|
||||
ASUS EC HARDWARE MONITOR DRIVER
|
||||
M: Eugene Shalygin <eugene.shalygin@gmail.com>
|
||||
L: linux-hwmon@vger.kernel.org
|
||||
|
|
|
|||
|
|
@ -58,6 +58,22 @@ config PCI_VERSATILE
|
|||
bool "ARM Versatile PB PCI controller"
|
||||
depends on ARCH_VERSATILE || COMPILE_TEST
|
||||
|
||||
config PCIE_ASPEED
|
||||
bool "ASPEED PCIe controller"
|
||||
depends on ARCH_ASPEED || COMPILE_TEST
|
||||
depends on OF
|
||||
depends on PCI_MSI
|
||||
select IRQ_MSI_LIB
|
||||
help
|
||||
Enable this option to support the PCIe controller found on ASPEED
|
||||
SoCs.
|
||||
|
||||
This driver provides initialization and management for PCIe
|
||||
Root Complex functionality, including INTx and MSI support.
|
||||
|
||||
Select Y if your platform uses an ASPEED SoC and requires PCIe
|
||||
connectivity.
|
||||
|
||||
config PCIE_BRCMSTB
|
||||
tristate "Broadcom Brcmstb PCIe controller"
|
||||
depends on ARCH_BRCMSTB || ARCH_BCM2835 || ARCH_BCMBCA || \
|
||||
|
|
|
|||
|
|
@ -40,6 +40,7 @@ obj-$(CONFIG_PCI_LOONGSON) += pci-loongson.o
|
|||
obj-$(CONFIG_PCIE_HISI_ERR) += pcie-hisi-error.o
|
||||
obj-$(CONFIG_PCIE_APPLE) += pcie-apple.o
|
||||
obj-$(CONFIG_PCIE_MT7621) += pcie-mt7621.o
|
||||
obj-$(CONFIG_PCIE_ASPEED) += pcie-aspeed.o
|
||||
|
||||
# pcie-hisi.o quirks are needed even without CONFIG_PCIE_DW
|
||||
obj-y += dwc/
|
||||
|
|
|
|||
1111
drivers/pci/controller/pcie-aspeed.c
Normal file
1111
drivers/pci/controller/pcie-aspeed.c
Normal file
File diff suppressed because it is too large
Load diff
|
|
@ -64,6 +64,18 @@ struct pcie_tlp_log;
|
|||
#define PCIE_LINK_WAIT_MAX_RETRIES 10
|
||||
#define PCIE_LINK_WAIT_SLEEP_MS 90
|
||||
|
||||
/* Format of TLP; PCIe r7.0, sec 2.2.1 */
|
||||
#define PCIE_TLP_FMT_3DW_NO_DATA 0x00 /* 3DW header, no data */
|
||||
#define PCIE_TLP_FMT_4DW_NO_DATA 0x01 /* 4DW header, no data */
|
||||
#define PCIE_TLP_FMT_3DW_DATA 0x02 /* 3DW header, with data */
|
||||
#define PCIE_TLP_FMT_4DW_DATA 0x03 /* 4DW header, with data */
|
||||
|
||||
/* Type of TLP; PCIe r7.0, sec 2.2.1 */
|
||||
#define PCIE_TLP_TYPE_CFG0_RD 0x04 /* Config Type 0 Read Request */
|
||||
#define PCIE_TLP_TYPE_CFG0_WR 0x04 /* Config Type 0 Write Request */
|
||||
#define PCIE_TLP_TYPE_CFG1_RD 0x05 /* Config Type 1 Read Request */
|
||||
#define PCIE_TLP_TYPE_CFG1_WR 0x05 /* Config Type 1 Write Request */
|
||||
|
||||
/* Message Routing (r[2:0]); PCIe r6.0, sec 2.2.8 */
|
||||
#define PCIE_MSG_TYPE_R_RC 0
|
||||
#define PCIE_MSG_TYPE_R_ADDR 1
|
||||
|
|
@ -85,6 +97,9 @@ struct pcie_tlp_log;
|
|||
#define PCIE_MSG_CODE_DEASSERT_INTC 0x26
|
||||
#define PCIE_MSG_CODE_DEASSERT_INTD 0x27
|
||||
|
||||
/* Cpl. status of Complete; PCIe r7.0, sec 2.2.9.1 */
|
||||
#define PCIE_CPL_STS_SUCCESS 0x00 /* Successful Completion */
|
||||
|
||||
#define PCI_BUS_BRIDGE_IO_WINDOW 0
|
||||
#define PCI_BUS_BRIDGE_MEM_WINDOW 1
|
||||
#define PCI_BUS_BRIDGE_PREF_MEM_WINDOW 2
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue