[PATCH] powerpc: Add FSL CPM2 device tree node documentation
Vitaly Bordug
vbordug at ru.mvista.com
Wed Mar 29 03:14:32 EST 2006
Updated the documentation to include the initial description of the CPM2
device that are used on PQII and PQIII families. Only initial sub-devices
described so far, but that should be sufficient to move the respective
boards to powerpc, with a reasonable minimum supporteddevice set.
Signed-off-by: Vitaly Bordug <vbordug at ru.mvista.com>
---
Documentation/powerpc/booting-without-of.txt | 149 ++++++++++++++++++++++++++
1 files changed, 149 insertions(+), 0 deletions(-)
diff --git a/Documentation/powerpc/booting-without-of.txt b/Documentation/powerpc/booting-without-of.txt
index ee551c6..d44980c 100644
--- a/Documentation/powerpc/booting-without-of.txt
+++ b/Documentation/powerpc/booting-without-of.txt
@@ -1436,6 +1436,155 @@ platforms are moved over to use the flat
descriptor-types-mask = <073f1127>;
};
+ h) Freescale SOC communication processor module (CPM)
+ This represents cpm module that is installed on PQ (PowerQUICC)
+ series,1-st, 2-nd and 3-rd generation. Basically, is is a bus of devices,
+ both those that are inalienable cpm parts (BRGs, etc.), and those that could act
+ more or less as a complete entity (FCC, SCC). All af them should be
+ siblings on the "root" cpm node, using the common properties from
+ there. The description below applies to the CPM2 (2-nd rev. found on
+ PQ2 and PQ3) but I beleive could be extended to the PQ CPM1 as well
+ later.
+
+ 1) Root cpm2 device
+ Required properties:
+
+ - device_type : Should be "cpm"
+ - model : Model of the device. Should be "CPM1" or "CPM2"
+ - reg : Offset and length of the register set for the device
+ - command-proc : Offset to the CPM command processor
+
+ 2) Baud-rate generators (BRG)
+ The CPM contains eight independent, identical baud-rate generators (BRGs) that can be
+ used with the FCCs, SCCs, and SMCs. The clocks produced by the BRGs are sent to the
+ bank-of-clocks selection logic, where they can be routed to the controllers. In addition, the
+ output of a BRG can be routed to a pin to be used externally.
+
+ Required properties:
+
+ - device_type : Should be "brg"
+ - model : should be "BRGx", x relative to the BRG number (usually
+ from 1 to 8)
+ - reg : Offset to the configuration register (from cpm reg)
+ - linux,phandle : phandle for this node; likely referenced by the CPM
+ devices (SCC, FCC, SMC, etc.)
+
+ Recommended properties:
+
+ - clock-divider : 12-bit integer (internal counter that is decremented at the DIV16 output rate)
+ - div16 : Either <0> or <1> the 1/16 prescalar before reaching the clock divider
+ - ext-clock : Either <0> or phandle of the external clock source
+
+ 3) CPM multiplexor
+ CPM supports special NMSI mode of operation for its devices. In short,
+ each serial device could be connected to the set of dedicated pins,
+ and this pseudo-device controls such behavior. They are different for
+ each device set, and could be recognised using "compatible" field.
+
+ Required properties:
+
+ - device_type : Should be "cpmux"
+ - reg : offset to the configuration register
+ - compatible : "fcc", "scc", or "smc"
+
+ 4) SCCs (Serial Communications Controllers)
+
+ Required properties:
+
+ - device_type : "serial" or "network"
+ - model : "SCCx", x is typically a small number depending on the
+ devices amount
+ - compatible : Either "fs_enet" or "cpm_uart"
+ - reg : offset to the register set and its length
+ - reg-pram : offset to the device parameter RAM
+ - clock-setup : should be <CMX_RT CMX_MSK> where CMX_... values define
+ multiplexor clock routing and clock mask respectively
+ - interrupts : <a b> where a is the interrupt number and b is a
+ field that represents an encoding of the sense and level
+ information for the interrupt. This should be encoded based on
+ the information in section 2) depending on the type of interrupt
+ controller you have.
+ - interrupt-parent : the phandle for the interrupt controller that
+ services interrupts for this device.
+
+ 5) FCCs (Fast Communications Controllers)
+
+ Required properties:
+
+ - device_type : should be "network"
+ - model : "FCCx", x is typically a small number depending on the
+ devices amount
+ - compatible : should be "fs_enet"
+ - address : List of bytes representing the ethernet address of
+ this controller
+ - reg : offset to the register set and its length
+ - reg-pram : offset to the device parameter RAM
+ - clock-setup : should be <CMX_RT CMX_MSK> where CMX_... values define
+ multiplexor clock routing and clock mask respectively
+ - interrupts : <a b> where a is the interrupt number and b is a
+ field that represents an encoding of the sense and level
+ information for the interrupt. This should be encoded based on
+ the information in section 2) depending on the type of interrupt
+ controller you have.
+ - interrupt-parent : the phandle for the interrupt controller that
+ services interrupts for this device.
+ - phy-handle : The phandle for the PHY connected to this ethernet
+ controller.
+ Example:
+ /*8272ADS*/
+ cpm at f0000000 {
+ #address-cells = <1>;
+ #size-cells = <1>;
+ #interrupt-cells = <2>;
+ device_type = "cpm";
+ model = "CPM2";
+ ranges = <0 f0000000 00100000>;
+ reg = <f0000000 000101a8>;
+ command-proc = <119c0>
+
+ brg at 119f0 {
+ device_type = "brg";
+ model = "BRG1";
+ reg = <119f0>;
+ linux,phandle = <775>;
+ };
+
+ cpmux at 11b04 {
+ device_type = "cpmux";
+ compatible = "fcc";
+ reg = <11b04>;
+ };
+
+ cpmux at 11b08 {
+ device_type = "cpmux";
+ compatible = "scc";
+ reg = <11b08>;
+ };
+
+ scc at 11a20 {
+ device_type = "serial";
+ compatible = "cpm_uart";
+ model = "SCC1";
+ reg = <11a20 100>;
+ reg_pram = <8000 ff>;
+ clock_setup = <0x00ffffff 0>;
+ interrupts = <28 3>;
+ interrupt-parent = <700>;
+ brg_phandle = <775>;
+ };
+
+ fcc at 11300 {
+ device_type = "network";
+ compatible = "fs_enet";
+ model = "FCC1";
+ reg = <11300 1f>;
+ reg_pram = <8400 ff>;
+ address = [00 00 00 00 00 00];
+ interrupts = <20 3>;
+ interrupt-parent = <700>;
+ phy_handle = <2452000>;
+ };
+ };
More devices will be defined as this spec matures.
More information about the Linuxppc-dev
mailing list