diff options
author | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-10-20 22:14:22 -0400 |
---|---|---|
committer | Benjamin Herrenschmidt <benh@kernel.crashing.org> | 2008-10-20 22:14:22 -0400 |
commit | dfe218b7ef0c1d561a0d5ce294c173f1551985ff (patch) | |
tree | 10b9f4bfa92a1fe236df0af128aa2c12932faf07 /arch/powerpc/platforms | |
parent | 34318c253b861f82bd4a2956e6c8ae8ee2c3aae7 (diff) | |
parent | 1ff0fcfcb1a6d0a4c4d065ed230be7beae087b83 (diff) |
Merge commit 'jwb/jwb-next'
Diffstat (limited to 'arch/powerpc/platforms')
-rw-r--r-- | arch/powerpc/platforms/40x/Kconfig | 38 | ||||
-rw-r--r-- | arch/powerpc/platforms/40x/Makefile | 2 | ||||
-rw-r--r-- | arch/powerpc/platforms/40x/hcu4.c | 61 | ||||
-rw-r--r-- | arch/powerpc/platforms/40x/ppc40x_simple.c | 80 | ||||
-rw-r--r-- | arch/powerpc/platforms/44x/Kconfig | 8 |
5 files changed, 189 insertions, 0 deletions
diff --git a/arch/powerpc/platforms/40x/Kconfig b/arch/powerpc/platforms/40x/Kconfig index a9260e21451e..65730275e012 100644 --- a/arch/powerpc/platforms/40x/Kconfig +++ b/arch/powerpc/platforms/40x/Kconfig | |||
@@ -14,6 +14,15 @@ | |||
14 | # help | 14 | # help |
15 | # This option enables support for the CPCI405 board. | 15 | # This option enables support for the CPCI405 board. |
16 | 16 | ||
17 | config ACADIA | ||
18 | bool "Acadia" | ||
19 | depends on 40x | ||
20 | default n | ||
21 | select PPC40x_SIMPLE | ||
22 | select 405EZ | ||
23 | help | ||
24 | This option enables support for the AMCC 405EZ Acadia evaluation board. | ||
25 | |||
17 | config EP405 | 26 | config EP405 |
18 | bool "EP405/EP405PC" | 27 | bool "EP405/EP405PC" |
19 | depends on 40x | 28 | depends on 40x |
@@ -23,6 +32,14 @@ config EP405 | |||
23 | help | 32 | help |
24 | This option enables support for the EP405/EP405PC boards. | 33 | This option enables support for the EP405/EP405PC boards. |
25 | 34 | ||
35 | config HCU4 | ||
36 | bool "Hcu4" | ||
37 | depends on 40x | ||
38 | default y | ||
39 | select 405GPR | ||
40 | help | ||
41 | This option enables support for the Nestal Maschinen HCU4 board. | ||
42 | |||
26 | config KILAUEA | 43 | config KILAUEA |
27 | bool "Kilauea" | 44 | bool "Kilauea" |
28 | depends on 40x | 45 | depends on 40x |
@@ -93,6 +110,13 @@ config XILINX_VIRTEX_GENERIC_BOARD | |||
93 | Most Virtex designs should use this unless it needs to do some | 110 | Most Virtex designs should use this unless it needs to do some |
94 | special configuration at board probe time. | 111 | special configuration at board probe time. |
95 | 112 | ||
113 | config PPC40x_SIMPLE | ||
114 | bool "Simple PowerPC 40x board support" | ||
115 | depends on 40x | ||
116 | default n | ||
117 | help | ||
118 | This option enables the simple PowerPC 40x platform support. | ||
119 | |||
96 | # 40x specific CPU modules, selected based on the board above. | 120 | # 40x specific CPU modules, selected based on the board above. |
97 | config NP405H | 121 | config NP405H |
98 | bool | 122 | bool |
@@ -118,6 +142,12 @@ config 405EX | |||
118 | select IBM_NEW_EMAC_EMAC4 | 142 | select IBM_NEW_EMAC_EMAC4 |
119 | select IBM_NEW_EMAC_RGMII | 143 | select IBM_NEW_EMAC_RGMII |
120 | 144 | ||
145 | config 405EZ | ||
146 | bool | ||
147 | select IBM_NEW_EMAC_NO_FLOW_CTRL | ||
148 | select IBM_NEW_EMAC_MAL_CLR_ICINTSTAT | ||
149 | select IBM_NEW_EMAC_MAL_COMMON_ERR | ||
150 | |||
121 | config 405GPR | 151 | config 405GPR |
122 | bool | 152 | bool |
123 | 153 | ||
@@ -139,6 +169,14 @@ config STB03xxx | |||
139 | select IBM405_ERR77 | 169 | select IBM405_ERR77 |
140 | select IBM405_ERR51 | 170 | select IBM405_ERR51 |
141 | 171 | ||
172 | config PPC4xx_GPIO | ||
173 | bool "PPC4xx GPIO support" | ||
174 | depends on 40x | ||
175 | select ARCH_REQUIRE_GPIOLIB | ||
176 | select GENERIC_GPIO | ||
177 | help | ||
178 | Enable gpiolib support for ppc40x based boards | ||
179 | |||
142 | # 40x errata/workaround config symbols, selected by the CPU models above | 180 | # 40x errata/workaround config symbols, selected by the CPU models above |
143 | 181 | ||
144 | # All 405-based cores up until the 405GPR and 405EP have this errata. | 182 | # All 405-based cores up until the 405GPR and 405EP have this errata. |
diff --git a/arch/powerpc/platforms/40x/Makefile b/arch/powerpc/platforms/40x/Makefile index 5533a5c8ce4e..9bab76a652a6 100644 --- a/arch/powerpc/platforms/40x/Makefile +++ b/arch/powerpc/platforms/40x/Makefile | |||
@@ -1,5 +1,7 @@ | |||
1 | obj-$(CONFIG_KILAUEA) += kilauea.o | 1 | obj-$(CONFIG_KILAUEA) += kilauea.o |
2 | obj-$(CONFIG_HCU4) += hcu4.o | ||
2 | obj-$(CONFIG_MAKALU) += makalu.o | 3 | obj-$(CONFIG_MAKALU) += makalu.o |
3 | obj-$(CONFIG_WALNUT) += walnut.o | 4 | obj-$(CONFIG_WALNUT) += walnut.o |
4 | obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o | 5 | obj-$(CONFIG_XILINX_VIRTEX_GENERIC_BOARD) += virtex.o |
5 | obj-$(CONFIG_EP405) += ep405.o | 6 | obj-$(CONFIG_EP405) += ep405.o |
7 | obj-$(CONFIG_PPC40x_SIMPLE) += ppc40x_simple.o | ||
diff --git a/arch/powerpc/platforms/40x/hcu4.c b/arch/powerpc/platforms/40x/hcu4.c new file mode 100644 index 000000000000..60b2afecab75 --- /dev/null +++ b/arch/powerpc/platforms/40x/hcu4.c | |||
@@ -0,0 +1,61 @@ | |||
1 | /* | ||
2 | * Architecture- / platform-specific boot-time initialization code for | ||
3 | * IBM PowerPC 4xx based boards. Adapted from original | ||
4 | * code by Gary Thomas, Cort Dougan <cort@fsmlabs.com>, and Dan Malek | ||
5 | * <dan@net4x.com>. | ||
6 | * | ||
7 | * Copyright(c) 1999-2000 Grant Erickson <grant@lcse.umn.edu> | ||
8 | * | ||
9 | * Rewritten and ported to the merged powerpc tree: | ||
10 | * Copyright 2007 IBM Corporation | ||
11 | * Josh Boyer <jwboyer@linux.vnet.ibm.com> | ||
12 | * | ||
13 | * 2002 (c) MontaVista, Software, Inc. This file is licensed under | ||
14 | * the terms of the GNU General Public License version 2. This program | ||
15 | * is licensed "as is" without any warranty of any kind, whether express | ||
16 | * or implied. | ||
17 | */ | ||
18 | |||
19 | #include <linux/init.h> | ||
20 | #include <linux/of_platform.h> | ||
21 | |||
22 | #include <asm/machdep.h> | ||
23 | #include <asm/prom.h> | ||
24 | #include <asm/udbg.h> | ||
25 | #include <asm/time.h> | ||
26 | #include <asm/uic.h> | ||
27 | #include <asm/ppc4xx.h> | ||
28 | |||
29 | static __initdata struct of_device_id hcu4_of_bus[] = { | ||
30 | { .compatible = "ibm,plb3", }, | ||
31 | { .compatible = "ibm,opb", }, | ||
32 | { .compatible = "ibm,ebc", }, | ||
33 | {}, | ||
34 | }; | ||
35 | |||
36 | static int __init hcu4_device_probe(void) | ||
37 | { | ||
38 | of_platform_bus_probe(NULL, hcu4_of_bus, NULL); | ||
39 | return 0; | ||
40 | } | ||
41 | machine_device_initcall(hcu4, hcu4_device_probe); | ||
42 | |||
43 | static int __init hcu4_probe(void) | ||
44 | { | ||
45 | unsigned long root = of_get_flat_dt_root(); | ||
46 | |||
47 | if (!of_flat_dt_is_compatible(root, "netstal,hcu4")) | ||
48 | return 0; | ||
49 | |||
50 | return 1; | ||
51 | } | ||
52 | |||
53 | define_machine(hcu4) { | ||
54 | .name = "HCU4", | ||
55 | .probe = hcu4_probe, | ||
56 | .progress = udbg_progress, | ||
57 | .init_IRQ = uic_init_tree, | ||
58 | .get_irq = uic_get_irq, | ||
59 | .restart = ppc4xx_reset_system, | ||
60 | .calibrate_decr = generic_calibrate_decr, | ||
61 | }; | ||
diff --git a/arch/powerpc/platforms/40x/ppc40x_simple.c b/arch/powerpc/platforms/40x/ppc40x_simple.c new file mode 100644 index 000000000000..4498a86b46c3 --- /dev/null +++ b/arch/powerpc/platforms/40x/ppc40x_simple.c | |||
@@ -0,0 +1,80 @@ | |||
1 | /* | ||
2 | * Generic PowerPC 40x platform support | ||
3 | * | ||
4 | * Copyright 2008 IBM Corporation | ||
5 | * | ||
6 | * This program is free software; you can redistribute it and/or modify it | ||
7 | * under the terms of the GNU General Public License as published by the | ||
8 | * Free Software Foundation; version 2 of the License. | ||
9 | * | ||
10 | * This implements simple platform support for PowerPC 44x chips. This is | ||
11 | * mostly used for eval boards or other simple and "generic" 44x boards. If | ||
12 | * your board has custom functions or hardware, then you will likely want to | ||
13 | * implement your own board.c file to accommodate it. | ||
14 | */ | ||
15 | |||
16 | #include <asm/machdep.h> | ||
17 | #include <asm/pci-bridge.h> | ||
18 | #include <asm/ppc4xx.h> | ||
19 | #include <asm/prom.h> | ||
20 | #include <asm/time.h> | ||
21 | #include <asm/udbg.h> | ||
22 | #include <asm/uic.h> | ||
23 | |||
24 | #include <linux/init.h> | ||
25 | #include <linux/of_platform.h> | ||
26 | |||
27 | static __initdata struct of_device_id ppc40x_of_bus[] = { | ||
28 | { .compatible = "ibm,plb3", }, | ||
29 | { .compatible = "ibm,plb4", }, | ||
30 | { .compatible = "ibm,opb", }, | ||
31 | { .compatible = "ibm,ebc", }, | ||
32 | { .compatible = "simple-bus", }, | ||
33 | {}, | ||
34 | }; | ||
35 | |||
36 | static int __init ppc40x_device_probe(void) | ||
37 | { | ||
38 | of_platform_bus_probe(NULL, ppc40x_of_bus, NULL); | ||
39 | |||
40 | return 0; | ||
41 | } | ||
42 | machine_device_initcall(ppc40x_simple, ppc40x_device_probe); | ||
43 | |||
44 | /* This is the list of boards that can be supported by this simple | ||
45 | * platform code. This does _not_ mean the boards are compatible, | ||
46 | * as they most certainly are not from a device tree perspective. | ||
47 | * However, their differences are handled by the device tree and the | ||
48 | * drivers and therefore they don't need custom board support files. | ||
49 | * | ||
50 | * Again, if your board needs to do things differently then create a | ||
51 | * board.c file for it rather than adding it to this list. | ||
52 | */ | ||
53 | static char *board[] __initdata = { | ||
54 | "amcc,acadia" | ||
55 | }; | ||
56 | |||
57 | static int __init ppc40x_probe(void) | ||
58 | { | ||
59 | unsigned long root = of_get_flat_dt_root(); | ||
60 | int i = 0; | ||
61 | |||
62 | for (i = 0; i < ARRAY_SIZE(board); i++) { | ||
63 | if (of_flat_dt_is_compatible(root, board[i])) { | ||
64 | ppc_pci_flags = PPC_PCI_REASSIGN_ALL_RSRC; | ||
65 | return 1; | ||
66 | } | ||
67 | } | ||
68 | |||
69 | return 0; | ||
70 | } | ||
71 | |||
72 | define_machine(ppc40x_simple) { | ||
73 | .name = "PowerPC 40x Platform", | ||
74 | .probe = ppc40x_probe, | ||
75 | .progress = udbg_progress, | ||
76 | .init_IRQ = uic_init_tree, | ||
77 | .get_irq = uic_get_irq, | ||
78 | .restart = ppc4xx_reset_system, | ||
79 | .calibrate_decr = generic_calibrate_decr, | ||
80 | }; | ||
diff --git a/arch/powerpc/platforms/44x/Kconfig b/arch/powerpc/platforms/44x/Kconfig index 79c1154f88d4..3496bc05058e 100644 --- a/arch/powerpc/platforms/44x/Kconfig +++ b/arch/powerpc/platforms/44x/Kconfig | |||
@@ -167,6 +167,14 @@ config PPC44x_SIMPLE | |||
167 | help | 167 | help |
168 | This option enables the simple PowerPC 44x platform support. | 168 | This option enables the simple PowerPC 44x platform support. |
169 | 169 | ||
170 | config PPC4xx_GPIO | ||
171 | bool "PPC4xx GPIO support" | ||
172 | depends on 44x | ||
173 | select ARCH_REQUIRE_GPIOLIB | ||
174 | select GENERIC_GPIO | ||
175 | help | ||
176 | Enable gpiolib support for ppc440 based boards | ||
177 | |||
170 | # 44x specific CPU modules, selected based on the board above. | 178 | # 44x specific CPU modules, selected based on the board above. |
171 | config 440EP | 179 | config 440EP |
172 | bool | 180 | bool |