* Generic PCI host controller

Firmware-initialised PCI host controllers and PCI emulations, such as the
virtio-pci implementations found in kvmtool and other para-virtualised
systems, do not require driver support for complexities such as regulator
and clock management. In fact, the controller may not even require the
configuration of a control interface by the operating system, instead
presenting a set of fixed windows describing a subset of IO, Memory and
Configuration Spaces.

Such a controller can be described purely in terms of the standardized device
tree bindings communicated in pci.txt:


Properties of the host controller node:

- compatible     : Must be "pci-host-cam-generic" or "pci-host-ecam-generic"
                   depending on the layout of configuration space (CAM vs
                   ECAM respectively).

- device_type    : Must be "pci".

- ranges         : As described in IEEE Std 1275-1994, but must provide
                   at least a definition of non-prefetchable memory. One
                   or both of prefetchable Memory and IO Space may also
                   be provided.

- bus-range      : Optional property (also described in IEEE Std 1275-1994)
                   to indicate the range of bus numbers for this controller.
                   If absent, defaults to <0 255> (i.e. all buses).

- #address-cells : Must be 3.

- #size-cells    : Must be 2.

- reg            : The Configuration Space base address and size, as accessed
                   from the parent bus.


Properties of the /chosen node:

- linux,pci-probe-only
                 : Optional property which takes a single-cell argument.
                   If '0', then Linux will assign devices in its usual manner,
                   otherwise it will not try to assign devices and instead use
                   them as they are configured already.

Configuration Space is assumed to be memory-mapped (as opposed to being
accessed via an ioport) and laid out with a direct correspondence to the
geography of a PCI bus address by concatenating the various components to
form an offset.

For CAM, this 24-bit offset is:

        cfg_offset(bus, device, function, register) =
                   bus << 16 | device << 11 | function << 8 | register

Whilst ECAM extends this by 4 bits to accomodate 4k of function space:

        cfg_offset(bus, device, function, register) =
                   bus << 20 | device << 15 | function << 12 | register

Interrupt mapping is exactly as described in `Open Firmware Recommended
Practice: Interrupt Mapping' and requires the following properties:

- #interrupt-cells   : Must be 1

- interrupt-map      : <see aforementioned specification>

- interrupt-map-mask : <see aforementioned specification>


Example:

pci {
    compatible = "pci-host-cam-generic"
    device_type = "pci";
    #address-cells = <3>;
    #size-cells = <2>;
    bus-range = <0x0 0x1>;

    // CPU_PHYSICAL(2)  SIZE(2)
    reg = <0x0 0x40000000  0x0 0x1000000>;

    // BUS_ADDRESS(3)  CPU_PHYSICAL(2)  SIZE(2)
    ranges = <0x01000000 0x0 0x01000000  0x0 0x01000000  0x0 0x00010000>,
             <0x02000000 0x0 0x41000000  0x0 0x41000000  0x0 0x3f000000>;


    #interrupt-cells = <0x1>;

    // PCI_DEVICE(3)  INT#(1)  CONTROLLER(PHANDLE)  CONTROLLER_DATA(3)
    interrupt-map = <  0x0 0x0 0x0  0x1  &gic  0x0 0x4 0x1
                     0x800 0x0 0x0  0x1  &gic  0x0 0x5 0x1
                    0x1000 0x0 0x0  0x1  &gic  0x0 0x6 0x1
                    0x1800 0x0 0x0  0x1  &gic  0x0 0x7 0x1>;

    // PCI_DEVICE(3)  INT#(1)
    interrupt-map-mask = <0xf800 0x0 0x0  0x7>;
}
