Documentation/devicetree/bindings/pci/faraday,ftpci100.yaml

Source file repositories/reference/linux-study-clean/Documentation/devicetree/bindings/pci/faraday,ftpci100.yaml

File Facts

System
Linux kernel
Corpus path
Documentation/devicetree/bindings/pci/faraday,ftpci100.yaml
Extension
.yaml
Size
5404 bytes
Lines
175
Domain
Support Tooling And Documentation
Bucket
Documentation
Inferred role
Support Tooling And Documentation: configuration, schema, or hardware description
Status
atlas-only

Why This File Exists

Repository support layer: documentation, build tooling, samples, user-space helper tools, generated initramfs support, licenses, and validation utilities.

Dependency Surface

Detected Declarations

Annotated Snippet

# SPDX-License-Identifier: (GPL-2.0-only OR BSD-2-Clause)
%YAML 1.2
---
$id: http://devicetree.org/schemas/pci/faraday,ftpci100.yaml#
$schema: http://devicetree.org/meta-schemas/core.yaml#

title: Faraday Technology FTPCI100 PCI Host Bridge

maintainers:
  - Linus Walleij <linusw@kernel.org>

description: |
    This PCI bridge is found inside that Cortina Systems Gemini SoC platform and
    is a generic IP block from Faraday Technology. It exists in two variants:
    plain and dual PCI. The plain version embeds a cascading interrupt controller
    into the host bridge. The dual version routes the interrupts to the host
    chips interrupt controller.
    The host controller appear on the PCI bus with vendor ID 0x159b (Faraday
    Technology) and product ID 0x4321.
    I/O space considerations:
    The plain variant has 128MiB of non-prefetchable memory space, whereas the
    "dual" variant has 64MiB. Take this into account when describing the ranges.

    Interrupt map considerations:

    The "dual" variant will get INT A, B, C, D from the system interrupt controller
    and should point to respective interrupt in that controller in its interrupt-map.

    The code which is the only documentation of how the Faraday PCI (the non-dual
    variant) interrupts assigns the default interrupt mapping/swizzling has
    typically been like this, doing the swizzling on the interrupt controller side
    rather than in the interconnect:

    interrupt-map-mask = <0xf800 0 0 7>;
    interrupt-map =
        <0x4800 0 0 1 &pci_intc 0>, /* Slot 9 */
        <0x4800 0 0 2 &pci_intc 1>,
        <0x4800 0 0 3 &pci_intc 2>,
        <0x4800 0 0 4 &pci_intc 3>,
        <0x5000 0 0 1 &pci_intc 1>, /* Slot 10 */
        <0x5000 0 0 2 &pci_intc 2>,
        <0x5000 0 0 3 &pci_intc 3>,
        <0x5000 0 0 4 &pci_intc 0>,
        <0x5800 0 0 1 &pci_intc 2>, /* Slot 11 */
        <0x5800 0 0 2 &pci_intc 3>,
        <0x5800 0 0 3 &pci_intc 0>,
        <0x5800 0 0 4 &pci_intc 1>,
        <0x6000 0 0 1 &pci_intc 3>, /* Slot 12 */
        <0x6000 0 0 2 &pci_intc 0>,
        <0x6000 0 0 3 &pci_intc 1>,
        <0x6000 0 0 4 &pci_intc 2>;

allOf:
  - $ref: /schemas/pci/pci-host-bridge.yaml#

properties:
  compatible:
    oneOf:
      - items:
          - const: cortina,gemini-pci
          - const: faraday,ftpci100
      - items:
          - const: cortina,gemini-pci-dual
          - const: faraday,ftpci100-dual
      - const: faraday,ftpci100
      - const: faraday,ftpci100-dual

  reg:
    maxItems: 1

Annotation

Implementation Notes