mirror of
https://github.com/edk2-porting/linux-next.git
synced 2024-12-21 03:33:59 +08:00
Merge remote-tracking branch 'agust/next' into next
From Anatolij Gustschin: << There are some changes for mpc5121 generic platform code to support mpc5125 SoC and DTS files for ac14xx and MPC5125-TWR boards. >>
This commit is contained in:
commit
28bf41a1fe
392
arch/powerpc/boot/dts/ac14xx.dts
Normal file
392
arch/powerpc/boot/dts/ac14xx.dts
Normal file
@ -0,0 +1,392 @@
|
||||
/*
|
||||
* Device Tree Source for the MPC5121e based ac14xx board
|
||||
*
|
||||
* Copyright 2012 Anatolij Gustschin <agust@denx.de>
|
||||
*
|
||||
* 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/ "mpc5121.dtsi"
|
||||
|
||||
/ {
|
||||
model = "ac14xx";
|
||||
compatible = "ifm,ac14xx", "fsl,mpc5121";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
aliases {
|
||||
serial0 = &serial0;
|
||||
serial1 = &serial7;
|
||||
spi4 = &spi4;
|
||||
spi5 = &spi5;
|
||||
};
|
||||
|
||||
cpus {
|
||||
PowerPC,5121@0 {
|
||||
timebase-frequency = <40000000>; /* 40 MHz (csb/4) */
|
||||
bus-frequency = <160000000>; /* 160 MHz csb bus */
|
||||
clock-frequency = <400000000>; /* 400 MHz ppc core */
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
reg = <0x00000000 0x10000000>; /* 256MB at 0 */
|
||||
};
|
||||
|
||||
nfc@40000000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
localbus@80000020 {
|
||||
ranges = <0x0 0x0 0xfc000000 0x04000000 /* CS0: NOR flash */
|
||||
0x1 0x0 0xe0000000 0x00010000 /* CS1: FRAM */
|
||||
0x2 0x0 0xe0100000 0x00080000 /* CS2: asi1 */
|
||||
0x3 0x0 0xe0300000 0x00020000 /* CS3: comm */
|
||||
0x5 0x0 0xe0400000 0x00010000 /* CS5: safety */
|
||||
0x6 0x0 0xe0200000 0x00080000>; /* CS6: asi2 */
|
||||
|
||||
flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0x00000000 0x04000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
bank-width = <2>;
|
||||
device-width = <2>;
|
||||
|
||||
partition@0 {
|
||||
label = "dtb-kernel-production";
|
||||
reg = <0x00000000 0x00400000>;
|
||||
};
|
||||
partition@1 {
|
||||
label = "filesystem-production";
|
||||
reg = <0x00400000 0x03400000>;
|
||||
};
|
||||
|
||||
partition@2 {
|
||||
label = "recovery";
|
||||
reg = <0x03800000 0x00700000>;
|
||||
};
|
||||
|
||||
partition@3 {
|
||||
label = "uboot-code";
|
||||
reg = <0x03f00000 0x00040000>;
|
||||
};
|
||||
partition@4 {
|
||||
label = "uboot-env1";
|
||||
reg = <0x03f40000 0x00020000>;
|
||||
};
|
||||
partition@5 {
|
||||
label = "uboot-env2";
|
||||
reg = <0x03f60000 0x00020000>;
|
||||
};
|
||||
};
|
||||
|
||||
fram@1,0 {
|
||||
compatible = "ifm,ac14xx-fram", "linux,uio-pdrv-genirq";
|
||||
reg = <1 0x00000000 0x00010000>;
|
||||
};
|
||||
|
||||
asi@2,0 {
|
||||
/* masters mapping: CS, CS offset, size */
|
||||
reg = <2 0x00000000 0x00080000
|
||||
6 0x00000000 0x00080000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "ifm,ac14xx-asi-fpga";
|
||||
gpios = <
|
||||
&gpio_pic 26 0 /* prog */
|
||||
&gpio_pic 27 0 /* done */
|
||||
&gpio_pic 10 0 /* reset */
|
||||
>;
|
||||
|
||||
master@1 {
|
||||
interrupts = <20 0x2>;
|
||||
interrupt-parent = <&gpio_pic>;
|
||||
chipselect = <2 0x00009000 0x00009100>;
|
||||
label = "AS-i master 1";
|
||||
};
|
||||
|
||||
master@2 {
|
||||
interrupts = <21 0x2>;
|
||||
interrupt-parent = <&gpio_pic>;
|
||||
chipselect = <6 0x00009000 0x00009100>;
|
||||
label = "AS-i master 2";
|
||||
};
|
||||
};
|
||||
|
||||
netx@3,0 {
|
||||
compatible = "ifm,netx";
|
||||
reg = <0x3 0x00000000 0x00020000>;
|
||||
chipselect = <3 0x00101140 0x00203100>;
|
||||
interrupts = <17 0x8>;
|
||||
gpios = <&gpio_pic 15 0>;
|
||||
};
|
||||
|
||||
safety@5,0 {
|
||||
compatible = "ifm,safety";
|
||||
reg = <0x5 0x00000000 0x00010000>;
|
||||
chipselect = <5 0x00009000 0x00009100>;
|
||||
interrupts = <22 0x2>;
|
||||
interrupt-parent = <&gpio_pic>;
|
||||
gpios = <
|
||||
&gpio_pic 12 0 /* prog */
|
||||
&gpio_pic 11 0 /* done */
|
||||
>;
|
||||
};
|
||||
};
|
||||
|
||||
soc@80000000 {
|
||||
|
||||
clock@f00 {
|
||||
compatible = "fsl,mpc5121rev2-clock", "fsl,mpc5121-clock";
|
||||
};
|
||||
|
||||
/*
|
||||
* GPIO PIC:
|
||||
* interrupts cell = <pin nr, sense>
|
||||
* sense == 8: Level, low assertion
|
||||
* sense == 2: Edge, high-to-low change
|
||||
*/
|
||||
gpio_pic: gpio@1100 {
|
||||
gpio-controller;
|
||||
#gpio-cells = <2>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
sdhc@1500 {
|
||||
cd-gpios = <&gpio_pic 23 0>; /* card detect */
|
||||
wp-gpios = <&gpio_pic 24 0>; /* write protect */
|
||||
wp-inverted; /* WP active high */
|
||||
};
|
||||
|
||||
i2c@1700 {
|
||||
/* use Fast-mode */
|
||||
clock-frequency = <400000>;
|
||||
|
||||
at24@30 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x30>;
|
||||
};
|
||||
|
||||
at24@31 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x31>;
|
||||
};
|
||||
|
||||
temp@48 {
|
||||
compatible = "ad,ad7414";
|
||||
reg = <0x48>;
|
||||
};
|
||||
|
||||
at24@50 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x50>;
|
||||
};
|
||||
|
||||
at24@51 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x51>;
|
||||
};
|
||||
|
||||
at24@52 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x52>;
|
||||
};
|
||||
|
||||
at24@53 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x53>;
|
||||
};
|
||||
|
||||
at24@54 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x54>;
|
||||
};
|
||||
|
||||
at24@55 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x55>;
|
||||
};
|
||||
|
||||
at24@56 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x56>;
|
||||
};
|
||||
|
||||
at24@57 {
|
||||
compatible = "at24,24c01";
|
||||
reg = <0x57>;
|
||||
};
|
||||
|
||||
rtc@68 {
|
||||
compatible = "stm,m41t00";
|
||||
reg = <0x68>;
|
||||
};
|
||||
};
|
||||
|
||||
axe_pic: axe-base@2000 {
|
||||
compatible = "fsl,mpc5121-axe-base";
|
||||
reg = <0x2000 0x100>;
|
||||
interrupts = <42 0x8>;
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
};
|
||||
|
||||
axe-app {
|
||||
compatible = "fsl,mpc5121-axe-app";
|
||||
interrupt-parent = <&axe_pic>;
|
||||
interrupts = <
|
||||
/* soft interrupts */
|
||||
0 0x0 1 0x0 2 0x0 3 0x0
|
||||
4 0x0 5 0x0 6 0x0 7 0x0
|
||||
/* fifo interrupts */
|
||||
8 0x0 9 0x0 10 0x0 11 0x0
|
||||
>;
|
||||
};
|
||||
|
||||
display@2100 {
|
||||
edid = [00 FF FF FF FF FF FF 00 14 94 00 00 00 00 00 00
|
||||
0A 12 01 03 80 1C 23 78 CA 88 FF 94 52 54 8E 27
|
||||
1E 4C 50 00 00 00 01 01 01 01 01 01 01 01 01 01
|
||||
01 01 01 01 01 01 FB 00 B0 14 00 DC 05 00 08 04
|
||||
21 00 1C 23 00 00 00 18 00 00 00 FD 00 38 3C 1F
|
||||
3C 01 0A 20 20 20 20 20 20 20 00 00 00 FC 00 45
|
||||
54 30 31 38 30 30 33 44 4D 55 0A 0A 00 00 00 10
|
||||
00 41 30 30 30 30 30 30 30 30 30 30 30 31 00 D5];
|
||||
};
|
||||
|
||||
can@2300 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
can@2380 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
viu@2400 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
mdio@2800 {
|
||||
phy0: ethernet-phy@1f {
|
||||
compatible = "smsc,lan8700";
|
||||
reg = <0x1f>;
|
||||
};
|
||||
};
|
||||
|
||||
enet: ethernet@2800 {
|
||||
phy-handle = <&phy0>;
|
||||
};
|
||||
|
||||
usb@3000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
usb@4000 {
|
||||
status = "disabled";
|
||||
};
|
||||
|
||||
/* PSC3 serial port A, aka ttyPSC0 */
|
||||
serial0: psc@11300 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
fsl,rx-fifo-size = <512>;
|
||||
fsl,tx-fifo-size = <512>;
|
||||
};
|
||||
|
||||
/* PSC4 in SPI mode */
|
||||
spi4: psc@11400 {
|
||||
compatible = "fsl,mpc5121-psc-spi", "fsl,mpc5121-psc";
|
||||
fsl,rx-fifo-size = <768>;
|
||||
fsl,tx-fifo-size = <768>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
num-cs = <1>;
|
||||
cs-gpios = <&gpio_pic 25 0>;
|
||||
|
||||
flash: m25p128@0 {
|
||||
compatible = "st,m25p128";
|
||||
spi-max-frequency = <20000000>;
|
||||
reg = <0>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
partition@0 {
|
||||
label = "spi-flash0";
|
||||
reg = <0x00000000 0x01000000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
/* PSC5 in SPI mode */
|
||||
spi5: psc@11500 {
|
||||
compatible = "fsl,mpc5121-psc-spi", "fsl,mpc5121-psc";
|
||||
fsl,mode = "spi-master";
|
||||
fsl,rx-fifo-size = <128>;
|
||||
fsl,tx-fifo-size = <128>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
lcd@0 {
|
||||
compatible = "ilitek,ili922x";
|
||||
reg = <0>;
|
||||
spi-max-frequency = <100000>;
|
||||
spi-cpol;
|
||||
spi-cpha;
|
||||
};
|
||||
};
|
||||
|
||||
/* PSC7 serial port C, aka ttyPSC2 */
|
||||
serial7: psc@11700 {
|
||||
compatible = "fsl,mpc5121-psc-uart", "fsl,mpc5121-psc";
|
||||
fsl,rx-fifo-size = <512>;
|
||||
fsl,tx-fifo-size = <512>;
|
||||
};
|
||||
|
||||
matrix_keypad@0 {
|
||||
compatible = "gpio-matrix-keypad";
|
||||
debounce-delay-ms = <5>;
|
||||
col-scan-delay-us = <1>;
|
||||
gpio-activelow;
|
||||
col-gpios-binary;
|
||||
col-switch-delay-ms = <200>;
|
||||
|
||||
col-gpios = <&gpio_pic 1 0>; /* pin1 */
|
||||
|
||||
row-gpios = <&gpio_pic 2 0 /* pin2 */
|
||||
&gpio_pic 3 0 /* pin3 */
|
||||
&gpio_pic 4 0>; /* pin4 */
|
||||
|
||||
linux,keymap = <0x0000006e /* FN LEFT */
|
||||
0x01000067 /* UP */
|
||||
0x02000066 /* FN RIGHT */
|
||||
0x00010069 /* LEFT */
|
||||
0x0101006a /* DOWN */
|
||||
0x0201006c>; /* RIGHT */
|
||||
};
|
||||
};
|
||||
|
||||
leds {
|
||||
compatible = "gpio-leds";
|
||||
|
||||
backlight {
|
||||
label = "backlight";
|
||||
gpios = <&gpio_pic 0 0>;
|
||||
default-state = "keep";
|
||||
};
|
||||
green {
|
||||
label = "green";
|
||||
gpios = <&gpio_pic 18 0>;
|
||||
default-state = "keep";
|
||||
};
|
||||
red {
|
||||
label = "red";
|
||||
gpios = <&gpio_pic 19 0>;
|
||||
default-state = "keep";
|
||||
};
|
||||
};
|
||||
};
|
@ -384,7 +384,7 @@
|
||||
interrupts = <40 0x8>;
|
||||
};
|
||||
|
||||
dma@14000 {
|
||||
dma0: dma@14000 {
|
||||
compatible = "fsl,mpc5121-dma";
|
||||
reg = <0x14000 0x1800>;
|
||||
interrupts = <65 0x8>;
|
||||
|
@ -13,7 +13,7 @@
|
||||
|
||||
/ {
|
||||
model = "mpc5121ads";
|
||||
compatible = "fsl,mpc5121ads";
|
||||
compatible = "fsl,mpc5121ads", "fsl,mpc5121";
|
||||
|
||||
nfc@40000000 {
|
||||
/*
|
||||
|
233
arch/powerpc/boot/dts/mpc5125twr.dts
Normal file
233
arch/powerpc/boot/dts/mpc5125twr.dts
Normal file
@ -0,0 +1,233 @@
|
||||
/*
|
||||
* STx/Freescale ADS5125 MPC5125 silicon
|
||||
*
|
||||
* Copyright (C) 2009 Freescale Semiconductor Inc. All rights reserved.
|
||||
*
|
||||
* Reworked by Matteo Facchinetti (engineering@sirius-es.it)
|
||||
* Copyright (C) 2013 Sirius Electronic Systems
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
|
||||
/ {
|
||||
model = "mpc5125twr"; // In BSP "mpc5125ads"
|
||||
compatible = "fsl,mpc5125ads", "fsl,mpc5125";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupt-parent = <&ipic>;
|
||||
|
||||
aliases {
|
||||
gpio0 = &gpio0;
|
||||
gpio1 = &gpio1;
|
||||
ethernet0 = ð0;
|
||||
};
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,5125@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <0x20>; // 32 bytes
|
||||
i-cache-line-size = <0x20>; // 32 bytes
|
||||
d-cache-size = <0x8000>; // L1, 32K
|
||||
i-cache-size = <0x8000>; // L1, 32K
|
||||
timebase-frequency = <49500000>;// 49.5 MHz (csb/4)
|
||||
bus-frequency = <198000000>; // 198 MHz csb bus
|
||||
clock-frequency = <396000000>; // 396 MHz ppc core
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <0x00000000 0x10000000>; // 256MB at 0
|
||||
};
|
||||
|
||||
sram@30000000 {
|
||||
compatible = "fsl,mpc5121-sram";
|
||||
reg = <0x30000000 0x08000>; // 32K at 0x30000000
|
||||
};
|
||||
|
||||
soc@80000000 {
|
||||
compatible = "fsl,mpc5121-immr";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
#interrupt-cells = <2>;
|
||||
ranges = <0x0 0x80000000 0x400000>;
|
||||
reg = <0x80000000 0x400000>;
|
||||
bus-frequency = <66000000>; // 66 MHz ips bus
|
||||
|
||||
// IPIC
|
||||
// interrupts cell = <intr #, sense>
|
||||
// sense values match linux IORESOURCE_IRQ_* defines:
|
||||
// sense == 8: Level, low assertion
|
||||
// sense == 2: Edge, high-to-low change
|
||||
//
|
||||
ipic: interrupt-controller@c00 {
|
||||
compatible = "fsl,mpc5121-ipic", "fsl,ipic";
|
||||
interrupt-controller;
|
||||
#address-cells = <0>;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0xc00 0x100>;
|
||||
};
|
||||
|
||||
rtc@a00 { // Real time clock
|
||||
compatible = "fsl,mpc5121-rtc";
|
||||
reg = <0xa00 0x100>;
|
||||
interrupts = <79 0x8 80 0x8>;
|
||||
};
|
||||
|
||||
reset@e00 { // Reset module
|
||||
compatible = "fsl,mpc5125-reset";
|
||||
reg = <0xe00 0x100>;
|
||||
};
|
||||
|
||||
clock@f00 { // Clock control
|
||||
compatible = "fsl,mpc5121-clock";
|
||||
reg = <0xf00 0x100>;
|
||||
};
|
||||
|
||||
pmc@1000{ // Power Management Controller
|
||||
compatible = "fsl,mpc5121-pmc";
|
||||
reg = <0x1000 0x100>;
|
||||
interrupts = <83 0x2>;
|
||||
};
|
||||
|
||||
gpio0: gpio@1100 {
|
||||
compatible = "fsl,mpc5125-gpio";
|
||||
reg = <0x1100 0x080>;
|
||||
interrupts = <78 0x8>;
|
||||
};
|
||||
|
||||
gpio1: gpio@1180 {
|
||||
compatible = "fsl,mpc5125-gpio";
|
||||
reg = <0x1180 0x080>;
|
||||
interrupts = <86 0x8>;
|
||||
};
|
||||
|
||||
can@1300 { // CAN rev.2
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <12 0x8>;
|
||||
reg = <0x1300 0x80>;
|
||||
};
|
||||
|
||||
can@1380 {
|
||||
compatible = "fsl,mpc5121-mscan";
|
||||
interrupts = <13 0x8>;
|
||||
reg = <0x1380 0x80>;
|
||||
};
|
||||
|
||||
sdhc@1500 {
|
||||
compatible = "fsl,mpc5121-sdhc";
|
||||
interrupts = <8 0x8>;
|
||||
reg = <0x1500 0x100>;
|
||||
};
|
||||
|
||||
i2c@1700 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1700 0x20>;
|
||||
interrupts = <0x9 0x8>;
|
||||
};
|
||||
|
||||
i2c@1720 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1720 0x20>;
|
||||
interrupts = <0xa 0x8>;
|
||||
};
|
||||
|
||||
i2c@1740 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
compatible = "fsl,mpc5121-i2c", "fsl-i2c";
|
||||
reg = <0x1740 0x20>;
|
||||
interrupts = <0xb 0x8>;
|
||||
};
|
||||
|
||||
i2ccontrol@1760 {
|
||||
compatible = "fsl,mpc5121-i2c-ctrl";
|
||||
reg = <0x1760 0x8>;
|
||||
};
|
||||
|
||||
diu@2100 {
|
||||
compatible = "fsl,mpc5121-diu";
|
||||
reg = <0x2100 0x100>;
|
||||
interrupts = <64 0x8>;
|
||||
};
|
||||
|
||||
mdio@2800 {
|
||||
compatible = "fsl,mpc5121-fec-mdio";
|
||||
reg = <0x2800 0x800>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
phy0: ethernet-phy@0 {
|
||||
reg = <1>;
|
||||
};
|
||||
};
|
||||
|
||||
eth0: ethernet@2800 {
|
||||
compatible = "fsl,mpc5125-fec";
|
||||
reg = <0x2800 0x800>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ];
|
||||
interrupts = <4 0x8>;
|
||||
phy-handle = < &phy0 >;
|
||||
phy-connection-type = "rmii";
|
||||
};
|
||||
|
||||
// IO control
|
||||
ioctl@a000 {
|
||||
compatible = "fsl,mpc5125-ioctl";
|
||||
reg = <0xA000 0x1000>;
|
||||
};
|
||||
|
||||
usb@3000 {
|
||||
compatible = "fsl,mpc5121-usb2-dr";
|
||||
reg = <0x3000 0x400>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
interrupts = <43 0x8>;
|
||||
dr_mode = "host";
|
||||
phy_type = "ulpi";
|
||||
};
|
||||
|
||||
// 5125 PSCs are not 52xx or 5121 PSC compatible
|
||||
// PSC1 uart0 aka ttyPSC0
|
||||
serial@11100 {
|
||||
compatible = "fsl,mpc5125-psc-uart", "fsl,mpc5125-psc";
|
||||
reg = <0x11100 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
// PSC9 uart1 aka ttyPSC1
|
||||
serial@11900 {
|
||||
compatible = "fsl,mpc5125-psc-uart", "fsl,mpc5125-psc";
|
||||
reg = <0x11900 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
fsl,rx-fifo-size = <16>;
|
||||
fsl,tx-fifo-size = <16>;
|
||||
};
|
||||
|
||||
pscfifo@11f00 {
|
||||
compatible = "fsl,mpc5121-psc-fifo";
|
||||
reg = <0x11f00 0x100>;
|
||||
interrupts = <40 0x8>;
|
||||
};
|
||||
|
||||
dma@14000 {
|
||||
compatible = "fsl,mpc5121-dma"; // BSP name: "mpc512x-dma2"
|
||||
reg = <0x14000 0x1800>;
|
||||
interrupts = <65 0x8>;
|
||||
};
|
||||
};
|
||||
};
|
@ -17,7 +17,7 @@
|
||||
|
||||
/ {
|
||||
model = "pdm360ng";
|
||||
compatible = "ifm,pdm360ng";
|
||||
compatible = "ifm,pdm360ng", "fsl,mpc5121";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
interrupt-parent = <&ipic>;
|
||||
|
@ -13,7 +13,7 @@ CONFIG_MODULE_UNLOAD=y
|
||||
# CONFIG_PPC_CHRP is not set
|
||||
CONFIG_PPC_MPC512x=y
|
||||
CONFIG_MPC5121_ADS=y
|
||||
CONFIG_MPC5121_GENERIC=y
|
||||
CONFIG_MPC512x_GENERIC=y
|
||||
CONFIG_PDM360NG=y
|
||||
# CONFIG_PPC_PMAC is not set
|
||||
CONFIG_NO_HZ=y
|
||||
|
@ -15,16 +15,16 @@ config MPC5121_ADS
|
||||
help
|
||||
This option enables support for the MPC5121E ADS board.
|
||||
|
||||
config MPC5121_GENERIC
|
||||
bool "Generic support for simple MPC5121 based boards"
|
||||
config MPC512x_GENERIC
|
||||
bool "Generic support for simple MPC512x based boards"
|
||||
depends on PPC_MPC512x
|
||||
select DEFAULT_UIMAGE
|
||||
help
|
||||
This option enables support for simple MPC5121 based boards
|
||||
This option enables support for simple MPC512x based boards
|
||||
which do not need custom platform specific setup.
|
||||
|
||||
Compatible boards include: Protonic LVT base boards (ZANMCU
|
||||
and VICVT2).
|
||||
and VICVT2), Freescale MPC5125 Tower system.
|
||||
|
||||
config PDM360NG
|
||||
bool "ifm PDM360NG board"
|
||||
|
@ -3,5 +3,5 @@
|
||||
#
|
||||
obj-y += clock.o mpc512x_shared.o
|
||||
obj-$(CONFIG_MPC5121_ADS) += mpc5121_ads.o mpc5121_ads_cpld.o
|
||||
obj-$(CONFIG_MPC5121_GENERIC) += mpc5121_generic.o
|
||||
obj-$(CONFIG_MPC512x_GENERIC) += mpc512x_generic.o
|
||||
obj-$(CONFIG_PDM360NG) += pdm360ng.o
|
||||
|
@ -29,6 +29,8 @@
|
||||
#include <asm/mpc5121.h>
|
||||
#include <asm/clk_interface.h>
|
||||
|
||||
#include "mpc512x.h"
|
||||
|
||||
#undef CLK_DEBUG
|
||||
|
||||
static int clocks_initialized;
|
||||
@ -683,8 +685,13 @@ static void psc_clks_init(void)
|
||||
struct device_node *np;
|
||||
struct platform_device *ofdev;
|
||||
u32 reg;
|
||||
const char *psc_compat;
|
||||
|
||||
for_each_compatible_node(np, NULL, "fsl,mpc5121-psc") {
|
||||
psc_compat = mpc512x_select_psc_compat();
|
||||
if (!psc_compat)
|
||||
return;
|
||||
|
||||
for_each_compatible_node(np, NULL, psc_compat) {
|
||||
if (!of_property_read_u32(np, "reg", ®)) {
|
||||
int pscnum = (reg & 0xf00) >> 8;
|
||||
struct clk *clk = psc_dev_clk(pscnum);
|
||||
|
@ -15,6 +15,7 @@ extern void __init mpc512x_init_IRQ(void);
|
||||
extern void __init mpc512x_init(void);
|
||||
extern int __init mpc5121_clk_init(void);
|
||||
void __init mpc512x_declare_of_platform_devices(void);
|
||||
extern const char *mpc512x_select_psc_compat(void);
|
||||
extern void mpc512x_restart(char *cmd);
|
||||
|
||||
#if defined(CONFIG_FB_FSL_DIU) || defined(CONFIG_FB_FSL_DIU_MODULE)
|
||||
|
@ -4,7 +4,7 @@
|
||||
* Author: John Rigby, <jrigby@freescale.com>
|
||||
*
|
||||
* Description:
|
||||
* MPC5121 SoC setup
|
||||
* MPC512x SoC setup
|
||||
*
|
||||
* This is free software; you can redistribute it and/or modify it
|
||||
* under the terms of the GNU General Public License as published by
|
||||
@ -28,20 +28,22 @@
|
||||
*/
|
||||
static const char * const board[] __initconst = {
|
||||
"prt,prtlvt",
|
||||
"fsl,mpc5125ads",
|
||||
"ifm,ac14xx",
|
||||
NULL
|
||||
};
|
||||
|
||||
/*
|
||||
* Called very early, MMU is off, device-tree isn't unflattened
|
||||
*/
|
||||
static int __init mpc5121_generic_probe(void)
|
||||
static int __init mpc512x_generic_probe(void)
|
||||
{
|
||||
return of_flat_dt_match(of_get_flat_dt_root(), board);
|
||||
}
|
||||
|
||||
define_machine(mpc5121_generic) {
|
||||
.name = "MPC5121 generic",
|
||||
.probe = mpc5121_generic_probe,
|
||||
define_machine(mpc512x_generic) {
|
||||
.name = "MPC512x generic",
|
||||
.probe = mpc512x_generic_probe,
|
||||
.init = mpc512x_init,
|
||||
.init_early = mpc512x_init_diu,
|
||||
.setup_arch = mpc512x_setup_diu,
|
@ -330,26 +330,34 @@ void __init mpc512x_init_IRQ(void)
|
||||
static struct of_device_id __initdata of_bus_ids[] = {
|
||||
{ .compatible = "fsl,mpc5121-immr", },
|
||||
{ .compatible = "fsl,mpc5121-localbus", },
|
||||
{ .compatible = "fsl,mpc5121-mbx", },
|
||||
{ .compatible = "fsl,mpc5121-nfc", },
|
||||
{ .compatible = "fsl,mpc5121-sram", },
|
||||
{ .compatible = "fsl,mpc5121-pci", },
|
||||
{ .compatible = "gpio-leds", },
|
||||
{},
|
||||
};
|
||||
|
||||
void __init mpc512x_declare_of_platform_devices(void)
|
||||
{
|
||||
struct device_node *np;
|
||||
|
||||
if (of_platform_bus_probe(NULL, of_bus_ids, NULL))
|
||||
printk(KERN_ERR __FILE__ ": "
|
||||
"Error while probing of_platform bus\n");
|
||||
|
||||
np = of_find_compatible_node(NULL, NULL, "fsl,mpc5121-nfc");
|
||||
if (np) {
|
||||
of_platform_device_create(np, NULL, NULL);
|
||||
of_node_put(np);
|
||||
}
|
||||
}
|
||||
|
||||
#define DEFAULT_FIFO_SIZE 16
|
||||
|
||||
const char *mpc512x_select_psc_compat(void)
|
||||
{
|
||||
if (of_machine_is_compatible("fsl,mpc5121"))
|
||||
return "fsl,mpc5121-psc";
|
||||
|
||||
if (of_machine_is_compatible("fsl,mpc5125"))
|
||||
return "fsl,mpc5125-psc";
|
||||
|
||||
return NULL;
|
||||
}
|
||||
|
||||
static unsigned int __init get_fifo_size(struct device_node *np,
|
||||
char *prop_name)
|
||||
{
|
||||
@ -375,9 +383,16 @@ void __init mpc512x_psc_fifo_init(void)
|
||||
void __iomem *psc;
|
||||
unsigned int tx_fifo_size;
|
||||
unsigned int rx_fifo_size;
|
||||
const char *psc_compat;
|
||||
int fifobase = 0; /* current fifo address in 32 bit words */
|
||||
|
||||
for_each_compatible_node(np, NULL, "fsl,mpc5121-psc") {
|
||||
psc_compat = mpc512x_select_psc_compat();
|
||||
if (!psc_compat) {
|
||||
pr_err("%s: no compatible devices found\n", __func__);
|
||||
return;
|
||||
}
|
||||
|
||||
for_each_compatible_node(np, NULL, psc_compat) {
|
||||
tx_fifo_size = get_fifo_size(np, "fsl,tx-fifo-size");
|
||||
rx_fifo_size = get_fifo_size(np, "fsl,rx-fifo-size");
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user