linux-mips
[Top] [All Lists]

Re: [PATCH v7 3/4] MIPS: Octeon: Add device tree source files.

To: David Daney <ddaney.cavm@gmail.com>
Subject: Re: [PATCH v7 3/4] MIPS: Octeon: Add device tree source files.
From: Rob Herring <robherring2@gmail.com>
Date: Mon, 26 Mar 2012 21:38:37 -0500
Cc: linux-mips@linux-mips.org, ralf@linux-mips.org, devicetree-discuss@lists.ozlabs.org, Grant Likely <grant.likely@secretlab.ca>, Rob Herring <rob.herring@calxeda.com>, linux-kernel@vger.kernel.org, David Daney <david.daney@cavium.com>
Dkim-signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; bh=snSj5UXyS5pVH8pML4TJtziW2GjUDoM9NFYb8WYl01I=; b=n/GTOoyrBx2DcA8vVRf+DYhbIRFF6K+GvHs5FtLIiPI5KPCX+m+aB/kRzBz4TcKtqi SgIx+C5BhTPWBdolH7329qmDxNwahw1QrrinSFwv6CVYucNpgkZlAUluC6wuWFcgFH+R nCXmxd3TdSOBQeW4DySklFQ4tLkQn6bd9DosfgZZIij1Zuxc0Du1PfqCQFyUTnNYJpYo n2cebUbzpMNbr7KY8zxLQEAhhuvjIxD2opwbslzb7VKW3v+EIlxG/SBS/2kZekXekTvW 502dSsPt5T0xVmK4NaZtS726AXjnGULg+VAi8+TKpn5li5QzAniMd0Zl+KuVnwXaZj4U H88w==
In-reply-to: <1332790281-9648-4-git-send-email-ddaney.cavm@gmail.com>
References: <1332790281-9648-1-git-send-email-ddaney.cavm@gmail.com> <1332790281-9648-4-git-send-email-ddaney.cavm@gmail.com>
Sender: linux-mips-bounce@linux-mips.org
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:11.0) Gecko/20120310 Thunderbird/11.0
On 03/26/2012 02:31 PM, David Daney wrote:
> From: David Daney <david.daney@cavium.com>
> 
> The two device tree files octeon_3xxx.dts and octeon_68xx.dts are
> trimmed by code in a subsequent patch to reflect the hardware actually
> present on the board.  To this end several properties that are not
> part of the declared bindings are added to aid in trimming off
> unwanted nodes.  Since the device tree and the code that trims it are
> bound into the kernel binary, these 'marker' properties never escape
> into the wild, and are purely an implementation detail of the kernel
> early boot process.  This is done for backwards compatibility with
> existing boards (identified by a board type enumeration value by their
> bootloaders).  New boards will always pass a device tree from the
> bootloader, the built-in trees are ignored in this case.
> 
> Signed-off-by: David Daney <david.daney@cavium.com>
> ---
>  .../bindings/ata/cavium-compact-flash.txt          |   30 +
>  .../bindings/gpio/cavium-octeon-gpio.txt           |   48 ++
>  .../devicetree/bindings/i2c/cavium-i2c.txt         |   34 ++
>  .../devicetree/bindings/mips/cavium/bootbus.txt    |  126 ++++
>  .../devicetree/bindings/mips/cavium/ciu.txt        |   26 +
>  .../devicetree/bindings/mips/cavium/ciu2.txt       |   27 +
>  .../devicetree/bindings/mips/cavium/dma-engine.txt |   21 +
>  .../devicetree/bindings/mips/cavium/uctl.txt       |   47 ++
>  .../devicetree/bindings/net/cavium-mdio.txt        |   27 +
>  .../devicetree/bindings/net/cavium-mix.txt         |   40 ++
>  .../devicetree/bindings/net/cavium-pip.txt         |   98 +++
>  .../devicetree/bindings/serial/cavium-uart.txt     |   19 +
>  arch/mips/cavium-octeon/.gitignore                 |    2 +
>  arch/mips/cavium-octeon/Makefile                   |   13 +
>  arch/mips/cavium-octeon/octeon_3xxx.dts            |  571 ++++++++++++++++++
>  arch/mips/cavium-octeon/octeon_68xx.dts            |  625 
> ++++++++++++++++++++
>  16 files changed, 1754 insertions(+), 0 deletions(-)

This is quite a lot to digest... I don't see any major issues, but I
skimmed it pretty fast.

