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

title: RaspberryPi RP1 MFD PCI device

maintainers:
  - A. della Porta <andrea.porta@suse.com>

description:
  The RaspberryPi RP1 is a PCI multi function device containing
  peripherals ranging from Ethernet to USB controller, I2C, SPI
  and others.
  The peripherals are accessed by addressing the PCI BAR1 region.

allOf:
  - $ref: /schemas/pci/pci-ep-bus.yaml

properties:
  compatible:
    additionalItems: true
    maxItems: 3
    items:
      - const: pci1de4,1

  reg:
    maxItems: 1
    description: The PCI Bus-Device-Function address.

  '#interrupt-cells':
    const: 2
    description: |
      Specifies respectively the interrupt number and flags as defined
      in include/dt-bindings/interrupt-controller/irq.h.
      Since all interrupts are active high, only IRQ_TYPE_LEVEL_HIGH
      and IRQ_TYPE_EDGE_RISING can be specified as type flags.
      The supported values for the interrupt number are:
        - IO BANK0: 0
        - IO BANK1: 1
        - IO BANK2: 2
        - AUDIO IN: 3
        - AUDIO OUT: 4
        - PWM0: 5
        - ETH: 6
        - I2C0: 7
        - I2C1: 8
        - I2C2: 9
        - I2C3: 10
        - I2C4: 11
        - I2C5: 12
        - I2C6: 13
        - I2S0: 14
        - I2S1: 15
        - I2S2: 16
        - SDIO0: 17
        - SDIO1: 18
        - SPI0: 19
        - SPI1: 20
        - SPI2: 21
        - SPI3: 22
        - SPI4: 23
        - SPI5: 24
        - UART0: 25
        - TIMER0: 26
        - TIMER1: 27
        - TIMER2: 28
        - TIMER3: 29
        - USB HOST0: 30
        - USB HOST0-0: 31
        - USB HOST0-1: 32
        - USB HOST0-2: 33
        - USB HOST0-3: 34
        - USB HOST1: 35
        - USB HOST1-0: 36
        - USB HOST1-1: 37
        - USB HOST1-2: 38
        - USB HOST1-3: 39
        - DMA: 40
        - PWM1: 41
        - UART1: 42
        - UART2: 43
        - UART3: 44
        - UART4: 45
        - UART5: 46
        - MIPI0: 47
        - MIPI1: 48
        - VIDEO OUT: 49
        - PIO0: 50
        - PIO1: 51
        - ADC FIFO: 52
        - PCIE OUT: 53
        - SPI6: 54
        - SPI7: 55
        - SPI8: 56
        - PROC MISC: 57
        - SYSCFG: 58
        - CLOCKS DEFAULT: 59
        - VBUSCTRL: 60

  interrupt-controller: true

unevaluatedProperties: false

required:
  - compatible
  - reg
  - '#interrupt-cells'
  - interrupt-controller
  - pci-ep-bus@1

examples:
  - |
    pci {
        #address-cells = <3>;
        #size-cells = <2>;

        dev@0,0 {
            compatible = "pci1de4,1";
            reg = <0x10000 0x0 0x0 0x0 0x0>;
            ranges = <0x01 0x00 0x00000000  0x82010000 0x00 0x00  0x00 0x400000>;
            #address-cells = <3>;
            #size-cells = <2>;
            interrupt-controller;
            #interrupt-cells = <2>;

            pci_ep_bus: pci-ep-bus@1 {
                compatible = "simple-bus";
                ranges = <0x00 0x40000000  0x01 0x00 0x00000000  0x00 0x00400000>;
                dma-ranges = <0x10 0x00000000  0x43000000 0x10 0x00000000  0x10 0x00000000>;
                #address-cells = <2>;
                #size-cells = <2>;

                rp1_clocks: clocks@40018000 {
                    compatible = "raspberrypi,rp1-clocks";
                    reg = <0x00 0x40018000 0x0 0x10038>;
                    #clock-cells = <1>;
                    clocks = <&clk_rp1_xosc>;
                };
            };
        };
    };
