Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit be201981 authored by Stephen Chivers's avatar Stephen Chivers Committed by Scott Wood
Browse files

powerpc/embedded6xx: Add support for Motorola/Emerson MVME5100



Add support for the Motorola/Emerson MVME5100 Single Board Computer.

The MVME5100 is a 6U form factor VME64 computer with:

	- A single MPC7410 or MPC750 CPU
	- A HAWK Processor Host Bridge (CPU to PCI) and
	  MultiProcessor Interrupt Controller (MPIC)
	- Up to 500Mb of onboard memory
	- A M48T37 Real Time Clock (RTC) and Non-Volatile Memory chip
	- Two 16550 compatible UARTS
	- Two Intel E100 Fast Ethernets
	- Two PCI Mezzanine Card (PMC) Slots
	- PPCBug Firmware

The HAWK PHB/MPIC is compatible with the MPC10x devices.

There is no onboard disk support. This is usually provided by installing a PMC
in first PMC slot.

This patch revives the board support, it was present in early 2.6
series kernels. The board support in those days was by Matt Porter of
MontaVista Software.

CSC Australia has around 31 of these boards in service. The kernel in use
for the boards is based on 2.6.31. The boards are operated without disks
from a file server.

This patch is based on linux-3.13-rc2 and has been boot tested.

Only boards with 512 Mb of memory are known to work.

Signed-off-by: default avatarStephen Chivers <schivers@csc.com>
Tested-by: default avatarAlessio Igor Bogani <alessio.bogani@elettra.eu>
Signed-off-by: default avatarScott Wood <scottwood@freescale.com>
parent bbead78c
Loading
Loading
Loading
Loading
+2 −1
Original line number Diff line number Diff line
@@ -95,7 +95,7 @@ src-plat-$(CONFIG_FSL_SOC_BOOKE) += cuboot-85xx.c cuboot-85xx-cpm2.c
src-plat-$(CONFIG_EMBEDDED6xx) += cuboot-pq2.c cuboot-mpc7448hpc2.c \
					cuboot-c2k.c gamecube-head.S \
					gamecube.c wii-head.S wii.c holly.c \
					prpmc2800.c
					prpmc2800.c fixed-head.S mvme5100.c
src-plat-$(CONFIG_AMIGAONE) += cuboot-amigaone.c
src-plat-$(CONFIG_PPC_PS3) += ps3-head.S ps3-hvcall.S ps3.c
src-plat-$(CONFIG_EPAPR_BOOT) += epapr.c epapr-wrapper.c
@@ -286,6 +286,7 @@ image-$(CONFIG_MPC7448HPC2) += cuImage.mpc7448hpc2
image-$(CONFIG_PPC_C2K)			+= cuImage.c2k
image-$(CONFIG_GAMECUBE)		+= dtbImage.gamecube
image-$(CONFIG_WII)			+= dtbImage.wii
image-$(CONFIG_MVME5100)		+= dtbImage.mvme5100

# Board port in arch/powerpc/platform/amigaone/Kconfig
image-$(CONFIG_AMIGAONE)		+= cuImage.amigaone
+185 −0
Original line number Diff line number Diff line
/*
 * Device Tree Source for Motorola/Emerson MVME5100.
 *
 * Copyright 2013 CSC Australia Pty. Ltd.
 *
 * 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.
 */

/dts-v1/;