>  create mode 100644 
> Documentation/devicetree/bindings/ata/cavium-compact-flash.txt
>  create mode 100644 
> Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt
>  create mode 100644 Documentation/devicetree/bindings/i2c/cavium-i2c.txt
>  create mode 100644 Documentation/devicetree/bindings/mips/cavium/bootbus.txt
>  create mode 100644 Documentation/devicetree/bindings/mips/cavium/ciu.txt
>  create mode 100644 Documentation/devicetree/bindings/mips/cavium/ciu2.txt
>  create mode 100644 
> Documentation/devicetree/bindings/mips/cavium/dma-engine.txt
>  create mode 100644 Documentation/devicetree/bindings/mips/cavium/uctl.txt
>  create mode 100644 Documentation/devicetree/bindings/net/cavium-mdio.txt
>  create mode 100644 Documentation/devicetree/bindings/net/cavium-mix.txt
>  create mode 100644 Documentation/devicetree/bindings/net/cavium-pip.txt
>  create mode 100644 Documentation/devicetree/bindings/serial/cavium-uart.txt
>  create mode 100644 arch/mips/cavium-octeon/.gitignore
>  create mode 100644 arch/mips/cavium-octeon/octeon_3xxx.dts
>  create mode 100644 arch/mips/cavium-octeon/octeon_68xx.dts
> 
> diff --git a/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt 
> b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt
> new file mode 100644
> index 0000000..93986a5
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/ata/cavium-compact-flash.txt
> @@ -0,0 +1,30 @@
> +* Compact Flash
> +
> +The Cavium Compact Flash device is connected to the Octeon Boot Bus,
> +and is thus a child of the Boot Bus device.  It can read and write
> +industry standard compact flash devices.
> +
> +Properties:
> +- compatible: "cavium,ebt3000-compact-flash";
> +
> +  Compatibility with many Cavium evaluation boards.
> +
> +- reg: The base address of the the CF chip select banks.  Depending on
> +  the device configuration, there may be one or two banks.
> +
> +- cavium,bus-width: The width of the connection to the CF devices.  Valid
> +  values are 8 and 16.
> +
> +- cavium,true-ide: Optional, if present the CF connection is in True IDE 
> mode.
> +
> +- cavium,dma-engine-handle: Optional, a phandle for the DMA Engine connected
> +  to this device.
> +
> +Example:
> +     compact-flash@5,0 {
> +             compatible = "cavium,ebt3000-compact-flash";
> +             reg = <5 0 0x10000>, <6 0 0x10000>;
> +             cavium,bus-width = <16>;
> +             cavium,true-ide;
> +             cavium,dma-engine-handle = <&dma0>;
> +     };
> diff --git a/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt 
> b/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt
> new file mode 100644
> index 0000000..21b989a
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/gpio/cavium-octeon-gpio.txt
> @@ -0,0 +1,48 @@
> +* General Purpose Input Output (GPIO) bus.
> +
> +Properties:
> +- compatible: "cavium,octeon-3860-gpio"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The base address of the GPIO unit's register bank.
> +
> +- gpio-controller: This is a GPIO controller.
> +
> +- #gpio-cells: Must be <2>.  The first cell is the GPIO pin.
> +
> +- interrupt-controller: The GPIO controller is also an interrupt
> +  controller, any of its pins may be configured as an interrupt
> +  source.
> +
> +- #interrupt-cells: Must be <2>.  The first cell is the GPIO pin
> +   connected to the interrupt source.  The second cell is the interrupt
> +   triggering protocol and may have one of four values:
> +   1 - edge triggered on the rising edge.
> +   2 - edge triggered on the falling edge
> +   4 - level triggered active high.
> +   8 - level triggered active low.
> +
> +- interrupts: Interrupt routing for pin 0.  The remaining pins are
> +  also routed, but in a manner that can be derived from the pin0
> +  routing, so they are not specified.
> +
> +Example:
> +
> +     gpio-controller@1070000000800 {
> +             #gpio-cells = <2>;
> +             compatible = "cavium,octeon-3860-gpio";
> +             reg = <0x10700 0x00000800 0x0 0x100>;
> +             gpio-controller;
> +             /* Interrupts are specified by two parts:
> +              * 1) GPIO pin number (0..15)
> +              * 2) Triggering (1 - edge rising
> +              *                2 - edge falling
> +              *                4 - level active high
> +              *                8 - level active low)
> +              */
> +             interrupt-controller;
> +             #interrupt-cells = <2>;
> +             /* The GPIO pin connect to 16 consecutive CUI bits */
> +             interrupts = <0 16>;

I think this should really be:

interrupts = <0 16  0 17  0 18  0 19 ... 0 31>;

> +     };
> diff --git a/Documentation/devicetree/bindings/i2c/cavium-i2c.txt 
> b/Documentation/devicetree/bindings/i2c/cavium-i2c.txt
> new file mode 100644
> index 0000000..dced82e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/i2c/cavium-i2c.txt
> @@ -0,0 +1,34 @@
> +* Two Wire Serial Interface (TWSI) / I2C
> +
> +- compatible: "cavium,octeon-3860-twsi"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The base address of the TWSI/I2C bus controller register bank.
> +
> +- #address-cells: Must be <1>.
> +
> +- #size-cells: Must be <0>.  I2C addresses have no size component.
> +
> +- interrupts: A single interrupt specifier.
> +
> +- clock-frequency: The I2C bus clock rate in Hz.
> +
> +Example:
> +     twsi0: i2c@1180000001000 {
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +             compatible = "cavium,octeon-3860-twsi";
> +             reg = <0x11800 0x00001000 0x0 0x200>;
> +             interrupts = <0 45>;
> +             clock-frequency = <100000>;
> +
> +             rtc@68 {
> +                     compatible = "dallas,ds1337";
> +                     reg = <0x68>;
> +             };
> +             tmp@4c {
> +                     compatible = "ti,tmp421";
> +                     reg = <0x4c>;
> +             };
> +     };
> diff --git a/Documentation/devicetree/bindings/mips/cavium/bootbus.txt 
> b/Documentation/devicetree/bindings/mips/cavium/bootbus.txt
> new file mode 100644
> index 0000000..6581478
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mips/cavium/bootbus.txt
> @@ -0,0 +1,126 @@
> +* Boot Bus
> +
> +The Octeon Boot Bus is a configurable parallel bus with 8 chip
> +selects.  Each chip select is independently configurable.
> +
> +Properties:
> +- compatible: "cavium,octeon-3860-bootbus"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The base address of the Boot Bus' register bank.
> +
> +- #address-cells: Must be <2>.  The first cell is the chip select
> +   within the bootbus.  The second cell is the offset from the chip select.
> +
> +- #size-cells: Must be <1>.
> +
> +- ranges: There must be one one triplet of (child-bus-address,
> +  parent-bus-address, length) for each active chip select.  If the
> +  length element for any triplet is zero, the chip select is disabled,
> +  making it inactive.
> +
> +The configuration parameters for each chip select are stored in child
> +nodes.
> +
> +Configuration Properties:
> +- compatible:  "cavium,octeon-3860-bootbus-config"
> +
> +- cavium,cs-index: A single cell indicating the chip select that
> +  corresponds to this configuration.
> +
> +- cavium,t-adr: A cell specifying the ADR timing (in nS).

Add -ns to these time values.

