mirror of
https://github.com/armbian/linux.git
synced 2026-01-06 10:13:00 -08:00
powerpc: Add support for the MPC852 based mgsuvd board from keymile.
Supported SMC1 (serial console), SCC3 Ethernet (10Mbps hdx). Signed-off-by: Heiko Schocher <hs@denx.de> Signed-off-by: Kumar Gala <galak@kernel.crashing.org>
This commit is contained in:
committed by
Kumar Gala
parent
a501d8f30e
commit
e14d4af0c8
163
arch/powerpc/boot/dts/mgsuvd.dts
Normal file
163
arch/powerpc/boot/dts/mgsuvd.dts
Normal file
@@ -0,0 +1,163 @@
|
||||
/*
|
||||
* MGSUVD Device Tree Source
|
||||
*
|
||||
* Copyright 2008 DENX Software Engineering GmbH
|
||||
* Heiko Schocher <hs@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.
|
||||
*/
|
||||
|
||||
/dts-v1/;
|
||||
/ {
|
||||
model = "MGSUVD";
|
||||
compatible = "keymile,mgsuvd";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
|
||||
cpus {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <0>;
|
||||
|
||||
PowerPC,852@0 {
|
||||
device_type = "cpu";
|
||||
reg = <0>;
|
||||
d-cache-line-size = <16>;
|
||||
i-cache-line-size = <16>;
|
||||
d-cache-size = <8192>;
|
||||
i-cache-size = <8192>;
|
||||
timebase-frequency = <0>; /* Filled in by u-boot */
|
||||
bus-frequency = <0>; /* Filled in by u-boot */
|
||||
clock-frequency = <0>; /* Filled in by u-boot */
|
||||
interrupts = <15 2>; /* decrementer interrupt */
|
||||
interrupt-parent = <&PIC>;
|
||||
};
|
||||
};
|
||||
|
||||
memory {
|
||||
device_type = "memory";
|
||||
reg = <00000000 0x4000000>; /* Filled in by u-boot */
|
||||
};
|
||||
|
||||
localbus@fff00100 {
|
||||
compatible = "fsl,mpc852-localbus", "fsl,pq1-localbus", "simple-bus";
|
||||
#address-cells = <2>;
|
||||
#size-cells = <1>;
|
||||
reg = <0xfff00100 0x40>;
|
||||
|
||||
ranges = <0 0 0xf0000000 0x01000000>; /* Filled in by u-boot */
|
||||
|
||||
flash@0,0 {
|
||||
compatible = "cfi-flash";
|
||||
reg = <0 0 0x1000000>;
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
bank-width = <1>;
|
||||
device-width = <1>;
|
||||
partition@0 {
|
||||
label = "u-boot";
|
||||
reg = <0 0x80000>;
|
||||
};
|
||||
partition@80000 {
|
||||
label = "env";
|
||||
reg = <0x80000 0x20000>;
|
||||
};
|
||||
partition@a0000 {
|
||||
label = "kernel";
|
||||
reg = <0xa0000 0x1e0000>;
|
||||
};
|
||||
partition@280000 {
|
||||
label = "dtb";
|
||||
reg = <0x280000 0x20000>;
|
||||
};
|
||||
partition@2a0000 {
|
||||
label = "root";
|
||||
reg = <0x2a0000 0x500000>;
|
||||
};
|
||||
partition@7a0000 {
|
||||
label = "user";
|
||||
reg = <0x7a0000 0x860000>;
|
||||
};
|
||||
};
|
||||
};
|
||||
|
||||
soc@fff00000 {
|
||||
compatible = "fsl,mpc852", "fsl,pq1-soc", "simple-bus";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
device_type = "soc";
|
||||
ranges = <0 0xfff00000 0x00004000>;
|
||||
|
||||
PIC: interrupt-controller@0 {
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <2>;
|
||||
reg = <0 24>;
|
||||
compatible = "fsl,mpc852-pic", "fsl,pq1-pic";
|
||||
};
|
||||
|
||||
cpm@9c0 {
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
compatible = "fsl,mpc852-cpm", "fsl,cpm1", "simple-bus";
|
||||
interrupts = <0>; /* cpm error interrupt */
|
||||
interrupt-parent = <&CPM_PIC>;
|
||||
reg = <0x9c0 10>;
|
||||
ranges;
|
||||
|
||||
muram@2000 {
|
||||
compatible = "fsl,cpm-muram";
|
||||
#address-cells = <1>;
|
||||
#size-cells = <1>;
|
||||
ranges = <0 0x2000 0x2000>;
|
||||
|
||||
data@0 {
|
||||
compatible = "fsl,cpm-muram-data";
|
||||
reg = <0x800 0x1800>;
|
||||
};
|
||||
};
|
||||
|
||||
brg@9f0 {
|
||||
compatible = "fsl,mpc852-brg",
|
||||
"fsl,cpm1-brg",
|
||||
"fsl,cpm-brg";
|
||||
reg = <0x9f0 0x10>;
|
||||
clock-frequency = <0>; /* Filled in by u-boot */
|
||||
};
|
||||
|
||||
CPM_PIC: interrupt-controller@930 {
|
||||
interrupt-controller;
|
||||
#interrupt-cells = <1>;
|
||||
interrupts = <5 2 0 2>;
|
||||
interrupt-parent = <&PIC>;
|
||||
reg = <0x930 0x20>;
|
||||
compatible = "fsl,cpm1-pic";
|
||||
};
|
||||
|
||||
/* MON-1 */
|
||||
serial@a80 {
|
||||
device_type = "serial";
|
||||
compatible = "fsl,cpm1-smc-uart";
|
||||
reg = <0xa80 0x10 0x3fc0 0x40>;
|
||||
interrupts = <4>;
|
||||
interrupt-parent = <&CPM_PIC>;
|
||||
fsl,cpm-brg = <1>;
|
||||
fsl,cpm-command = <0x0090>;
|
||||
current-speed = <0>; /* Filled in by u-boot */
|
||||
};
|
||||
|
||||
ethernet@a40 {
|
||||
device_type = "network";
|
||||
compatible = "fsl,mpc866-scc-enet",
|
||||
"fsl,cpm1-scc-enet";
|
||||
reg = <0xa40 0x18 0x3e00 0x100>;
|
||||
local-mac-address = [ 00 00 00 00 00 00 ]; /* Filled in by u-boot */
|
||||
interrupts = <28>;
|
||||
interrupt-parent = <&CPM_PIC>;
|
||||
fsl,cpm-command = <0x80>;
|
||||
fixed-link = <0 0 10 0 0>;
|
||||
};
|
||||
};
|
||||
};
|
||||
};
|
||||
872
arch/powerpc/configs/mgsuvd_defconfig
Normal file
872
arch/powerpc/configs/mgsuvd_defconfig
Normal file
File diff suppressed because it is too large
Load Diff
@@ -49,6 +49,12 @@ config PPC_ADDER875
|
||||
This enables support for the Analogue & Micro Adder 875
|
||||
board.
|
||||
|
||||
config PPC_MGSUVD
|
||||
bool "MGSUVD"
|
||||
select CPM1
|
||||
help
|
||||
This enables support for the Keymile MGSUVD board.
|
||||
|
||||
endchoice
|
||||
|
||||
menu "Freescale Ethernet driver platform-specific options"
|
||||
|
||||
@@ -6,3 +6,4 @@ obj-$(CONFIG_MPC885ADS) += mpc885ads_setup.o
|
||||
obj-$(CONFIG_MPC86XADS) += mpc86xads_setup.o
|
||||
obj-$(CONFIG_PPC_EP88XC) += ep88xc.o
|
||||
obj-$(CONFIG_PPC_ADDER875) += adder875.o
|
||||
obj-$(CONFIG_PPC_MGSUVD) += mgsuvd.o
|
||||
|
||||
92
arch/powerpc/platforms/8xx/mgsuvd.c
Normal file
92
arch/powerpc/platforms/8xx/mgsuvd.c
Normal file
@@ -0,0 +1,92 @@
|
||||
/*
|
||||
*
|
||||
* Platform setup for the Keymile mgsuvd board
|
||||
*
|
||||
* Heiko Schocher <hs@denx.de>
|
||||
*
|
||||
* Copyright 2008 DENX Software Engineering GmbH
|
||||
*
|
||||
* This file is licensed under the terms of the GNU General Public License
|
||||
* version 2. This program is licensed "as is" without any warranty of any
|
||||
* kind, whether express or implied.
|
||||
*/
|
||||
|
||||
#include <linux/ioport.h>
|
||||
#include <linux/of_platform.h>
|
||||
|
||||
#include <asm/io.h>
|
||||
#include <asm/machdep.h>
|
||||
#include <asm/processor.h>
|
||||
#include <asm/cpm1.h>
|
||||
#include <asm/prom.h>
|
||||
#include <asm/fs_pd.h>
|
||||
|
||||
#include "mpc8xx.h"
|
||||
|
||||
struct cpm_pin {
|
||||
int port, pin, flags;
|
||||
};
|
||||
|
||||
static __initdata struct cpm_pin mgsuvd_pins[] = {
|
||||
/* SMC1 */
|
||||
{CPM_PORTB, 24, CPM_PIN_INPUT}, /* RX */
|
||||
{CPM_PORTB, 25, CPM_PIN_INPUT | CPM_PIN_SECONDARY}, /* TX */
|
||||
|
||||
/* SCC3 */
|
||||
{CPM_PORTA, 10, CPM_PIN_INPUT},
|
||||
{CPM_PORTA, 11, CPM_PIN_INPUT},
|
||||
{CPM_PORTA, 3, CPM_PIN_INPUT},
|
||||
{CPM_PORTA, 2, CPM_PIN_INPUT},
|
||||
{CPM_PORTC, 13, CPM_PIN_INPUT},
|
||||
};
|
||||
|
||||
static void __init init_ioports(void)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 0; i < ARRAY_SIZE(mgsuvd_pins); i++) {
|
||||
struct cpm_pin *pin = &mgsuvd_pins[i];
|
||||
cpm1_set_pin(pin->port, pin->pin, pin->flags);
|
||||
}
|
||||
|
||||
setbits16(&mpc8xx_immr->im_ioport.iop_pcso, 0x300);
|
||||
cpm1_clk_setup(CPM_CLK_SCC3, CPM_CLK5, CPM_CLK_RX);
|
||||
cpm1_clk_setup(CPM_CLK_SCC3, CPM_CLK6, CPM_CLK_TX);
|
||||
cpm1_clk_setup(CPM_CLK_SMC1, CPM_BRG1, CPM_CLK_RTX);
|
||||
}
|
||||
|
||||
static void __init mgsuvd_setup_arch(void)
|
||||
{
|
||||
cpm_reset();
|
||||
init_ioports();
|
||||
}
|
||||
|
||||
static __initdata struct of_device_id of_bus_ids[] = {
|
||||
{ .compatible = "simple-bus" },
|
||||
{},
|
||||
};
|
||||
|
||||
static int __init declare_of_platform_devices(void)
|
||||
{
|
||||
of_platform_bus_probe(NULL, of_bus_ids, NULL);
|
||||
return 0;
|
||||
}
|
||||
machine_device_initcall(mgsuvd, declare_of_platform_devices);
|
||||
|
||||
static int __init mgsuvd_probe(void)
|
||||
{
|
||||
unsigned long root = of_get_flat_dt_root();
|
||||
return of_flat_dt_is_compatible(root, "keymile,mgsuvd");
|
||||
}
|
||||
|
||||
define_machine(mgsuvd) {
|
||||
.name = "MGSUVD",
|
||||
.probe = mgsuvd_probe,
|
||||
.setup_arch = mgsuvd_setup_arch,
|
||||
.init_IRQ = mpc8xx_pics_init,
|
||||
.get_irq = mpc8xx_get_irq,
|
||||
.restart = mpc8xx_restart,
|
||||
.calibrate_decr = mpc8xx_calibrate_decr,
|
||||
.set_rtc_time = mpc8xx_set_rtc_time,
|
||||
.get_rtc_time = mpc8xx_get_rtc_time,
|
||||
};
|
||||
Reference in New Issue
Block a user