/ {
	model = "MVME5100";
	compatible = "MVME5100";
	#address-cells = <1>;
	#size-cells = <1>;

	aliases {
		serial0 = &serial0;
		pci0 = &pci0;
	};

	cpus {
		#address-cells = <1>;
		#size-cells = <0>;

		PowerPC,7410 {
			device_type = "cpu";
			reg = <0x0>;
			/* Following required by dtc but not used */
			d-cache-line-size = <32>;
			i-cache-line-size = <32>;
			i-cache-size = <32768>;
			d-cache-size = <32768>;
			timebase-frequency = <25000000>;
			clock-frequency = <500000000>;
			bus-frequency = <100000000>;
		};
	};

	memory {
		device_type = "memory";
		reg = <0x0 0x20000000>;
	};

	hawk@fef80000 {
		#address-cells = <1>;
		#size-cells = <1>;
		compatible = "hawk-bridge", "simple-bus";
		ranges = <0x0 0xfef80000 0x10000>;
		reg = <0xfef80000 0x10000>;

		serial0: serial@8000 {
			device_type = "serial";
			compatible = "ns16550";
			reg = <0x8000 0x80>;
			reg-shift = <4>;
			clock-frequency = <1843200>;
			current-speed = <9600>;
			interrupts = <1 1>; // IRQ1 Level Active Low.
			interrupt-parent = <&mpic>;
		};

		serial1: serial@8200 {
			device_type = "serial";
			compatible = "ns16550";
			reg = <0x8200 0x80>;
			reg-shift = <4>;
			clock-frequency = <1843200>;
			current-speed = <9600>;
			interrupts = <1 1>; // IRQ1 Level Active Low.
			interrupt-parent = <&mpic>;
		};

		mpic: interrupt-controller@f3f80000 {
			#interrupt-cells = <2>;
			#address-cells = <0>;
			device_type = "open-pic";
			compatible = "chrp,open-pic";
			interrupt-controller;
			reg = <0xf3f80000 0x40000>;
		};
	};

	pci0: pci@feff0000 {
		#address-cells = <3>;
		#size-cells = <2>;
		#interrupt-cells = <1>;
		device_type = "pci";
		compatible = "hawk-pci";
		reg = <0xfec00000 0x400000>;
		8259-interrupt-acknowledge = <0xfeff0030>;
		ranges = <0x1000000 0x0        0x0 0xfe000000 0x0 0x800000
			  0x2000000 0x0 0x80000000 0x80000000 0x0 0x74000000>;
		bus-range = <0 255>;
		clock-frequency = <33333333>;
		interrupt-parent = <&mpic>;
		interrupt-map-mask = <0xf800 0x0 0x0 0x7>;
		interrupt-map = <

			/*
			 * This definition (IDSEL 11) duplicates the
			 * interrupts definition in the i8259
			 * interrupt controller below.
			 *
			 * Do not change the interrupt sense/polarity from
			 * 0x2 to anything else, doing so will cause endless
			 * "spurious" i8259 interrupts to be fielded.
			 */
			// IDSEL 11 - iPMC712 PCI/ISA Bridge
			0x5800 0x0 0x0 0x1 &mpic 0x0 0x2
			0x5800 0x0 0x0 0x2 &mpic 0x0 0x2
			0x5800 0x0 0x0 0x3 &mpic 0x0 0x2
			0x5800 0x0 0x0 0x4 &mpic 0x0 0x2

			/* IDSEL 12 - Not Used */

			/* IDSEL 13 - Universe VME Bridge */
			0x6800 0x0 0x0 0x1 &mpic 0x5 0x1
			0x6800 0x0 0x0 0x2 &mpic 0x6 0x1
			0x6800 0x0 0x0 0x3 &mpic 0x7 0x1
			0x6800 0x0 0x0 0x4 &mpic 0x8 0x1

			/* IDSEL 14 - ENET 1 */
			0x7000 0x0 0x0 0x1 &mpic 0x2 0x1

			/* IDSEL 15 - Not Used */

			/* IDSEL 16 - PMC Slot 1 */
			0x8000 0x0 0x0 0x1 &mpic 0x9 0x1
			0x8000 0x0 0x0 0x2 &mpic 0xa 0x1
			0x8000 0x0 0x0 0x3 &mpic 0xb 0x1
			0x8000 0x0 0x0 0x4 &mpic 0xc 0x1

			/* IDSEL 17 - PMC Slot 2 */
			0x8800 0x0 0x0 0x1 &mpic 0xc 0x1
			0x8800 0x0 0x0 0x2 &mpic 0x9 0x1
			0x8800 0x0 0x0 0x3 &mpic 0xa 0x1
			0x8800 0x0 0x0 0x4 &mpic 0xb 0x1

			/* IDSEL 18 - Not Used */

			/* IDSEL 19 - ENET 2 */
			0x9800 0x0 0x0 0x1 &mpic 0xd 0x1

			/* IDSEL 20 - PMCSPAN (PCI-X) */
			0xa000 0x0 0x0 0x1 &mpic 0x9 0x1
			0xa000 0x0 0x0 0x2 &mpic 0xa 0x1
			0xa000 0x0 0x0 0x3 &mpic 0xb 0x1
			0xa000 0x0 0x0 0x4 &mpic 0xc 0x1

		>;

		isa {
			#address-cells = <2>;
			#size-cells = <1>;
			#interrupt-cells = <2>;
			device_type = "isa";
			compatible = "isa";
			ranges = <0x00000001 0 0x01000000 0 0x00000000 0x00001000>;
			interrupt-parent = <&i8259>;

			i8259: interrupt-controller@20 {
				#interrupt-cells = <2>;
				#address-cells = <0>;
				interrupts = <0 2>;
				device_type = "interrupt-controller";
				compatible = "chrp,iic";
				interrupt-controller;
				reg = <1 0x00000020 0x00000002
                                       1 0x000000a0 0x00000002
                                       1 0x000004d0 0x00000002>;
				interrupt-parent = <&mpic>;
			};

		};

	};

	chosen {
		linux,stdout-path = &serial0;
        };

};
+27 −0
Original line number Diff line number Diff line
/*
 * Motorola/Emerson MVME5100 with PPCBug firmware.
 *
 * Author: Stephen Chivers <schivers@csc.com>
 *
 * Copyright 2013 CSC Australia Pty. Ltd.
 *
 * This program is free software; you can redistribute it and/or
 * modify it under the terms of the GNU General Public License
 * version 2 as published by the Free Software Foundation.
 *
 */