> +
> +- cavium,t-ce: A cell specifying the CE timing (in nS).
> +
> +- cavium,t-oe: A cell specifying the OE timing (in nS).
> +
> +- cavium,t-we: A cell specifying the WE timing (in nS).
> +
> +- cavium,t-rd-hld: A cell specifying the RD_HLD timing (in nS).
> +
> +- cavium,t-wr-hld: A cell specifying the WR_HLD timing (in nS).
> +
> +- cavium,t-pause: A cell specifying the PAUSE timing (in nS).
> +
> +- cavium,t-wait: A cell specifying the WAIT timing (in nS).
> +
> +- cavium,t-page: A cell specifying the PAGE timing (in nS).
> +
> +- cavium,t-rd-dly: A cell specifying the RD_DLY timing (in nS).
> +
> +- cavium,pages: A cell specifying the PAGES parameter (0 = 8 bytes, 1
> +  = 2 bytes, 2 = 4 bytes, 3 = 8 bytes).
> +
> +- cavium,wait-mode: Optional.  If present, wait mode (WAITM) is selected.
> +
> +- cavium,page-mode: Optional.  If present, page mode (PAGEM) is selected.
> +
> +- cavium,bus-width: A cell specifying the WIDTH parameter (in bits) of
> +  the bus for this chip select.
> +
> +- cavium,ale-mode: Optional.  If present, ALE mode is selected.
> +
> +- cavium,sam-mode: Optional.  If present, SAM mode is selected.
> +
> +- cavium,or-mode: Optional.  If present, OR mode is selected.
> +
> +Example:
> +     bootbus: bootbus@1180000000000 {
> +             compatible = "cavium,octeon-3860-bootbus";
> +             reg = <0x11800 0x00000000 0x0 0x200>;
> +             /* The chip select number and offset */
> +             #address-cells = <2>;
> +             /* The size of the chip select region */
> +             #size-cells = <1>;
> +             ranges = <0 0  0x0 0x1f400000  0xc00000>,
> +                      <1 0  0x10000 0x30000000  0>,
> +                      <2 0  0x10000 0x40000000  0>,
> +                      <3 0  0x10000 0x50000000  0>,
> +                      <4 0  0x0 0x1d020000  0x10000>,
> +                      <5 0  0x0 0x1d040000  0x10000>,
> +                      <6 0  0x0 0x1d050000  0x10000>,
> +                      <7 0  0x10000 0x90000000  0>;
> +
> +                     cavium,cs-config@0 {
> +                     compatible = "cavium,octeon-3860-bootbus-config";
> +                     cavium,cs-index = <0>;
> +                     cavium,t-adr  = <20>;
> +                     cavium,t-ce   = <60>;
> +                     cavium,t-oe   = <60>;
> +                     cavium,t-we   = <45>;
> +                     cavium,t-rd-hld = <35>;
> +                     cavium,t-wr-hld = <45>;
> +                     cavium,t-pause  = <0>;
> +                     cavium,t-wait   = <0>;
> +                     cavium,t-page   = <35>;
> +                     cavium,t-rd-dly = <0>;
> +
> +                     cavium,pages     = <0>;
> +                     cavium,bus-width = <8>;
> +             };
> +             .
> +             .
> +             .
> +             cavium,cs-config@6 {
> +                     compatible = "cavium,octeon-3860-bootbus-config";
> +                     cavium,cs-index = <6>;
> +                     cavium,t-adr  = <5>;
> +                     cavium,t-ce   = <300>;
> +                     cavium,t-oe   = <270>;
> +                     cavium,t-we   = <150>;
> +                     cavium,t-rd-hld = <100>;
> +                     cavium,t-wr-hld = <70>;
> +                     cavium,t-pause  = <0>;
> +                     cavium,t-wait   = <0>;
> +                     cavium,t-page   = <320>;
> +                     cavium,t-rd-dly = <0>;
> +
> +                     cavium,pages     = <0>;
> +                     cavium,wait-mode;
> +                     cavium,bus-width = <16>;
> +             };
> +             .
> +             .
> +             .
> +     };
> diff --git a/Documentation/devicetree/bindings/mips/cavium/ciu.txt 
> b/Documentation/devicetree/bindings/mips/cavium/ciu.txt
> new file mode 100644
> index 0000000..2c2d074
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mips/cavium/ciu.txt
> @@ -0,0 +1,26 @@
> +* Central Interrupt Unit
> +
> +Properties:
> +- compatible: "cavium,octeon-3860-ciu"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn63XX SOCs.
> +
> +- interrupt-controller:  This is an interrupt controller.
> +
> +- reg: The base address of the CIU's register bank.
> +
> +- #interrupt-cells: Must be <2>.  The first cell is the bank within
> +   the CIU and may have a value of 0 or 1.  The second cell is the bit
> +   within the bank and may have a value between 0 and 63.
> +
> +Example:
> +     interrupt-controller@1070000000000 {
> +             compatible = "cavium,octeon-3860-ciu";
> +             interrupt-controller;
> +             /* Interrupts are specified by two parts:
> +              * 1) Controller register (0 or 1)
> +              * 2) Bit within the register (0..63)
> +              */
> +             #interrupt-cells = <2>;
> +             reg = <0x10700 0x00000000 0x0 0x7000>;
> +     };
> diff --git a/Documentation/devicetree/bindings/mips/cavium/ciu2.txt 
> b/Documentation/devicetree/bindings/mips/cavium/ciu2.txt
> new file mode 100644
> index 0000000..0ec7ba8
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mips/cavium/ciu2.txt
> @@ -0,0 +1,27 @@
> +* Central Interrupt Unit
> +
> +Properties:
> +- compatible: "cavium,octeon-6880-ciu2"
> +
> +  Compatibility with 68XX SOCs.
> +
> +- interrupt-controller:  This is an interrupt controller.
> +
> +- reg: The base address of the CIU's register bank.
> +
> +- #interrupt-cells: Must be <2>.  The first cell is the bank within
> +  the CIU and may have a value between 0 and 63.  The second cell is
> +  the bit within the bank and may also have a value between 0 and 63.
> +
> +Example:
> +     interrupt-controller@1070100000000 {
> +             compatible = "cavium,octeon-6880-ciu2";
> +             interrupt-controller;
> +             /* Interrupts are specified by two parts:
> +              * 1) Controller register (0..63)
> +              * 2) Bit within the register (0..63)
> +              */
> +             #address-cells = <0>;
> +             #interrupt-cells = <2>;
> +             reg = <0x10701 0x00000000 0x0 0x4000000>;
> +     };
> diff --git a/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt 
> b/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt
> new file mode 100644
> index 0000000..cb4291e
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mips/cavium/dma-engine.txt
> @@ -0,0 +1,21 @@
> +* DMA Engine.
> +
> +The Octeon DMA Engine transfers between the Boot Bus and main memory.
> +The DMA Engine will be refered to by phandle by any device that is
> +connected to it.
> +
> +Properties:
> +- compatible: "cavium,octeon-5750-bootbus-dma"
> +
> +  Compatibility with all cn52XX, cn56XX and cn6XXX SOCs.
> +
> +- reg: The base address of the DMA Engine's register bank.
> +
> +- interrupts: A single interrupt specifier.
> +
> +Example:
> +     dma0: dma-engine@1180000000100 {
> +             compatible = "cavium,octeon-5750-bootbus-dma";
> +             reg = <0x11800 0x00000100 0x0 0x8>;
> +             interrupts = <0 63>;
> +     };
> diff --git a/Documentation/devicetree/bindings/mips/cavium/uctl.txt 
> b/Documentation/devicetree/bindings/mips/cavium/uctl.txt
> new file mode 100644
> index 0000000..5dabe02
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/mips/cavium/uctl.txt
> @@ -0,0 +1,47 @@
> +* UCTL USB controller glue
> +
> +Properties:
> +- compatible: "cavium,octeon-6335-uctl"
> +
> +  Compatibility with all cn6XXX SOCs.
> +
> +- reg: The base address of the UCTL register bank.
> +
> +- #address-cells: Must be <2>.
> +
> +- #size-cells: Must be <2>.
> +
> +- ranges: Empty to signify direct mapping of the children.
> +
> +- refclk-frequency: A single cell containing the reference clock
> +  frequency in Hz.
> +
> +- refclk-type: A string describing the reference clock connection
> +  either "crystal" or "external".
> +
> +Example:
> +     uctl@118006f000000 {
> +             compatible = "cavium,octeon-6335-uctl";
> +             reg = <0x11800 0x6f000000 0x0 0x100>;
> +             ranges; /* Direct mapping */
> +             #address-cells = <2>;
> +             #size-cells = <2>;
> +             /* 12MHz, 24MHz and 48MHz allowed */
> +             refclk-frequency = <24000000>;
> +             /* Either "crystal" or "external" */
> +             refclk-type = "crystal";
> +
> +             ehci@16f0000000000 {
> +                     compatible = "cavium,octeon-6335-ehci","usb-ehci";
> +                     reg = <0x16f00 0x00000000 0x0 0x100>;
> +                     interrupts = <0 56>;
> +                     big-endian-regs;
> +             };
> +             ohci@16f0000000400 {
> +                     compatible = "cavium,octeon-6335-ohci","usb-ohci";
> +                     reg = <0x16f00 0x00000400 0x0 0x100>;
> +                     interrupts = <0 56>;
> +                     big-endian-regs;
> +             };
> +     };
> +
> diff --git a/Documentation/devicetree/bindings/net/cavium-mdio.txt 
> b/Documentation/devicetree/bindings/net/cavium-mdio.txt
> new file mode 100644
> index 0000000..04cb749
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/cavium-mdio.txt
> @@ -0,0 +1,27 @@
> +* System Management Interface (SMI) / MDIO
> +
> +Properties:
> +- compatible: "cavium,octeon-3860-mdio"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The base address of the MDIO bus controller register bank.
> +
> +- #address-cells: Must be <1>.
> +
> +- #size-cells: Must be <0>.  MDIO addresses have no size component.
> +
> +Typically an MDIO bus might have several children.
> +
> +Example:
> +     mdio@1180000001800 {
> +             compatible = "cavium,octeon-3860-mdio";
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +             reg = <0x11800 0x00001800 0x0 0x40>;
> +
> +             ethernet-phy@0 {
> +                     ...
> +                     reg = <0>;
> +             };
> +     };
> diff --git a/Documentation/devicetree/bindings/net/cavium-mix.txt 
> b/Documentation/devicetree/bindings/net/cavium-mix.txt
> new file mode 100644
> index 0000000..e4f9d3c
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/cavium-mix.txt
> @@ -0,0 +1,40 @@
> +* MIX Ethernet controller.
> +
> +Properties:
> +- compatible: "cavium,octeon-5750-mix"
> +
> +  Compatibility with all cn5XXX and cn6XXX SOCs populated with MIX
> +  devices.
> +
> +- reg: The base addresses of four separate register banks.  The first
> +  bank contains the MIX registers.  The second bank the corresponding
> +  AGL registers.  The third bank are the AGL registers shared by all
> +  MIX devices present.  The fourth bank is the AGL_PRT_CTL shared by
> +  all MIX devices present.
> +
> +- cell-index: A single cell specifying which portion of the shared
> +  register banks corresponds to this MIX device.
> +
> +- interrupts: Two interrupt specifiers.  The first is the MIX
> +  interrupt routing and the second the routing for the AGL interrupts.
> +
> +- mac-address: Optional, the MAC address to assign to the device.
> +
> +- local-mac-address: Optional, the MAC address to assign to the device
> +  if mac-address is not specified.
> +
> +- phy-handle: Optional, a phandle for the PHY device connected to this 
> device.
> +
> +Example:
> +     ethernet@1070000100800 {
> +             compatible = "cavium,octeon-5750-mix";
> +             reg = <0x10700 0x00100800 0x0 0x100>, /* MIX */
> +                   <0x11800 0xE0000800 0x0 0x300>, /* AGL */
> +                   <0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED  */
> +                   <0x11800 0xE0002008 0x0 0x8>;   /* AGL_PRT_CTL */
> +             cell-index = <1>;
> +             interrupts = <1 18>, < 1 46>;
> +             local-mac-address = [ 00 0f b7 10 63 54 ];
> +             phy-handle = <&phy1>;
> +     };
> +
> diff --git a/Documentation/devicetree/bindings/net/cavium-pip.txt 
> b/Documentation/devicetree/bindings/net/cavium-pip.txt
> new file mode 100644
> index 0000000..d4c53ba
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/net/cavium-pip.txt
> @@ -0,0 +1,98 @@
> +* PIP Ethernet nexus.
> +
> +The PIP Ethernet nexus can control several data packet input/output
> +devices.  The devices have a two level grouping scheme.  There may be
> +several interfaces, and each interface may have several ports.  These
> +ports might be an individual Ethernet PHY.
> +
> +
> +Properties for the PIP nexus:
> +- compatible: "cavium,octeon-3860-pip"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The base address of the PIP's register bank.
> +
> +- #address-cells: Must be <1>.
> +
> +- #size-cells: Must be <0>.
> +
> +Properties for PIP interfaces which is a child the PIP nexus:
> +- compatible: "cavium,octeon-3860-pip-interface"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The interface number.
> +
> +- #address-cells: Must be <1>.
> +
> +- #size-cells: Must be <0>.
> +
> +Properties for PIP port which is a child the PIP interface:
> +- compatible: "cavium,octeon-3860-pip-port"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The port number within the interface group.
> +
> +- mac-address: Optional, the MAC address to assign to the device.
> +
> +- local-mac-address: Optional, the MAC address to assign to the device
> +  if mac-address is not specified.
> +
> +- phy-handle: Optional, a phandle for the PHY device connected to this 
> device.
> +
> +Example:
> +
> +     pip@11800a0000000 {
> +             compatible = "cavium,octeon-3860-pip";
> +             #address-cells = <1>;
> +             #size-cells = <0>;
> +             reg = <0x11800 0xa0000000 0x0 0x2000>;
> +
> +             interface@0 {
> +                     compatible = "cavium,octeon-3860-pip-interface";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0>; /* interface */
> +
> +                     ethernet@0 {
> +                             compatible = "cavium,octeon-3860-pip-port";
> +                             reg = <0x0>; /* Port */
> +                             local-mac-address = [ 00 0f b7 10 63 60 ];
> +                             phy-handle = <&phy2>;
> +                     };
> +                     ethernet@1 {
> +                             compatible = "cavium,octeon-3860-pip-port";
> +                             reg = <0x1>; /* Port */
> +                             local-mac-address = [ 00 0f b7 10 63 61 ];
> +                             phy-handle = <&phy3>;
> +                     };
> +                     ethernet@2 {
> +                             compatible = "cavium,octeon-3860-pip-port";
> +                             reg = <0x2>; /* Port */
> +                             local-mac-address = [ 00 0f b7 10 63 62 ];
> +                             phy-handle = <&phy4>;
> +                     };
> +                     ethernet@3 {
> +                             compatible = "cavium,octeon-3860-pip-port";
> +                             reg = <0x3>; /* Port */
> +                             local-mac-address = [ 00 0f b7 10 63 63 ];
> +                             phy-handle = <&phy5>;
> +                     };
> +             };
> +
> +             interface@1 {
> +                     compatible = "cavium,octeon-3860-pip-interface";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <1>; /* interface */
> +
> +                     ethernet@0 {
> +                             compatible = "cavium,octeon-3860-pip-port";
> +                             reg = <0x0>; /* Port */
> +                             local-mac-address = [ 00 0f b7 10 63 64 ];
> +                             phy-handle = <&phy6>;
> +                     };
> +             };
> +     };
> diff --git a/Documentation/devicetree/bindings/serial/cavium-uart.txt 
> b/Documentation/devicetree/bindings/serial/cavium-uart.txt
> new file mode 100644
> index 0000000..87a6c37
> --- /dev/null
> +++ b/Documentation/devicetree/bindings/serial/cavium-uart.txt
> @@ -0,0 +1,19 @@
> +* Universal Asynchronous Receiver/Transmitter (UART)
> +
> +- compatible: "cavium,octeon-3860-uart"
> +
> +  Compatibility with all cn3XXX, cn5XXX and cn6XXX SOCs.
> +
> +- reg: The base address of the UART register bank.
> +
> +- interrupts: A single interrupt specifier.
> +
> +- current-speed: Optional, the current bit rate in bits per second.
> +
> +Example:
> +     uart1: serial@1180000000c00 {
> +             compatible = "cavium,octeon-3860-uart","ns16550";
> +             reg = <0x11800 0x00000c00 0x0 0x400>;
> +             current-speed = <115200>;
> +             interrupts = <0 35>;
> +     };
> diff --git a/arch/mips/cavium-octeon/.gitignore 
> b/arch/mips/cavium-octeon/.gitignore
> new file mode 100644
> index 0000000..39c9686
> --- /dev/null
> +++ b/arch/mips/cavium-octeon/.gitignore
> @@ -0,0 +1,2 @@
> +*.dtb.S
> +*.dtb
> diff --git a/arch/mips/cavium-octeon/Makefile 
> b/arch/mips/cavium-octeon/Makefile
> index 19eb043..1e37522 100644
> --- a/arch/mips/cavium-octeon/Makefile
> +++ b/arch/mips/cavium-octeon/Makefile
> @@ -15,3 +15,16 @@ obj-y += octeon-memcpy.o
>  obj-y += executive/
>  
>  obj-$(CONFIG_SMP)                     += smp.o
> +
> +DTS_FILES = octeon_3xxx.dts octeon_68xx.dts
> +DTB_FILES = $(patsubst %.dts, %.dtb, $(DTS_FILES))
> +
> +obj-y += $(patsubst %.dts, %.dtb.o, $(DTS_FILES))
> +
> +$(obj)/%.dtb: $(src)/%.dts FORCE
> +     $(call if_changed_dep,dtc)
> +
> +# Let's keep the .dtb files around in case we want to look at them.
> +.SECONDARY:  $(addprefix $(obj)/, $(DTB_FILES))

