From 5451333e82caa06855bb8a55e126171845e72799 Mon Sep 17 00:00:00 2001 From: kaloz Date: Wed, 26 Nov 2008 10:06:34 +0000 Subject: nuke the magicbox target and incorporate a rewritten port into ppc40x - note: no CF driver for now git-svn-id: svn://svn.openwrt.org/openwrt/trunk@13358 3c298f89-4303-0410-b956-a3cf2f4a3e73 --- .../003-ppc40x_simple_platform_support.patch | 142 +++++++++++++++++++++ 1 file changed, 142 insertions(+) create mode 100644 target/linux/ppc40x/patches/003-ppc40x_simple_platform_support.patch (limited to 'target/linux/ppc40x/patches/003-ppc40x_simple_platform_support.patch') diff --git a/target/linux/ppc40x/patches/003-ppc40x_simple_platform_support.patch b/target/linux/ppc40x/patches/003-ppc40x_simple_platform_support.patch new file mode 100644 index 000000000..3f07ee5e8 --- /dev/null +++ b/target/linux/ppc40x/patches/003-ppc40x_simple_platform_support.patch @@ -0,0 +1,142 @@ +diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig +index a9260e2..72ba3a7 100644 +--- a/arch/powerpc/platforms/40x/Kconfig ++++ b/arch/powerpc/platforms/40x/Kconfig +@@ -14,6 +14,15 @@ + # help + # This option enables support for the CPCI405 board. + ++config ACADIA ++ bool "Acadia" ++ depends on 40x ++ default n ++ select PPC40x_SIMPLE ++ select 405EZ ++ help ++ This option enables support for the AMCC 405EZ Acadia evaluation board. ++ + config EP405 + bool "EP405/EP405PC" + depends on 40x +@@ -93,6 +102,13 @@ config XILINX_VIRTEX_GENERIC_BOARD + Most Virtex designs should use this unless it needs to do some + special configuration at board probe time. + ++config PPC40x_SIMPLE ++ bool "Simple PowerPC 40x board support" ++ depends on 40x ++ default n ++ help ++ This option enables the simple PowerPC 40x platform support. ++ + # 40x specific CPU modules, selected based on the board above. + config NP405H + bool +@@ -118,6 +134,12 @@ config 405EX + select IBM_NEW_EMAC_EMAC4 + select IBM_NEW_EMAC_RGMII + ++config 405EZ ++ bool ++ select IBM_NEW_EMAC_NO_FLOW_CTRL ++ select IBM_NEW_EMAC_MAL_CLR_ICINTSTAT ++ select IBM_NEW_EMAC_MAL_COMMON_ERR ++ + config 405GPR + bool + +diff --git a/arch/powerpc/platforms/40x/Makefile b/arch/powerpc/platforms/40x/Makefile +index 5533a5c..1d93273 100644 +--- a/arch/powerpc/platforms/40x/Makefile ++++ b/arch/powerpc/platforms/40x/Makefile +@@ -3,3 +3,4 @@ obj-$(CONFIG_MAKALU) += makalu.o + obj-$(CONFIG_WALNUT) += walnut.o + obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o + obj-$(CONFIG_EP405) += ep405.o ++obj-$(CONFIG_PPC40x_SIMPLE) += ppc40x_simple.o +diff --git a/arch/powerpc/platforms/40x/ppc40x_simple.c b/arch/powerpc/platforms/40x/ppc40x_simple.c +new file mode 100644 +index 0000000..4498a86 +--- /dev/null ++++ b/arch/powerpc/platforms/40x/ppc40x_simple.c +@@ -0,0 +1,80 @@ ++/* ++ * Generic PowerPC 40x platform support ++ * ++ * Copyright 2008 IBM Corporation ++ * ++ * 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; version 2 of the License. ++ * ++ * This implements simple platform support for PowerPC 44x chips. This is ++ * mostly used for eval boards or other simple and "generic" 44x boards. If ++ * your board has custom functions or hardware, then you will likely want to ++ * implement your own board.c file to accommodate it. ++ */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include ++#include ++ ++static __initdata struct of_device_id ppc40x_of_bus[] = { ++ { .compatible = "ibm,plb3", }, ++ { .compatible = "ibm,plb4", }, ++ { .compatible = "ibm,opb", }, ++ { .compatible = "ibm,ebc", }, ++ { .compatible = "simple-bus", }, ++ {}, ++}; ++ ++static int __init ppc40x_device_probe(void) ++{ ++ of_platform_bus_probe(NULL, ppc40x_of_bus, NULL); ++ ++ return 0; ++} ++machine_device_initcall(ppc40x_simple, ppc40x_device_probe); ++ ++/* This is the list of boards that can be supported by this simple ++ * platform code. This does _not_ mean the boards are compatible, ++ * as they most certainly are not from a device tree perspective. ++ * However, their differences are handled by the device tree and the ++ * drivers and therefore they don't need custom board support files. ++ * ++ * Again, if your board needs to do things differently then create a ++ * board.c file for it rather than adding it to this list. ++ */ ++static char *board[] __initdata = { ++ "amcc,acadia" ++}; ++ ++static int __init ppc40x_probe(void) ++{ ++ unsigned long root = of_get_flat_dt_root(); ++ int i = 0; ++ ++ for (i = 0; i < ARRAY_SIZE(board); i++) { ++ if (of_flat_dt_is_compatible(root, board[i])) { ++ ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC; ++ return 1; ++ } ++ } ++ ++ return 0; ++} ++ ++define_machine(ppc40x_simple) { ++ .name = "PowerPC 40x Platform", ++ .probe = ppc40x_probe, ++ .progress = udbg_progress, ++ .init_IRQ = uic_init_tree, ++ .get_irq = uic_get_irq, ++ .restart = ppc4xx_reset_system, ++ .calibrate_decr = generic_calibrate_decr, ++}; -- cgit v1.2.3