#include "types.h"
#include "ops.h"
#include "io.h"

BSS_STACK(4096);

void platform_init(unsigned long r3, unsigned long r4, unsigned long r5)
{
	u32			heapsize;

	heapsize = 0x8000000 - (u32)_end; /* 128M */
	simple_alloc_init(_end, heapsize, 32, 64);
	fdt_init(_dtb_start);
	serial_console_init();
}
+4 −0
Original line number Diff line number Diff line
@@ -265,6 +265,10 @@ epapr)
    link_address='0x20000000'
    pie=-pie
    ;;
mvme5100)
    platformo="$object/fixed-head.o $object/mvme5100.o"
    binary=y
    ;;
esac

vmz="$tmpdir/`basename \"$kernel\"`.$ext"
+144 −0
Original line number Diff line number Diff line
CONFIG_SYSVIPC=y
CONFIG_POSIX_MQUEUE=y
CONFIG_NO_HZ=y
CONFIG_HIGH_RES_TIMERS=y
CONFIG_IKCONFIG=y
CONFIG_IKCONFIG_PROC=y
CONFIG_LOG_BUF_SHIFT=14
# CONFIG_UTS_NS is not set
# CONFIG_IPC_NS is not set
# CONFIG_PID_NS is not set
# CONFIG_NET_NS is not set
CONFIG_CC_OPTIMIZE_FOR_SIZE=y
# CONFIG_COMPAT_BRK is not set
CONFIG_MODULES=y
CONFIG_MODULE_UNLOAD=y
# CONFIG_BLK_DEV_BSG is not set
# CONFIG_PPC_CHRP is not set
# CONFIG_PPC_PMAC is not set
CONFIG_EMBEDDED6xx=y
CONFIG_MVME5100=y
CONFIG_KVM_GUEST=y
CONFIG_HZ_100=y
# CONFIG_CORE_DUMP_DEFAULT_ELF_HEADERS is not set
# CONFIG_COMPACTION is not set
CONFIG_CMDLINE_BOOL=y
CONFIG_CMDLINE="console=ttyS0,9600 ip=dhcp root=/dev/nfs"
CONFIG_NET=y
CONFIG_PACKET=y
CONFIG_UNIX=y
CONFIG_INET=y
CONFIG_IP_MULTICAST=y
CONFIG_IP_PNP=y
CONFIG_IP_PNP_DHCP=y
CONFIG_IP_PNP_BOOTP=y
# CONFIG_INET_LRO is not set
# CONFIG_IPV6 is not set
CONFIG_NETFILTER=y
CONFIG_NF_CONNTRACK=m
CONFIG_NF_CT_PROTO_SCTP=m
CONFIG_NF_CONNTRACK_AMANDA=m
CONFIG_NF_CONNTRACK_FTP=m
CONFIG_NF_CONNTRACK_H323=m
CONFIG_NF_CONNTRACK_IRC=m
CONFIG_NF_CONNTRACK_NETBIOS_NS=m
CONFIG_NF_CONNTRACK_PPTP=m
CONFIG_NF_CONNTRACK_SIP=m
CONFIG_NF_CONNTRACK_TFTP=m
CONFIG_NETFILTER_XT_MATCH_MAC=m
CONFIG_NETFILTER_XT_MATCH_PKTTYPE=m
CONFIG_NETFILTER_XT_MATCH_STATE=m
CONFIG_NF_CONNTRACK_IPV4=m
CONFIG_IP_NF_IPTABLES=m
CONFIG_IP_NF_FILTER=m
CONFIG_IP_NF_TARGET_REJECT=m
CONFIG_IP_NF_MANGLE=m
CONFIG_IP_NF_TARGET_ECN=m
CONFIG_IP_NF_TARGET_TTL=m
CONFIG_IP_NF_RAW=m
CONFIG_IP_NF_ARPTABLES=m
CONFIG_IP_NF_ARPFILTER=m
CONFIG_IP_NF_ARP_MANGLE=m
CONFIG_LAPB=m
CONFIG_UEVENT_HELPER_PATH="/sbin/hotplug"
CONFIG_PROC_DEVICETREE=y
CONFIG_BLK_DEV_LOOP=y
CONFIG_BLK_DEV_RAM=y
CONFIG_BLK_DEV_RAM_COUNT=2
CONFIG_BLK_DEV_RAM_SIZE=8192
CONFIG_EEPROM_LEGACY=m
CONFIG_NETDEVICES=y
CONFIG_TUN=m
# CONFIG_NET_VENDOR_3COM is not set
CONFIG_E100=y
# CONFIG_WLAN is not set
# CONFIG_INPUT_MOUSEDEV_PSAUX is not set
# CONFIG_INPUT_KEYBOARD is not set
# CONFIG_INPUT_MOUSE is not set
# CONFIG_SERIO is not set
CONFIG_SERIAL_8250=y
CONFIG_SERIAL_8250_CONSOLE=y
CONFIG_SERIAL_8250_NR_UARTS=10
CONFIG_SERIAL_8250_EXTENDED=y
CONFIG_SERIAL_8250_MANY_PORTS=y
CONFIG_SERIAL_8250_SHARE_IRQ=y
CONFIG_SERIAL_OF_PLATFORM=y
CONFIG_HW_RANDOM=y
CONFIG_I2C=y
CONFIG_I2C_CHARDEV=y
CONFIG_I2C_MPC=y
# CONFIG_HWMON is not set
CONFIG_VIDEO_OUTPUT_CONTROL=m
# CONFIG_VGA_CONSOLE is not set
# CONFIG_HID is not set
# CONFIG_USB_SUPPORT is not set
# CONFIG_IOMMU_SUPPORT is not set
CONFIG_VME_BUS=m
CONFIG_VME_CA91CX42=m
CONFIG_EXT2_FS=m
CONFIG_EXT3_FS=m
# CONFIG_EXT3_DEFAULTS_TO_ORDERED is not set
CONFIG_XFS_FS=m
CONFIG_ISO9660_FS=m
CONFIG_JOLIET=y
CONFIG_ZISOFS=y
CONFIG_UDF_FS=m
CONFIG_MSDOS_FS=m
CONFIG_VFAT_FS=m
CONFIG_PROC_KCORE=y
CONFIG_TMPFS=y
CONFIG_NFS_FS=y
CONFIG_NFS_V3_ACL=y
CONFIG_NFS_V4=y
CONFIG_ROOT_NFS=y
CONFIG_NFSD=m
CONFIG_NFSD_V3=y
CONFIG_CIFS=m
CONFIG_NLS=y
CONFIG_NLS_CODEPAGE_437=m
CONFIG_NLS_CODEPAGE_932=m
CONFIG_NLS_ISO8859_1=m
CONFIG_NLS_UTF8=m
CONFIG_CRC_CCITT=m
CONFIG_CRC_T10DIF=y
CONFIG_XZ_DEC=y
CONFIG_XZ_DEC_X86=y
CONFIG_XZ_DEC_IA64=y
CONFIG_XZ_DEC_ARM=y
CONFIG_XZ_DEC_ARMTHUMB=y
CONFIG_XZ_DEC_SPARC=y
CONFIG_MAGIC_SYSRQ=y
CONFIG_DEBUG_KERNEL=y
CONFIG_DETECT_HUNG_TASK=y
CONFIG_DEFAULT_HUNG_TASK_TIMEOUT=20
CONFIG_CRYPTO_CBC=y
CONFIG_CRYPTO_PCBC=m
CONFIG_CRYPTO_MD5=y
CONFIG_CRYPTO_MICHAEL_MIC=m
CONFIG_CRYPTO_SHA1=m
CONFIG_CRYPTO_BLOWFISH=m
CONFIG_CRYPTO_DES=y
CONFIG_CRYPTO_SERPENT=m
CONFIG_CRYPTO_TWOFISH=m
CONFIG_CRYPTO_DEFLATE=m
# CONFIG_CRYPTO_ANSI_CPRNG is not set
Loading