Shouldn't this be in common MIPS code?


> +
> +clean-files += $(DTB_FILES) $(patsubst %.dtb, %.dtb.S, $(DTB_FILES))
> diff --git a/arch/mips/cavium-octeon/octeon_3xxx.dts 
> b/arch/mips/cavium-octeon/octeon_3xxx.dts
> new file mode 100644
> index 0000000..e0fb0e3
> --- /dev/null
> +++ b/arch/mips/cavium-octeon/octeon_3xxx.dts
> @@ -0,0 +1,571 @@
> +/dts-v1/;
> +/*
> + * OCTEON 3XXX, 5XXX, 63XX device tree skeleton.
> + *
> + * This device tree is pruned and patched by early boot code before
> + * use.  Because of this, it contains a super-set of the available
> + * devices and properties.
> + */
> +/ {
> +     compatible = "cavium,octeon-3860";
> +     #address-cells = <2>;
> +     #size-cells = <2>;
> +     interrupt-parent = <&ciu>;
> +
> +     soc@0 {
> +             compatible = "simple-bus";
> +             #address-cells = <2>;
> +             #size-cells = <2>;
> +             ranges; /* Direct mapping */
> +
> +             ciu: interrupt-controller@1070000000000 {
> +                     compatible = "cavium,octeon-3860-ciu";
> +                     interrupt-controller;
> +                     /* Interrupts are specified by two parts:
> +                      * 1) Controller register (0 or 1)
> +                      * 2) Bit within the register (0..63)
> +                      */
> +                     #interrupt-cells = <2>;
> +                     reg = <0x10700 0x00000000 0x0 0x7000>;
> +             };
> +
> +             gpio: gpio-controller@1070000000800 {
> +                     #gpio-cells = <2>;
> +                     compatible = "cavium,octeon-3860-gpio";
> +                     reg = <0x10700 0x00000800 0x0 0x100>;
> +                     gpio-controller;
> +                     /* Interrupts are specified by two parts:
> +                      * 1) GPIO pin number (0..15)
> +                      * 2) Triggering (1 - edge rising
> +                      *                2 - edge falling
> +                      *                4 - level active high
> +                      *                8 - level active low)
> +                      */
> +                     interrupt-controller;
> +                     #interrupt-cells = <2>;
> +                     /* The GPIO pin connect to 16 consecutive CUI bits */
> +                     interrupts = <0 16>; /* <0 17> <0 18> <0 19>
> +                                  <0 20> <0 21> <0 22> <0 23>
> +                                  <0 24> <0 25> <0 26> <0 27>
> +                                  <0 28> <0 29> <0 30> <0 31>; */
> +             };
> +
> +             smi0: mdio@1180000001800 {
> +                     compatible = "cavium,octeon-3860-mdio";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0x00001800 0x0 0x40>;
> +
> +                     phy0: ethernet-phy@0 {
> +                             compatible = "marvell,88e1118";
> +                             marvell,reg-init =
> +                                     /* Fix rx and tx clock transition 
> timing */
> +                                     <2 0x15 0xffcf 0>, /* Reg 2,21 Clear 
> bits 4, 5 */
> +                                     /* Adjust LED drive. */
> +                                     <3 0x11 0 0x442a>, /* Reg 3,17 <- 0442a 
> */
> +                                     /* irq, blink-activity, blink-link */
> +                                     <3 0x10 0 0x0242>; /* Reg 3,16 <- 
> 0x0242 */
> +                             reg = <0>;
> +                     };
> +
> +                     phy1: ethernet-phy@1 {
> +                             compatible = "marvell,88e1118";
> +                             marvell,reg-init =
> +                                     /* Fix rx and tx clock transition 
> timing */
> +                                     <2 0x15 0xffcf 0>, /* Reg 2,21 Clear 
> bits 4, 5 */
> +                                     /* Adjust LED drive. */
> +                                     <3 0x11 0 0x442a>, /* Reg 3,17 <- 0442a 
> */
> +                                     /* irq, blink-activity, blink-link */
> +                                     <3 0x10 0 0x0242>; /* Reg 3,16 <- 
> 0x0242 */
> +                             reg = <1>;
> +                     };
> +
> +                     phy2: ethernet-phy@2 {
> +                             reg = <2>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy3: ethernet-phy@3 {
> +                             reg = <3>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy4: ethernet-phy@4 {
> +                             reg = <4>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy5: ethernet-phy@5 {
> +                             reg = <5>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +
> +                     phy6: ethernet-phy@6 {
> +                             reg = <6>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy7: ethernet-phy@7 {
> +                             reg = <7>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy8: ethernet-phy@8 {
> +                             reg = <8>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy9: ethernet-phy@9 {
> +                             reg = <9>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +             };
> +
> +             smi1: mdio@1180000001900 {
> +                     compatible = "cavium,octeon-3860-mdio";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0x00001900 0x0 0x40>;
> +
> +                     phy100: ethernet-phy@1 {
> +                             reg = <1>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                             interrupt-parent = <&gpio>;
> +                             interrupts = <12 8>; /* Pin 12, active low */
> +                     };
> +                     phy101: ethernet-phy@2 {
> +                             reg = <2>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                             interrupt-parent = <&gpio>;
> +                             interrupts = <12 8>; /* Pin 12, active low */
> +                     };
> +                     phy102: ethernet-phy@3 {
> +                             reg = <3>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                             interrupt-parent = <&gpio>;
> +                             interrupts = <12 8>; /* Pin 12, active low */
> +                     };
> +                     phy103: ethernet-phy@4 {
> +                             reg = <4>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                             interrupt-parent = <&gpio>;
> +                             interrupts = <12 8>; /* Pin 12, active low */
> +                     };
> +             };
> +
> +             mix0: ethernet@1070000100000 {
> +                     compatible = "cavium,octeon-5750-mix";
> +                     reg = <0x10700 0x00100000 0x0 0x100>, /* MIX */
> +                           <0x11800 0xE0000000 0x0 0x300>, /* AGL */
> +                           <0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED  */
> +                           <0x11800 0xE0002000 0x0 0x8>;   /* AGL_PRT_CTL */
> +                     cell-index = <0>;
> +                     interrupts = <0 62>, <1 46>;
> +                     local-mac-address = [ 00 00 00 00 00 00 ];
> +                     phy-handle = <&phy0>;
> +             };
> +
> +             mix1: ethernet@1070000100800 {
> +                     compatible = "cavium,octeon-5750-mix";
> +                     reg = <0x10700 0x00100800 0x0 0x100>, /* MIX */
> +                           <0x11800 0xE0000800 0x0 0x300>, /* AGL */
> +                           <0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED  */
> +                           <0x11800 0xE0002008 0x0 0x8>;   /* AGL_PRT_CTL */
> +                     cell-index = <1>;
> +                     interrupts = <1 18>, < 1 46>;
> +                     local-mac-address = [ 00 00 00 00 00 00 ];
> +                     phy-handle = <&phy1>;
> +             };
> +
> +             pip: pip@11800a0000000 {
> +                     compatible = "cavium,octeon-3860-pip";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0xa0000000 0x0 0x2000>;
> +
> +                     interface@0 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <0>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy2>;
> +                                     cavium,alt-phy-handle = <&phy100>;
> +                             };
> +                             ethernet@1 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x1>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy3>;
> +                                     cavium,alt-phy-handle = <&phy101>;
> +                             };
> +                             ethernet@2 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x2>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy4>;
> +                                     cavium,alt-phy-handle = <&phy102>;
> +                             };
> +                             ethernet@3 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x3>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy5>;
> +                                     cavium,alt-phy-handle = <&phy103>;
> +                             };
> +                             ethernet@4 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x4>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@5 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x5>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@6 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x6>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@7 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x7>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@8 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x8>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@9 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x9>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@a {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0xa>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@b {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0xb>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@c {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0xc>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@d {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0xd>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@e {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0xe>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                             ethernet@f {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0xf>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                     };
> +
> +                     interface@1 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <1>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy6>;
> +                             };
> +                             ethernet@1 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x1>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy7>;
> +                             };
> +                             ethernet@2 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x2>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy8>;
> +                             };
> +                             ethernet@3 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x3>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy9>;
> +                             };
> +                     };
> +             };
> +
> +             twsi0: i2c@1180000001000 {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     compatible = "cavium,octeon-3860-twsi";
> +                     reg = <0x11800 0x00001000 0x0 0x200>;
> +                     interrupts = <0 45>;
> +                     clock-frequency = <100000>;
> +
> +                     rtc@68 {
> +                             compatible = "dallas,ds1337";
> +                             reg = <0x68>;
> +                     };
> +                     tmp@4c {
> +                             compatible = "ti,tmp421";
> +                             reg = <0x4c>;
> +                     };
> +             };
> +
> +             twsi1: i2c@1180000001200 {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     compatible = "cavium,octeon-3860-twsi";
> +                     reg = <0x11800 0x00001200 0x0 0x200>;
> +                     interrupts = <0 59>;
> +                     clock-frequency = <100000>;
> +             };
> +
> +             uart0: serial@1180000000800 {
> +                     compatible = "cavium,octeon-3860-uart","ns16550";
> +                     reg = <0x11800 0x00000800 0x0 0x400>;
> +                     clock-frequency = <0>;
> +                     current-speed = <115200>;
> +                     reg-shift = <3>;
> +                     interrupts = <0 34>;
> +             };
> +
> +             uart1: serial@1180000000c00 {
> +                     compatible = "cavium,octeon-3860-uart","ns16550";
> +                     reg = <0x11800 0x00000c00 0x0 0x400>;
> +                     clock-frequency = <0>;
> +                     current-speed = <115200>;
> +                     reg-shift = <3>;
> +                     interrupts = <0 35>;
> +             };
> +
> +             uart2: serial@1180000000400 {
> +                     compatible = "cavium,octeon-3860-uart","ns16550";
> +                     reg = <0x11800 0x00000400 0x0 0x400>;
> +                     clock-frequency = <0>;
> +                     current-speed = <115200>;
> +                     reg-shift = <3>;
> +                     interrupts = <1 16>;
> +             };
> +
> +             bootbus: bootbus@1180000000000 {
> +                     compatible = "cavium,octeon-3860-bootbus";
> +                     reg = <0x11800 0x00000000 0x0 0x200>;
> +                     /* The chip select number and offset */
> +                     #address-cells = <2>;
> +                     /* The size of the chip select region */
> +                     #size-cells = <1>;
> +                     ranges = <0 0  0x0 0x1f400000  0xc00000>,
> +                              <1 0  0x10000 0x30000000  0>,
> +                              <2 0  0x10000 0x40000000  0>,
> +                              <3 0  0x10000 0x50000000  0>,
> +                              <4 0  0x0 0x1d020000  0x10000>,
> +                              <5 0  0x0 0x1d040000  0x10000>,
> +                              <6 0  0x0 0x1d050000  0x10000>,
> +                              <7 0  0x10000 0x90000000  0>;
> +
> +                     cavium,cs-config@0 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <0>;
> +                             cavium,t-adr  = <20>;
> +                             cavium,t-ce   = <60>;
> +                             cavium,t-oe   = <60>;
> +                             cavium,t-we   = <45>;
> +                             cavium,t-rd-hld = <35>;
> +                             cavium,t-wr-hld = <45>;
> +                             cavium,t-pause  = <0>;
> +                             cavium,t-wait   = <0>;
> +                             cavium,t-page   = <35>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,bus-width = <8>;
> +                     };
> +                     cavium,cs-config@4 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <4>;
> +                             cavium,t-adr  = <320>;
> +                             cavium,t-ce   = <320>;
> +                             cavium,t-oe   = <320>;
> +                             cavium,t-we   = <320>;
> +                             cavium,t-rd-hld = <320>;
> +                             cavium,t-wr-hld = <320>;
> +                             cavium,t-pause  = <320>;
> +                             cavium,t-wait   = <320>;
> +                             cavium,t-page   = <320>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,bus-width = <8>;
> +                     };
> +                     cavium,cs-config@5 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <5>;
> +                             cavium,t-adr  = <5>;
> +                             cavium,t-ce   = <300>;
> +                             cavium,t-oe   = <125>;
> +                             cavium,t-we   = <150>;
> +                             cavium,t-rd-hld = <100>;
> +                             cavium,t-wr-hld = <30>;
> +                             cavium,t-pause  = <0>;
> +                             cavium,t-wait   = <30>;
> +                             cavium,t-page   = <320>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,bus-width = <16>;
> +                     };
> +                     cavium,cs-config@6 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <6>;
> +                             cavium,t-adr  = <5>;
> +                             cavium,t-ce   = <300>;
> +                             cavium,t-oe   = <270>;
> +                             cavium,t-we   = <150>;
> +                             cavium,t-rd-hld = <100>;
> +                             cavium,t-wr-hld = <70>;
> +                             cavium,t-pause  = <0>;
> +                             cavium,t-wait   = <0>;
> +                             cavium,t-page   = <320>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,wait-mode;
> +                             cavium,bus-width = <16>;
> +                     };
> +
> +                     flash0: nor@0,0 {
> +                             compatible = "cfi-flash";
> +                             reg = <0 0 0x800000>;
> +                             #address-cells = <1>;
> +                             #size-cells = <1>;
> +                     };
> +
> +                     led0: led-display@4,0 {
> +                             compatible = "avago,hdsp-253x";
> +                             reg = <4 0x20 0x20>, <4 0 0x20>;
> +                     };
> +
> +                     cf0: compact-flash@5,0 {
> +                             compatible = "cavium,ebt3000-compact-flash";
> +                             reg = <5 0 0x10000>, <6 0 0x10000>;
> +                             cavium,bus-width = <16>;
> +                             cavium,true-ide;
> +                             cavium,dma-engine-handle = <&dma0>;
> +                     };
> +             };
> +
> +             dma0: dma-engine@1180000000100 {
> +                     compatible = "cavium,octeon-5750-bootbus-dma";
> +                     reg = <0x11800 0x00000100 0x0 0x8>;
> +                     interrupts = <0 63>;
> +             };
> +             dma1: dma-engine@1180000000108 {
> +                     compatible = "cavium,octeon-5750-bootbus-dma";
> +                     reg = <0x11800 0x00000108 0x0 0x8>;
> +                     interrupts = <0 63>;
> +             };
> +
> +             uctl: uctl@118006f000000 {
> +                     compatible = "cavium,octeon-6335-uctl";
> +                     reg = <0x11800 0x6f000000 0x0 0x100>;
> +                     ranges; /* Direct mapping */
> +                     #address-cells = <2>;
> +                     #size-cells = <2>;
> +                     /* 12MHz, 24MHz and 48MHz allowed */
> +                     refclk-frequency = <12000000>;
> +                     /* Either "crystal" or "external" */
> +                     refclk-type = "crystal";
> +
> +                     ehci@16f0000000000 {
> +                             compatible = 
> "cavium,octeon-6335-ehci","usb-ehci";
> +                             reg = <0x16f00 0x00000000 0x0 0x100>;
> +                             interrupts = <0 56>;
> +                             big-endian-regs;
> +                     };
> +                     ohci@16f0000000400 {
> +                             compatible = 
> "cavium,octeon-6335-ohci","usb-ohci";
> +                             reg = <0x16f00 0x00000400 0x0 0x100>;
> +                             interrupts = <0 56>;
> +                             big-endian-regs;
> +                     };
> +             };
> +     };
> +
> +     aliases {
> +             mix0 = &mix0;
> +             mix1 = &mix1;
> +             pip = &pip;
> +             smi0 = &smi0;
> +             smi1 = &smi1;
> +             twsi0 = &twsi0;
> +             twsi1 = &twsi1;
> +             uart0 = &uart0;
> +             uart1 = &uart1;
> +             uart2 = &uart2;
> +             flash0 = &flash0;
> +             cf0 = &cf0;
> +             uctl = &uctl;
> +             led0 = &led0;
> +     };
> + };
> diff --git a/arch/mips/cavium-octeon/octeon_68xx.dts 
> b/arch/mips/cavium-octeon/octeon_68xx.dts
> new file mode 100644
> index 0000000..bde6b23
> --- /dev/null
> +++ b/arch/mips/cavium-octeon/octeon_68xx.dts
> @@ -0,0 +1,625 @@
> +/dts-v1/;
> +/*
> + * OCTEON 68XX device tree skeleton.
> + *
> + * This device tree is pruned and patched by early boot code before
> + * use.  Because of this, it contains a super-set of the available
> + * devices and properties.
> + */
> +/ {
> +     compatible = "cavium,octeon-6880";
> +     #address-cells = <2>;
> +     #size-cells = <2>;
> +     interrupt-parent = <&ciu2>;
> +
> +     soc@0 {
> +             compatible = "simple-bus";
> +             #address-cells = <2>;
> +             #size-cells = <2>;
> +             ranges; /* Direct mapping */
> +
> +             ciu2: interrupt-controller@1070100000000 {
> +                     compatible = "cavium,octeon-6880-ciu2";
> +                     interrupt-controller;
> +                     /* Interrupts are specified by two parts:
> +                      * 1) Controller register (0 or 7)
> +                      * 2) Bit within the register (0..63)
> +                      */
> +                     #address-cells = <0>;
> +                     #interrupt-cells = <2>;
> +                     reg = <0x10701 0x00000000 0x0 0x4000000>;
> +             };
> +
> +             gpio: gpio-controller@1070000000800 {
> +                     #gpio-cells = <2>;
> +                     compatible = "cavium,octeon-3860-gpio";
> +                     reg = <0x10700 0x00000800 0x0 0x100>;
> +                     gpio-controller;
> +                     /* Interrupts are specified by two parts:
> +                      * 1) GPIO pin number (0..15)
> +                      * 2) Triggering (1 - edge rising
> +                      *                2 - edge falling
> +                      *                4 - level active high
> +                      *                8 - level active low)
> +                      */
> +                     interrupt-controller;
> +                     #interrupt-cells = <2>;
> +                     /* The GPIO pins connect to 16 consecutive CUI bits */
> +                     interrupts = <7 0>; /* <7 1> <7 2> <7 3>
> +                                  <7 4> <7 5> <7 6> <7 7>
> +                                  <7 8> <7 9> <7 10> <7 11>
> +                                  <7 12> <7 13> <7 14> <7 15>; */
> +             };
> +
> +             smi0: mdio@1180000003800 {
> +                     compatible = "cavium,octeon-3860-mdio";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0x00003800 0x0 0x40>;
> +
> +                     phy0: ethernet-phy@6 {
> +                             compatible = "marvell,88e1118";
> +                             marvell,reg-init =
> +                                     /* Fix rx and tx clock transition 
> timing */
> +                                     <2 0x15 0xffcf 0>, /* Reg 2,21 Clear 
> bits 4, 5 */
> +                                     /* Adjust LED drive. */
> +                                     <3 0x11 0 0x442a>, /* Reg 3,17 <- 0442a 
> */
> +                                     /* irq, blink-activity, blink-link */
> +                                     <3 0x10 0 0x0242>; /* Reg 3,16 <- 
> 0x0242 */
> +                             reg = <6>;
> +                     };
> +
> +                     phy1: ethernet-phy@1 {
> +                             cavium,qlm-trim = "4,sgmii";
> +                             reg = <1>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy2: ethernet-phy@2 {
> +                             cavium,qlm-trim = "4,sgmii";
> +                             reg = <2>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy3: ethernet-phy@3 {
> +                             cavium,qlm-trim = "4,sgmii";
> +                             reg = <3>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy4: ethernet-phy@4 {
> +                             cavium,qlm-trim = "4,sgmii";
> +                             reg = <4>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +             };
> +
> +             smi1: mdio@1180000003880 {
> +                     compatible = "cavium,octeon-3860-mdio";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0x00003880 0x0 0x40>;
> +
> +                     phy41: ethernet-phy@1 {
> +                             cavium,qlm-trim = "0,sgmii";
> +                             reg = <1>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy42: ethernet-phy@2 {
> +                             cavium,qlm-trim = "0,sgmii";
> +                             reg = <2>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy43: ethernet-phy@3 {
> +                             cavium,qlm-trim = "0,sgmii";
> +                             reg = <3>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy44: ethernet-phy@4 {
> +                             cavium,qlm-trim = "0,sgmii";
> +                             reg = <4>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +             };
> +
> +             smi2: mdio@1180000003900 {
> +                     compatible = "cavium,octeon-3860-mdio";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0x00003900 0x0 0x40>;
> +
> +                     phy21: ethernet-phy@1 {
> +                             cavium,qlm-trim = "2,sgmii";
> +                             reg = <1>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy22: ethernet-phy@2 {
> +                             cavium,qlm-trim = "2,sgmii";
> +                             reg = <2>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy23: ethernet-phy@3 {
> +                             cavium,qlm-trim = "2,sgmii";
> +                             reg = <3>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy24: ethernet-phy@4 {
> +                             cavium,qlm-trim = "2,sgmii";
> +                             reg = <4>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +             };
> +
> +             smi3: mdio@1180000003980 {
> +                     compatible = "cavium,octeon-3860-mdio";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0x00003980 0x0 0x40>;
> +
> +                     phy11: ethernet-phy@1 {
> +                             cavium,qlm-trim = "3,sgmii";
> +                             reg = <1>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy12: ethernet-phy@2 {
> +                             cavium,qlm-trim = "3,sgmii";
> +                             reg = <2>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy13: ethernet-phy@3 {
> +                             cavium,qlm-trim = "3,sgmii";
> +                             reg = <3>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +                     phy14: ethernet-phy@4 {
> +                             cavium,qlm-trim = "3,sgmii";
> +                             reg = <4>;
> +                             compatible = "marvell,88e1149r";
> +                             marvell,reg-init = <3 0x10 0 0x5777>,
> +                                     <3 0x11 0 0x00aa>,
> +                                     <3 0x12 0 0x4105>,
> +                                     <3 0x13 0 0x0a60>;
> +                     };
> +             };
> +
> +             mix0: ethernet@1070000100000 {
> +                     compatible = "cavium,octeon-5750-mix";
> +                     reg = <0x10700 0x00100000 0x0 0x100>, /* MIX */
> +                           <0x11800 0xE0000000 0x0 0x300>, /* AGL */
> +                           <0x11800 0xE0000400 0x0 0x400>, /* AGL_SHARED  */
> +                           <0x11800 0xE0002000 0x0 0x8>;   /* AGL_PRT_CTL */
> +                     cell-index = <0>;
> +                     interrupts = <6 40>, <6 32>;
> +                     local-mac-address = [ 00 00 00 00 00 00 ];
> +                     phy-handle = <&phy0>;
> +             };
> +
> +             pip: pip@11800a0000000 {
> +                     compatible = "cavium,octeon-3860-pip";
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     reg = <0x11800 0xa0000000 0x0 0x2000>;
> +
> +                     interface@4 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <0x4>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy1>;
> +                             };
> +                             ethernet@1 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x1>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy2>;
> +                             };
> +                             ethernet@2 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x2>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy3>;
> +                             };
> +                             ethernet@3 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x3>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy4>;
> +                             };
> +                     };
> +
> +                     interface@3 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <0x3>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy11>;
> +                             };
> +                             ethernet@1 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x1>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy12>;
> +                             };
> +                             ethernet@2 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x2>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy13>;
> +                             };
> +                             ethernet@3 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x3>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy14>;
> +                             };
> +                     };
> +
> +                     interface@2 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <0x2>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy21>;
> +                             };
> +                             ethernet@1 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x1>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy22>;
> +                             };
> +                             ethernet@2 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x2>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy23>;
> +                             };
> +                             ethernet@3 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x3>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy24>;
> +                             };
> +                     };
> +
> +                     interface@1 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <0x1>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                             };
> +                     };
> +
> +                     interface@0 {
> +                             compatible = "cavium,octeon-3860-pip-interface";
> +                             #address-cells = <1>;
> +                             #size-cells = <0>;
> +                             reg = <0x0>; /* interface */
> +
> +                             ethernet@0 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x0>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy41>;
> +                             };
> +                             ethernet@1 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x1>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy42>;
> +                             };
> +                             ethernet@2 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x2>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy43>;
> +                             };
> +                             ethernet@3 {
> +                                     compatible = 
> "cavium,octeon-3860-pip-port";
> +                                     reg = <0x3>; /* Port */
> +                                     local-mac-address = [ 00 00 00 00 00 00 
> ];
> +                                     phy-handle = <&phy44>;
> +                             };
> +                     };
> +             };
> +
> +             twsi0: i2c@1180000001000 {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     compatible = "cavium,octeon-3860-twsi";
> +                     reg = <0x11800 0x00001000 0x0 0x200>;
> +                     interrupts = <3 32>;
> +                     clock-frequency = <100000>;
> +
> +                     rtc@68 {
> +                             compatible = "dallas,ds1337";
> +                             reg = <0x68>;
> +                     };
> +                     tmp@4c {
> +                             compatible = "ti,tmp421";
> +                             reg = <0x4c>;
> +                     };
> +             };
> +
> +             twsi1: i2c@1180000001200 {
> +                     #address-cells = <1>;
> +                     #size-cells = <0>;
> +                     compatible = "cavium,octeon-3860-twsi";
> +                     reg = <0x11800 0x00001200 0x0 0x200>;
> +                     interrupts = <3 33>;
> +                     clock-frequency = <100000>;
> +             };
> +
> +             uart0: serial@1180000000800 {
> +                     compatible = "cavium,octeon-3860-uart","ns16550";
> +                     reg = <0x11800 0x00000800 0x0 0x400>;
> +                     clock-frequency = <0>;
> +                     current-speed = <115200>;
> +                     reg-shift = <3>;
> +                     interrupts = <3 36>;
> +             };
> +
> +             uart1: serial@1180000000c00 {
> +                     compatible = "cavium,octeon-3860-uart","ns16550";
> +                     reg = <0x11800 0x00000c00 0x0 0x400>;
> +                     clock-frequency = <0>;
> +                     current-speed = <115200>;
> +                     reg-shift = <3>;
> +                     interrupts = <3 37>;
> +             };
> +
> +             bootbus: bootbus@1180000000000 {
> +                     compatible = "cavium,octeon-3860-bootbus";
> +                     reg = <0x11800 0x00000000 0x0 0x200>;
> +                     /* The chip select number and offset */
> +                     #address-cells = <2>;
> +                     /* The size of the chip select region */
> +                     #size-cells = <1>;
> +                     ranges = <0 0  0       0x1f400000  0xc00000>,
> +                              <1 0  0x10000 0x30000000  0>,
> +                              <2 0  0x10000 0x40000000  0>,
> +                              <3 0  0x10000 0x50000000  0>,
> +                              <4 0  0       0x1d020000  0x10000>,
> +                              <5 0  0       0x1d040000  0x10000>,
> +                              <6 0  0       0x1d050000  0x10000>,
> +                              <7 0  0x10000 0x90000000  0>;
> +
> +                     cavium,cs-config@0 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <0>;
> +                             cavium,t-adr  = <10>;
> +                             cavium,t-ce   = <50>;
> +                             cavium,t-oe   = <50>;
> +                             cavium,t-we   = <35>;
> +                             cavium,t-rd-hld = <25>;
> +                             cavium,t-wr-hld = <35>;
> +                             cavium,t-pause  = <0>;
> +                             cavium,t-wait   = <300>;
> +                             cavium,t-page   = <25>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,bus-width = <8>;
> +                     };
> +                     cavium,cs-config@4 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <4>;
> +                             cavium,t-adr  = <320>;
> +                             cavium,t-ce   = <320>;
> +                             cavium,t-oe   = <320>;
> +                             cavium,t-we   = <320>;
> +                             cavium,t-rd-hld = <320>;
> +                             cavium,t-wr-hld = <320>;
> +                             cavium,t-pause  = <320>;
> +                             cavium,t-wait   = <320>;
> +                             cavium,t-page   = <320>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,bus-width = <8>;
> +                     };
> +                     cavium,cs-config@5 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <5>;
> +                             cavium,t-adr  = <0>;
> +                             cavium,t-ce   = <300>;
> +                             cavium,t-oe   = <125>;
> +                             cavium,t-we   = <150>;
> +                             cavium,t-rd-hld = <100>;
> +                             cavium,t-wr-hld = <300>;
> +                             cavium,t-pause  = <0>;
> +                             cavium,t-wait   = <300>;
> +                             cavium,t-page   = <310>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,bus-width = <16>;
> +                     };
> +                     cavium,cs-config@6 {
> +                             compatible = 
> "cavium,octeon-3860-bootbus-config";
> +                             cavium,cs-index = <6>;
> +                             cavium,t-adr  = <0>;
> +                             cavium,t-ce   = <30>;
> +                             cavium,t-oe   = <125>;
> +                             cavium,t-we   = <150>;
> +                             cavium,t-rd-hld = <100>;
> +                             cavium,t-wr-hld = <30>;
> +                             cavium,t-pause  = <0>;
> +                             cavium,t-wait   = <30>;
> +                             cavium,t-page   = <310>;
> +                             cavium,t-rd-dly = <0>;
> +
> +                             cavium,pages     = <0>;
> +                             cavium,wait-mode;
> +                             cavium,bus-width = <16>;
> +                     };
> +
> +                     flash0: nor@0,0 {
> +                             compatible = "cfi-flash";
> +                             reg = <0 0 0x800000>;
> +                             #address-cells = <1>;
> +                             #size-cells = <1>;
> +
> +                             partition@0 {
> +                                     label = "bootloader";
> +                                     reg = <0 0x200000>;
> +                                     read-only;
> +                             };
> +                             partition@200000 {
> +                                     label = "kernel";
> +                                     reg = <0x200000 0x200000>;
> +                             };
> +                             partition@400000 {
> +                                     label = "cramfs";
> +                                     reg = <0x400000 0x3fe000>;
> +                             };
> +                             partition@7fe000 {
> +                                     label = "environment";
> +                                     reg = <0x7fe000 0x2000>;
> +                                     read-only;
> +                             };
> +                     };
> +
> +                     led0: led-display@4,0 {
> +                             compatible = "avago,hdsp-253x";
> +                             reg = <4 0x20 0x20>, <4 0 0x20>;
> +                     };
> +
> +                     compact-flash@5,0 {
> +                             compatible = "cavium,ebt3000-compact-flash";
> +                             reg = <5 0 0x10000>, <6 0 0x10000>;
> +                             cavium,bus-width = <16>;
> +                             cavium,true-ide;
> +                             cavium,dma-engine-handle = <&dma0>;
> +                     };
> +             };
> +
> +             dma0: dma-engine@1180000000100 {
> +                     compatible = "cavium,octeon-5750-bootbus-dma";
> +                     reg = <0x11800 0x00000100 0x0 0x8>;
> +                     interrupts = <0 63>;
> +             };
> +             dma1: dma-engine@1180000000108 {
> +                     compatible = "cavium,octeon-5750-bootbus-dma";
> +                     reg = <0x11800 0x00000108 0x0 0x8>;
> +                     interrupts = <0 63>;
> +             };
> +
> +             uctl: uctl@118006f000000 {
> +                     compatible = "cavium,octeon-6335-uctl";
> +                     reg = <0x11800 0x6f000000 0x0 0x100>;
> +                     ranges; /* Direct mapping */
> +                     #address-cells = <2>;
> +                     #size-cells = <2>;
> +                     /* 12MHz, 24MHz and 48MHz allowed */
> +                     refclk-frequency = <12000000>;
> +                     /* Either "crystal" or "external" */
> +                     refclk-type = "crystal";
> +
> +                     ehci@16f0000000000 {
> +                             compatible = 
> "cavium,octeon-6335-ehci","usb-ehci";
> +                             reg = <0x16f00 0x00000000 0x0 0x100>;
> +                             interrupts = <3 44>;
> +                             big-endian-regs;
> +                     };
> +                     ohci@16f0000000400 {
> +                             compatible = 
> "cavium,octeon-6335-ohci","usb-ohci";
> +                             reg = <0x16f00 0x00000400 0x0 0x100>;
> +                             interrupts = <3 44>;
> +                             big-endian-regs;
> +                     };
> +             };
> +     };
> +
> +     aliases {
> +             mix0 = &mix0;
> +             pip = &pip;
> +             smi0 = &smi0;
> +             smi1 = &smi1;
> +             smi2 = &smi2;
> +             smi3 = &smi3;
> +             twsi0 = &twsi0;
> +             twsi1 = &twsi1;
> +             uart0 = &uart0;
> +             uart1 = &uart1;
> +             uctl = &uctl;
> +             led0 = &led0;
> +             flash0 = &flash0;
> +     };
> + };


<Prev in Thread] Current Thread [Next in Thread>