12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667 |
- UniPhier System Bus
- The UniPhier System Bus is an external bus that connects on-board devices to
- the UniPhier SoC. It is a simple (semi-)parallel bus with address, data, and
- some control signals. It supports up to 8 banks (chip selects).
- Before any access to the bus, the bus controller must be configured; the bus
- controller registers provide the control for the translation from the offset
- within each bank to the CPU-viewed address. The needed setup includes the base
- address, the size of each bank. Optionally, some timing parameters can be
- optimized for faster bus access.
- Required properties:
- - compatible: should be "socionext,uniphier-system-bus".
- - reg: offset and length of the register set for the bus controller device.
- - #address-cells: should be 2. The first cell is the bank number (chip select).
- The second cell is the address offset within the bank.
- - #size-cells: should be 1.
- - ranges: should provide a proper address translation from the System Bus to
- the parent bus.
- Note:
- The address region(s) that can be assigned for the System Bus is implementation
- defined. Some SoCs can use 0x00000000-0x0fffffff and 0x40000000-0x4fffffff,
- while other SoCs can only use 0x40000000-0x4fffffff. There might be additional
- limitations depending on SoCs and the boot mode. The address translation is
- arbitrary as long as the banks are assigned in the supported address space with
- the required alignment and they do not overlap one another.
- For example, it is possible to map:
- bank 0 to 0x42000000-0x43ffffff, bank 5 to 0x46000000-0x46ffffff
- It is also possible to map:
- bank 0 to 0x48000000-0x49ffffff, bank 5 to 0x44000000-0x44ffffff
- There is no reason to stick to a particular translation mapping, but the
- "ranges" property should provide a "reasonable" default that is known to work.
- The software should initialize the bus controller according to it.
- Example:
- system-bus {
- compatible = "socionext,uniphier-system-bus";
- reg = <0x58c00000 0x400>;
- #address-cells = <2>;
- #size-cells = <1>;
- ranges = <1 0x00000000 0x42000000 0x02000000
- 5 0x00000000 0x46000000 0x01000000>;
- ethernet@1,01f00000 {
- compatible = "smsc,lan9115";
- reg = <1 0x01f00000 0x1000>;
- interrupts = <0 48 4>
- phy-mode = "mii";
- };
- uart@5,00200000 {
- compatible = "ns16550a";
- reg = <5 0x00200000 0x20>;
- interrupts = <0 49 4>
- clock-frequency = <12288000>;
- };
- };
- In this example,
- - the Ethernet device is connected at the offset 0x01f00000 of CS1 and
- mapped to 0x43f00000 of the parent bus.
- - the UART device is connected at the offset 0x00200000 of CS5 and
- mapped to 0x46200000 of the parent bus.
|