powerpc/corenet: add support for the kmcent2 board
authorValentin Longchamp <valentin.longchamp@keymile.com>
Thu, 15 Dec 2016 13:22:28 +0000 (14:22 +0100)
committerScott Wood <oss@buserror.net>
Wed, 25 Jan 2017 08:38:48 +0000 (02:38 -0600)
This board is built around Freescale's T1040 SoC.

The peripherals used by this design are:
- DDR3 RAM with SPD support
- parallel NOR Flash as boot medium
- 1 PCIe bus (PCIe1 x1)
- 3 FMAN Ethernet devices (FMAN1 DTSEC1/2/5)
- 4 IFC bus devices:
  - NOR flash
  - NAND flash
  - QRIO reset/power mgmt CPLD
  - BFTIC chassis management CPLD
- 2 I2C buses
- 1 SPI bus
- HDLC bus with the QE's UCC1
- last but not least, the mandatory serial port

The board can be used with the corenet32_smp_defconfig.

Signed-off-by: Valentin Longchamp <valentin.longchamp@keymile.com>
Signed-off-by: Scott Wood <oss@buserror.net>
arch/powerpc/boot/dts/fsl/kmcent2.dts [new file with mode: 0644]
arch/powerpc/platforms/85xx/corenet_generic.c

diff --git a/arch/powerpc/boot/dts/fsl/kmcent2.dts b/arch/powerpc/boot/dts/fsl/kmcent2.dts
new file mode 100644 (file)
index 0000000..47afa43
--- /dev/null
@@ -0,0 +1,303 @@
+/*
+ * Keymile kmcent2 Device Tree Source, based on T1040RDB DTS
+ *
+ * (C) Copyright 2016
+ * Valentin Longchamp, Keymile AG, valentin.longchamp@keymile.com
+ *
+ * Copyright 2014 - 2015 Freescale Semiconductor Inc.
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under  the terms of  the GNU General  Public License as published by the
+ * Free Software Foundation;  either version 2 of the  License, or (at your
+ * option) any later version.
+ */
+
+/include/ "t104xsi-pre.dtsi"
+
+/ {
+       model = "keymile,kmcent2";
+       compatible = "keymile,kmcent2";
+
+       aliases {
+               front_phy = &front_phy;
+       };
+
+       reserved-memory {
+               #address-cells = <2>;
+               #size-cells = <2>;
+               ranges;
+
+               bman_fbpr: bman-fbpr {
+                       size = <0 0x1000000>;
+                       alignment = <0 0x1000000>;
+               };
+               qman_fqd: qman-fqd {
+                       size = <0 0x400000>;
+                       alignment = <0 0x400000>;
+               };
+               qman_pfdr: qman-pfdr {
+                       size = <0 0x2000000>;
+                       alignment = <0 0x2000000>;
+               };
+       };
+
+       ifc: localbus@ffe124000 {
+               reg = <0xf 0xfe124000 0 0x2000>;
+               ranges = <0 0 0xf 0xe8000000 0x04000000
+                         1 0 0xf 0xfa000000 0x00010000
+                         2 0 0xf 0xfb000000 0x00010000
+                         4 0 0xf 0xc0000000 0x08000000
+                         6 0 0xf 0xd0000000 0x08000000
+                         7 0 0xf 0xd8000000 0x08000000>;
+
+               nor@0,0 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "cfi-flash";
+                       reg = <0x0 0x0 0x04000000>;
+                       bank-width = <2>;
+                       device-width = <2>;
+               };
+
+               nand@1,0 {
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+                       compatible = "fsl,ifc-nand";
+                       reg = <0x1 0x0 0x10000>;
+               };
+
+               board-control@2,0 {
+                       compatible = "keymile,qriox";
+                       reg = <0x2 0x0 0x80>;
+               };
+
+               chassis-mgmt@6,0 {
+                       compatible = "keymile,bfticu";
+                       reg = <6 0 0x100>;
+                       interrupt-controller;
+                       interrupt-parent = <&mpic>;
+                       interrupts = <11 1 0 0>;
+                       #interrupt-cells = <1>;
+               };
+
+       };
+
+       memory {
+               device_type = "memory";
+       };
+
+       dcsr: dcsr@f00000000 {
+               ranges = <0x00000000 0xf 0x00000000 0x01072000>;
+       };
+
+       bportals: bman-portals@ff4000000 {
+               ranges = <0x0 0xf 0xf4000000 0x2000000>;
+       };
+
+       qportals: qman-portals@ff6000000 {
+               ranges = <0x0 0xf 0xf6000000 0x2000000>;
+       };
+
+       soc: soc@ffe000000 {
+               ranges = <0x00000000 0xf 0xfe000000 0x1000000>;
+               reg = <0xf 0xfe000000 0 0x00001000>;
+
+               spi@110000 {
+                       network-clock@1 {
+                               compatible = "zarlink,zl30364";
+                               reg = <1>;
+                               spi-max-frequency = <1000000>;
+                       };
+               };
+
+               sdhc@114000 {
+                       status = "disabled";
+               };
+
+               i2c@118000 {
+                       clock-frequency = <100000>;
+
+                       mux@70 {
+                               compatible = "nxp,pca9547";
+                               reg = <0x70>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               i2c-mux-idle-disconnect;
+
+                               i2c@0 {
+                                       reg = <0>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       eeprom@54 {
+                                               compatible = "24c02";
+                                               reg = <0x54>;
+                                               pagesize = <2>;
+                                               read-only;
+                                               label = "ddr3-spd";
+                                       };
+                               };
+
+                               i2c@7 {
+                                       reg = <7>;
+                                       #address-cells = <1>;
+                                       #size-cells = <0>;
+
+                                       temp-sensor@48 {
+                                               compatible = "national,lm75";
+                                               reg = <0x48>;
+                                               label = "SENSOR_0";
+                                       };
+                                       temp-sensor@4a {
+                                               compatible = "national,lm75";
+                                               reg = <0x4a>;
+                                               label = "SENSOR_2";
+                                       };
+                                       temp-sensor@4b {
+                                               compatible = "national,lm75";
+                                               reg = <0x4b>;
+                                               label = "SENSOR_3";
+                                       };
+                               };
+                       };
+               };
+
+               i2c@118100 {
+                       clock-frequency = <100000>;
+
+                       eeprom@50 {
+                               compatible = "atmel,24c08";
+                               reg = <0x50>;
+                               pagesize = <16>;
+                       };
+
+                       eeprom@54 {
+                               compatible = "atmel,24c08";
+                               reg = <0x54>;
+                               pagesize = <16>;
+                       };
+               };
+
+               i2c@119000 {
+                       status = "disabled";
+               };
+
+               i2c@119100 {
+                       status = "disabled";
+               };
+
+               serial2: serial@11d500 {
+                       status = "disabled";
+               };
+
+               serial3: serial@11d600 {
+                       status = "disabled";
+               };
+
+               usb0: usb@210000 {
+                       status = "disabled";
+               };
+               usb1: usb@211000 {
+                       status = "disabled";
+               };
+
+               display@180000 {
+                       status = "disabled";
+               };
+
+               sata@220000 {
+                       status = "disabled";
+               };
+               sata@221000 {
+                       status = "disabled";
+               };
+
+               fman@400000 {
+                       ethernet@e0000 {
+                               fixed-link = <0 1 1000 0 0>;
+                               phy-connection-type = "sgmii";
+                       };
+
+                       ethernet@e2000 {
+                               fixed-link = <1 1 1000 0 0>;
+                               phy-connection-type = "sgmii";
+                       };
+
+                       ethernet@e4000 {
+                               status = "disabled";
+                       };
+
+                       ethernet@e6000 {
+                               status = "disabled";
+                       };
+
+                       ethernet@e8000 {
+                               phy-handle = <&front_phy>;
+                               phy-connection-type = "rgmii";
+                       };
+
+                       mdio0: mdio@fc000 {
+                               front_phy: ethernet-phy@11 {
+                                       reg = <0x11>;
+                               };
+                       };
+               };
+       };
+
+
+       pci0: pcie@ffe240000 {
+               reg = <0xf 0xfe240000 0 0x10000>;
+               ranges = <0x02000000 0 0xe0000000 0xc 0x00000000 0x0 0x20000000
+                         0x01000000 0 0x00000000 0xf 0xf8000000 0x0 0x00010000>;
+               pcie@0 {
+                       ranges = <0x02000000 0 0xe0000000
+                                 0x02000000 0 0xe0000000
+                                 0 0x20000000
+
+                                 0x01000000 0 0x00000000
+                                 0x01000000 0 0x00000000
+                                 0 0x00010000>;
+               };
+       };
+
+       pci1: pcie@ffe250000 {
+               status = "disabled";
+       };
+
+       pci2: pcie@ffe260000 {
+               status = "disabled";
+       };
+
+       pci3: pcie@ffe270000 {
+               status = "disabled";
+       };
+
+       qe: qe@ffe140000 {
+               ranges = <0x0 0xf 0xfe140000 0x40000>;
+               reg = <0xf 0xfe140000 0 0x480>;
+               brg-frequency = <0>;
+               bus-frequency = <0>;
+
+               si1: si@700 {
+                       compatible = "fsl,t1040-qe-si";
+                       reg = <0x700 0x80>;
+               };
+
+               siram1: siram@1000 {
+                       compatible = "fsl,t1040-qe-siram";
+                       reg = <0x1000 0x800>;
+               };
+
+               ucc_hdlc: ucc@2000 {
+                       device_type = "hdlc";
+                       compatible = "fsl,ucc-hdlc";
+                       rx-clock-name = "clk9";
+                       tx-clock-name = "clk9";
+                       fsl,tx-timeslot-mask = <0xfffffffe>;
+                       fsl,rx-timeslot-mask = <0xfffffffe>;
+                       fsl,siram-entry-id = <0>;
+               };
+       };
+};
+
+#include "t1040si-post.dtsi"
index 6c0ba75..ac191a7 100644 (file)
@@ -157,6 +157,7 @@ static const char * const boards[] __initconst = {
        "fsl,T1040RDB",
        "fsl,T1042RDB",
        "fsl,T1042RDB_PI",
+       "keymile,kmcent2",
        "keymile,kmcoge4",
        "varisys,CYRUS",
        NULL