mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-12 20:56:46 +07:00
15f8c604a7
The way the current CPM binding describes available multi-user (a.k.a. dual-ported) RAM doesn't work well when there are multiple free regions, and it doesn't work at all if the region doesn't begin at the start of the muram area (as the hardware needs to be programmed with offsets into this area). The latter situation can happen with SMC UARTs on CPM2, as its parameter RAM is relocatable, u-boot puts it at zero, and the kernel doesn't support moving it. It is now described with a muram node, similar to QE. The current CPM binding is sufficiently recent (i.e. never appeared in an official release) that compatibility with existing device trees is not an issue. The code supporting the new binding is shared between cpm1 and cpm2, rather than remain separated. QE should be able to use this code as well, once minor fixes are made to its device trees. Signed-off-by: Scott Wood <scottwood@freescale.com> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
215 lines
4.6 KiB
Plaintext
215 lines
4.6 KiB
Plaintext
/*
|
|
* EP88xC Device Tree Source
|
|
*
|
|
* Copyright 2006 MontaVista Software, Inc.
|
|
* Copyright 2007 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.
|
|
*/
|
|
|
|
|
|
/ {
|
|
model = "EP88xC";
|
|
compatible = "fsl,ep88xc";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
|
|
cpus {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
PowerPC,885@0 {
|
|
device_type = "cpu";
|
|
reg = <0>;
|
|
d-cache-line-size = <d#16>;
|
|
i-cache-line-size = <d#16>;
|
|
d-cache-size = <d#8192>;
|
|
i-cache-size = <d#8192>;
|
|
timebase-frequency = <0>;
|
|
bus-frequency = <0>;
|
|
clock-frequency = <0>;
|
|
interrupts = <f 2>; // decrementer interrupt
|
|
interrupt-parent = <&PIC>;
|
|
};
|
|
};
|
|
|
|
memory {
|
|
device_type = "memory";
|
|
reg = <0 0>;
|
|
};
|
|
|
|
localbus@fa200100 {
|
|
compatible = "fsl,mpc885-localbus", "fsl,pq1-localbus";
|
|
#address-cells = <2>;
|
|
#size-cells = <1>;
|
|
reg = <fa200100 40>;
|
|
|
|
ranges = <
|
|
0 0 fc000000 04000000
|
|
3 0 fa000000 01000000
|
|
>;
|
|
|
|
flash@0,2000000 {
|
|
compatible = "cfi-flash";
|
|
reg = <0 2000000 2000000>;
|
|
bank-width = <4>;
|
|
device-width = <2>;
|
|
};
|
|
|
|
board-control@3,400000 {
|
|
reg = <3 400000 10>;
|
|
compatible = "fsl,ep88xc-bcsr";
|
|
};
|
|
};
|
|
|
|
soc@fa200000 {
|
|
compatible = "fsl,mpc885", "fsl,pq1-soc";
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
device_type = "soc";
|
|
ranges = <0 fa200000 00004000>;
|
|
bus-frequency = <0>;
|
|
|
|
// Temporary -- will go away once kernel uses ranges for get_immrbase().
|
|
reg = <fa200000 4000>;
|
|
|
|
mdio@e00 {
|
|
compatible = "fsl,mpc885-fec-mdio", "fsl,pq1-fec-mdio";
|
|
reg = <e00 188>;
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
|
|
PHY0: ethernet-phy@0 {
|
|
reg = <0>;
|
|
device_type = "ethernet-phy";
|
|
};
|
|
|
|
PHY1: ethernet-phy@1 {
|
|
reg = <1>;
|
|
device_type = "ethernet-phy";
|
|
};
|
|
};
|
|
|
|
ethernet@e00 {
|
|
device_type = "network";
|
|
compatible = "fsl,mpc885-fec-enet",
|
|
"fsl,pq1-fec-enet";
|
|
reg = <e00 188>;
|
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
|
interrupts = <3 1>;
|
|
interrupt-parent = <&PIC>;
|
|
phy-handle = <&PHY0>;
|
|
linux,network-index = <0>;
|
|
};
|
|
|
|
ethernet@1e00 {
|
|
device_type = "network";
|
|
compatible = "fsl,mpc885-fec-enet",
|
|
"fsl,pq1-fec-enet";
|
|
reg = <1e00 188>;
|
|
local-mac-address = [ 00 00 00 00 00 00 ];
|
|
interrupts = <7 1>;
|
|
interrupt-parent = <&PIC>;
|
|
phy-handle = <&PHY1>;
|
|
linux,network-index = <1>;
|
|
};
|
|
|
|
PIC: interrupt-controller@0 {
|
|
interrupt-controller;
|
|
#interrupt-cells = <2>;
|
|
reg = <0 24>;
|
|
compatible = "fsl,mpc885-pic", "fsl,pq1-pic";
|
|
};
|
|
|
|
pcmcia@80 {
|
|
#address-cells = <3>;
|
|
#interrupt-cells = <1>;
|
|
#size-cells = <2>;
|
|
compatible = "fsl,pq-pcmcia";
|
|
device_type = "pcmcia";
|
|
reg = <80 80>;
|
|
interrupt-parent = <&PIC>;
|
|
interrupts = <d 1>;
|
|
};
|
|
|
|
cpm@9c0 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
compatible = "fsl,mpc885-cpm", "fsl,cpm1";
|
|
command-proc = <9c0>;
|
|
interrupts = <0>; // cpm error interrupt
|
|
interrupt-parent = <&CPM_PIC>;
|
|
reg = <9c0 40>;
|
|
ranges;
|
|
|
|
muram@2000 {
|
|
#address-cells = <1>;
|
|
#size-cells = <1>;
|
|
ranges = <0 2000 2000>;
|
|
|
|
data@0 {
|
|
compatible = "fsl,cpm-muram-data";
|
|
reg = <0 1c00>;
|
|
};
|
|
};
|
|
|
|
brg@9f0 {
|
|
compatible = "fsl,mpc885-brg",
|
|
"fsl,cpm1-brg",
|
|
"fsl,cpm-brg";
|
|
reg = <9f0 10>;
|
|
};
|
|
|
|
CPM_PIC: interrupt-controller@930 {
|
|
interrupt-controller;
|
|
#interrupt-cells = <1>;
|
|
interrupts = <5 2 0 2>;
|
|
interrupt-parent = <&PIC>;
|
|
reg = <930 20>;
|
|
compatible = "fsl,mpc885-cpm-pic",
|
|
"fsl,cpm1-pic";
|
|
};
|
|
|
|
// MON-1
|
|
serial@a80 {
|
|
device_type = "serial";
|
|
compatible = "fsl,mpc885-smc-uart",
|
|
"fsl,cpm1-smc-uart";
|
|
reg = <a80 10 3e80 40>;
|
|
interrupts = <4>;
|
|
interrupt-parent = <&CPM_PIC>;
|
|
fsl,cpm-brg = <1>;
|
|
fsl,cpm-command = <0090>;
|
|
linux,planetcore-label = "SMC1";
|
|
};
|
|
|
|
// SER-1
|
|
serial@a20 {
|
|
device_type = "serial";
|
|
compatible = "fsl,mpc885-scc-uart",
|
|
"fsl,cpm1-scc-uart";
|
|
reg = <a20 20 3d00 80>;
|
|
interrupts = <1d>;
|
|
interrupt-parent = <&CPM_PIC>;
|
|
fsl,cpm-brg = <2>;
|
|
fsl,cpm-command = <0040>;
|
|
linux,planetcore-label = "SCC2";
|
|
};
|
|
|
|
usb@a00 {
|
|
#address-cells = <1>;
|
|
#size-cells = <0>;
|
|
compatible = "fsl,mpc885-usb",
|
|
"fsl,cpm1-usb";
|
|
reg = <a00 18 1c00 80>;
|
|
interrupt-parent = <&CPM_PIC>;
|
|
interrupts = <1e>;
|
|
fsl,cpm-command = <0000>;
|
|
};
|
|
};
|
|
};
|
|
};
|