mirror of https://gitee.com/openkylin/linux.git
525 lines
16 KiB
Plaintext
525 lines
16 KiB
Plaintext
Marvell Discovery mv64[345]6x System Controller chips
|
|
===========================================================
|
|
|
|
The Marvell mv64[345]60 series of system controller chips contain
|
|
many of the peripherals needed to implement a complete computer
|
|
system. In this section, we define device tree nodes to describe
|
|
the system controller chip itself and each of the peripherals
|
|
which it contains. Compatible string values for each node are
|
|
prefixed with the string "marvell,", for Marvell Technology Group Ltd.
|
|
|
|
1) The /system-controller node
|
|
|
|
This node is used to represent the system-controller and must be
|
|
present when the system uses a system controller chip. The top-level
|
|
system-controller node contains information that is global to all
|
|
devices within the system controller chip. The node name begins
|
|
with "system-controller" followed by the unit address, which is
|
|
the base address of the memory-mapped register set for the system
|
|
controller chip.
|
|
|
|
Required properties:
|
|
|
|
- ranges : Describes the translation of system controller addresses
|
|
for memory mapped registers.
|
|
- clock-frequency: Contains the main clock frequency for the system
|
|
controller chip.
|
|
- reg : This property defines the address and size of the
|
|
memory-mapped registers contained within the system controller
|
|
chip. The address specified in the "reg" property should match
|
|
the unit address of the system-controller node.
|
|
- #address-cells : Address representation for system controller
|
|
devices. This field represents the number of cells needed to
|
|
represent the address of the memory-mapped registers of devices
|
|
within the system controller chip.
|
|
- #size-cells : Size representation for the memory-mapped
|
|
registers within the system controller chip.
|
|
- #interrupt-cells : Defines the width of cells used to represent
|
|
interrupts.
|
|
|
|
Optional properties:
|
|
|
|
- model : The specific model of the system controller chip. Such
|
|
as, "mv64360", "mv64460", or "mv64560".
|
|
- compatible : A string identifying the compatibility identifiers
|
|
of the system controller chip.
|
|
|
|
The system-controller node contains child nodes for each system
|
|
controller device that the platform uses. Nodes should not be created
|
|
for devices which exist on the system controller chip but are not used
|
|
|
|
Example Marvell Discovery mv64360 system-controller node:
|
|
|
|
system-controller@f1000000 { /* Marvell Discovery mv64360 */
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
model = "mv64360"; /* Default */
|
|
compatible = "marvell,mv64360";
|
|
clock-frequency = <133333333>;
|
|
reg = <0xf1000000 0x10000>;
|
|
virtual-reg = <0xf1000000>;
|
|
ranges = <0x88000000 0x88000000 0x1000000 /* PCI 0 I/O Space */
|
|
0x80000000 0x80000000 0x8000000 /* PCI 0 MEM Space */
|
|
0xa0000000 0xa0000000 0x4000000 /* User FLASH */
|
|
0x00000000 0xf1000000 0x0010000 /* Bridge's regs */
|
|
0xf2000000 0xf2000000 0x0040000>;/* Integrated SRAM */
|
|
|
|
[ child node definitions... ]
|
|
}
|
|
|
|
2) Child nodes of /system-controller
|
|
|
|
a) Marvell Discovery MDIO bus
|
|
|
|
The MDIO is a bus to which the PHY devices are connected. For each
|
|
device that exists on this bus, a child node should be created. See
|
|
the definition of the PHY node below for an example of how to define
|
|
a PHY.
|
|
|
|
Required properties:
|
|
- #address-cells : Should be <1>
|
|
- #size-cells : Should be <0>
|
|
- device_type : Should be "mdio"
|
|
- compatible : Should be "marvell,mv64360-mdio"
|
|
|
|
Example:
|
|
|
|
mdio {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
device_type = "mdio";
|
|
compatible = "marvell,mv64360-mdio";
|
|
|
|
ethernet-phy@0 {
|
|
......
|
|
};
|
|
};
|
|
|
|
|
|
b) Marvell Discovery ethernet controller
|
|
|
|
The Discover ethernet controller is described with two levels
|
|
of nodes. The first level describes an ethernet silicon block
|
|
and the second level describes up to 3 ethernet nodes within
|
|
that block. The reason for the multiple levels is that the
|
|
registers for the node are interleaved within a single set
|
|
of registers. The "ethernet-block" level describes the
|
|
shared register set, and the "ethernet" nodes describe ethernet
|
|
port-specific properties.
|
|
|
|
Ethernet block node
|
|
|
|
Required properties:
|
|
- #address-cells : <1>
|
|
- #size-cells : <0>
|
|
- compatible : "marvell,mv64360-eth-block"
|
|
- reg : Offset and length of the register set for this block
|
|
|
|
Optional properties:
|
|
- clocks : Phandle to the clock control device and gate bit
|
|
|
|
Example Discovery Ethernet block node:
|
|
ethernet-block@2000 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "marvell,mv64360-eth-block";
|
|
reg = <0x2000 0x2000>;
|
|
ethernet@0 {
|
|
.......
|
|
};
|
|
};
|
|
|
|
Ethernet port node
|
|
|
|
Required properties:
|
|
- device_type : Should be "network".
|
|
- compatible : Should be "marvell,mv64360-eth".
|
|
- reg : Should be <0>, <1>, or <2>, according to which registers
|
|
within the silicon block the device uses.
|
|
- interrupts : <a> where a is the interrupt number for the port.
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
- phy : the phandle for the PHY connected to this ethernet
|
|
controller.
|
|
- local-mac-address : 6 bytes, MAC address
|
|
|
|
Example Discovery Ethernet port node:
|
|
ethernet@0 {
|
|
device_type = "network";
|
|
compatible = "marvell,mv64360-eth";
|
|
reg = <0>;
|
|
interrupts = <32>;
|
|
interrupt-parent = <&PIC>;
|
|
phy = <&PHY0>;
|
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
|
};
|
|
|
|
|
|
|
|
c) Marvell Discovery PHY nodes
|
|
|
|
Required properties:
|
|
- device_type : Should be "ethernet-phy"
|
|
- interrupts : <a> where a is the interrupt number for this phy.
|
|
- interrupt-parent : the phandle for the interrupt controller that
|
|
services interrupts for this device.
|
|
- reg : The ID number for the phy, usually a small integer
|
|
|
|
Example Discovery PHY node:
|
|
ethernet-phy@1 {
|
|
device_type = "ethernet-phy";
|
|
compatible = "broadcom,bcm5421";
|
|
interrupts = <76>; /* GPP 12 */
|
|
interrupt-parent = <&PIC>;
|
|
reg = <1>;
|
|
};
|
|
|
|
|
|
d) Marvell Discovery SDMA nodes
|
|
|
|
Represent DMA hardware associated with the MPSC (multiprotocol
|
|
serial controllers).
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-sdma"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupts : <a> where a is the interrupt number for the DMA
|
|
device.
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery SDMA node:
|
|
sdma@4000 {
|
|
compatible = "marvell,mv64360-sdma";
|
|
reg = <0x4000 0xc18>;
|
|
virtual-reg = <0xf1004000>;
|
|
interrupts = <36>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|
|
e) Marvell Discovery BRG nodes
|
|
|
|
Represent baud rate generator hardware associated with the MPSC
|
|
(multiprotocol serial controllers).
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-brg"
|
|
- reg : Offset and length of the register set for this device
|
|
- clock-src : A value from 0 to 15 which selects the clock
|
|
source for the baud rate generator. This value corresponds
|
|
to the CLKS value in the BRGx configuration register. See
|
|
the mv64x60 User's Manual.
|
|
- clock-frequence : The frequency (in Hz) of the baud rate
|
|
generator's input clock.
|
|
- current-speed : The current speed setting (presumably by
|
|
firmware) of the baud rate generator.
|
|
|
|
Example Discovery BRG node:
|
|
brg@b200 {
|
|
compatible = "marvell,mv64360-brg";
|
|
reg = <0xb200 0x8>;
|
|
clock-src = <8>;
|
|
clock-frequency = <133333333>;
|
|
current-speed = <9600>;
|
|
};
|
|
|
|
|
|
f) Marvell Discovery CUNIT nodes
|
|
|
|
Represent the Serial Communications Unit device hardware.
|
|
|
|
Required properties:
|
|
- reg : Offset and length of the register set for this device
|
|
|
|
Example Discovery CUNIT node:
|
|
cunit@f200 {
|
|
reg = <0xf200 0x200>;
|
|
};
|
|
|
|
|
|
g) Marvell Discovery MPSCROUTING nodes
|
|
|
|
Represent the Discovery's MPSC routing hardware
|
|
|
|
Required properties:
|
|
- reg : Offset and length of the register set for this device
|
|
|
|
Example Discovery CUNIT node:
|
|
mpscrouting@b500 {
|
|
reg = <0xb400 0xc>;
|
|
};
|
|
|
|
|
|
h) Marvell Discovery MPSCINTR nodes
|
|
|
|
Represent the Discovery's MPSC DMA interrupt hardware registers
|
|
(SDMA cause and mask registers).
|
|
|
|
Required properties:
|
|
- reg : Offset and length of the register set for this device
|
|
|
|
Example Discovery MPSCINTR node:
|
|
mpsintr@b800 {
|
|
reg = <0xb800 0x100>;
|
|
};
|
|
|
|
|
|
i) Marvell Discovery MPSC nodes
|
|
|
|
Represent the Discovery's MPSC (Multiprotocol Serial Controller)
|
|
serial port.
|
|
|
|
Required properties:
|
|
- device_type : "serial"
|
|
- compatible : "marvell,mv64360-mpsc"
|
|
- reg : Offset and length of the register set for this device
|
|
- sdma : the phandle for the SDMA node used by this port
|
|
- brg : the phandle for the BRG node used by this port
|
|
- cunit : the phandle for the CUNIT node used by this port
|
|
- mpscrouting : the phandle for the MPSCROUTING node used by this port
|
|
- mpscintr : the phandle for the MPSCINTR node used by this port
|
|
- cell-index : the hardware index of this cell in the MPSC core
|
|
- max_idle : value needed for MPSC CHR3 (Maximum Frame Length)
|
|
register
|
|
- interrupts : <a> where a is the interrupt number for the MPSC.
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery MPSCINTR node:
|
|
mpsc@8000 {
|
|
device_type = "serial";
|
|
compatible = "marvell,mv64360-mpsc";
|
|
reg = <0x8000 0x38>;
|
|
virtual-reg = <0xf1008000>;
|
|
sdma = <&SDMA0>;
|
|
brg = <&BRG0>;
|
|
cunit = <&CUNIT>;
|
|
mpscrouting = <&MPSCROUTING>;
|
|
mpscintr = <&MPSCINTR>;
|
|
cell-index = <0>;
|
|
max_idle = <40>;
|
|
interrupts = <40>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|
|
j) Marvell Discovery Watch Dog Timer nodes
|
|
|
|
Represent the Discovery's watchdog timer hardware
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-wdt"
|
|
- reg : Offset and length of the register set for this device
|
|
|
|
Example Discovery Watch Dog Timer node:
|
|
wdt@b410 {
|
|
compatible = "marvell,mv64360-wdt";
|
|
reg = <0xb410 0x8>;
|
|
};
|
|
|
|
|
|
k) Marvell Discovery I2C nodes
|
|
|
|
Represent the Discovery's I2C hardware
|
|
|
|
Required properties:
|
|
- device_type : "i2c"
|
|
- compatible : "marvell,mv64360-i2c"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupts : <a> where a is the interrupt number for the I2C.
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery I2C node:
|
|
compatible = "marvell,mv64360-i2c";
|
|
reg = <0xc000 0x20>;
|
|
virtual-reg = <0xf100c000>;
|
|
interrupts = <37>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|
|
l) Marvell Discovery PIC (Programmable Interrupt Controller) nodes
|
|
|
|
Represent the Discovery's PIC hardware
|
|
|
|
Required properties:
|
|
- #interrupt-cells : <1>
|
|
- #address-cells : <0>
|
|
- compatible : "marvell,mv64360-pic"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupt-controller
|
|
|
|
Example Discovery PIC node:
|
|
pic {
|
|
#interrupt-cells = <1>;
|
|
#address-cells = <0>;
|
|
compatible = "marvell,mv64360-pic";
|
|
reg = <0x0 0x88>;
|
|
interrupt-controller;
|
|
};
|
|
|
|
|
|
m) Marvell Discovery MPP (Multipurpose Pins) multiplexing nodes
|
|
|
|
Represent the Discovery's MPP hardware
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-mpp"
|
|
- reg : Offset and length of the register set for this device
|
|
|
|
Example Discovery MPP node:
|
|
mpp@f000 {
|
|
compatible = "marvell,mv64360-mpp";
|
|
reg = <0xf000 0x10>;
|
|
};
|
|
|
|
|
|
n) Marvell Discovery GPP (General Purpose Pins) nodes
|
|
|
|
Represent the Discovery's GPP hardware
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-gpp"
|
|
- reg : Offset and length of the register set for this device
|
|
|
|
Example Discovery GPP node:
|
|
gpp@f000 {
|
|
compatible = "marvell,mv64360-gpp";
|
|
reg = <0xf100 0x20>;
|
|
};
|
|
|
|
|
|
o) Marvell Discovery PCI host bridge node
|
|
|
|
Represents the Discovery's PCI host bridge device. The properties
|
|
for this node conform to Rev 2.1 of the PCI Bus Binding to IEEE
|
|
1275-1994. A typical value for the compatible property is
|
|
"marvell,mv64360-pci".
|
|
|
|
Example Discovery PCI host bridge node
|
|
pci@80000000 {
|
|
#address-cells = <3>;
|
|
#size-cells = <2>;
|
|
#interrupt-cells = <1>;
|
|
device_type = "pci";
|
|
compatible = "marvell,mv64360-pci";
|
|
reg = <0xcf8 0x8>;
|
|
ranges = <0x01000000 0x0 0x0
|
|
0x88000000 0x0 0x01000000
|
|
0x02000000 0x0 0x80000000
|
|
0x80000000 0x0 0x08000000>;
|
|
bus-range = <0 255>;
|
|
clock-frequency = <66000000>;
|
|
interrupt-parent = <&PIC>;
|
|
interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
|
|
interrupt-map = <
|
|
/* IDSEL 0x0a */
|
|
0x5000 0 0 1 &PIC 80
|
|
0x5000 0 0 2 &PIC 81
|
|
0x5000 0 0 3 &PIC 91
|
|
0x5000 0 0 4 &PIC 93
|
|
|
|
/* IDSEL 0x0b */
|
|
0x5800 0 0 1 &PIC 91
|
|
0x5800 0 0 2 &PIC 93
|
|
0x5800 0 0 3 &PIC 80
|
|
0x5800 0 0 4 &PIC 81
|
|
|
|
/* IDSEL 0x0c */
|
|
0x6000 0 0 1 &PIC 91
|
|
0x6000 0 0 2 &PIC 93
|
|
0x6000 0 0 3 &PIC 80
|
|
0x6000 0 0 4 &PIC 81
|
|
|
|
/* IDSEL 0x0d */
|
|
0x6800 0 0 1 &PIC 93
|
|
0x6800 0 0 2 &PIC 80
|
|
0x6800 0 0 3 &PIC 81
|
|
0x6800 0 0 4 &PIC 91
|
|
>;
|
|
};
|
|
|
|
|
|
p) Marvell Discovery CPU Error nodes
|
|
|
|
Represent the Discovery's CPU error handler device.
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-cpu-error"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupts : the interrupt number for this device
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery CPU Error node:
|
|
cpu-error@0070 {
|
|
compatible = "marvell,mv64360-cpu-error";
|
|
reg = <0x70 0x10 0x128 0x28>;
|
|
interrupts = <3>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|
|
q) Marvell Discovery SRAM Controller nodes
|
|
|
|
Represent the Discovery's SRAM controller device.
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-sram-ctrl"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupts : the interrupt number for this device
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery SRAM Controller node:
|
|
sram-ctrl@0380 {
|
|
compatible = "marvell,mv64360-sram-ctrl";
|
|
reg = <0x380 0x80>;
|
|
interrupts = <13>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|
|
r) Marvell Discovery PCI Error Handler nodes
|
|
|
|
Represent the Discovery's PCI error handler device.
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-pci-error"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupts : the interrupt number for this device
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery PCI Error Handler node:
|
|
pci-error@1d40 {
|
|
compatible = "marvell,mv64360-pci-error";
|
|
reg = <0x1d40 0x40 0xc28 0x4>;
|
|
interrupts = <12>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|
|
s) Marvell Discovery Memory Controller nodes
|
|
|
|
Represent the Discovery's memory controller device.
|
|
|
|
Required properties:
|
|
- compatible : "marvell,mv64360-mem-ctrl"
|
|
- reg : Offset and length of the register set for this device
|
|
- interrupts : the interrupt number for this device
|
|
- interrupt-parent : the phandle for the interrupt controller
|
|
that services interrupts for this device.
|
|
|
|
Example Discovery Memory Controller node:
|
|
mem-ctrl@1400 {
|
|
compatible = "marvell,mv64360-mem-ctrl";
|
|
reg = <0x1400 0x60>;
|
|
interrupts = <17>;
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
|
|
|