1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
|
support for the Giant Shoulder Inc Loft board - a very minor
variation on a standard Avila board
--- linux-2.6.15/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.15/arch/arm/mach-ixp4xx/Kconfig 1970-01-01 00:00:00.000000000 +0000
@@ -25,6 +25,12 @@ config ARCH_AVILA
Avila Network Platform. For more information on this platform,
see <file:Documentation/arm/IXP4xx>.
+config MACH_LOFT
+ bool "Loft"
+ help
+ Say 'Y' here if you want your kernel to support the Giant
+ Shoulder Inc Loft board.
+
config ARCH_ADI_COYOTE
bool "Coyote"
help
@@ -85,7 +91,7 @@ config MACH_NAS100D
#
config ARCH_IXDP4XX
bool
- depends on ARCH_IXDP425 || ARCH_AVILA || MACH_IXDP465
+ depends on ARCH_IXDP425 || ARCH_AVILA || MACH_IXDP465 || MACH_LOFT
default y
#
--- linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-pci.c 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-pci.c 1970-01-01 00:00:00.000000000 +0000
@@ -51,7 +51,8 @@ static int __init ixdp425_map_irq(struct
int irq = -1;
- if (slot >= 1 && slot <= IXDP425_PCI_MAX_DEV &&
+ if (slot >= 1 &&
+ slot <= (machine_is_loft() ? LOFT_PCI_MAX_DEV : IXDP425_PCI_MAX_DEV) &&
pin >= 1 && pin <= IXDP425_PCI_IRQ_LINES) {
irq = pci_irq_table[(slot + pin - 2) % 4];
}
@@ -71,7 +72,8 @@ struct hw_pci ixdp425_pci __initdata = {
int __init ixdp425_pci_init(void)
{
if (machine_is_ixdp425() || machine_is_ixcdp1100() ||
- machine_is_avila() || machine_is_ixdp465())
+ machine_is_avila() || machine_is_ixdp465() ||
+ machine_is_loft())
pci_common_init(&ixdp425_pci);
return 0;
}
--- linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-setup.c 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.15/arch/arm/mach-ixp4xx/ixdp425-setup.c 1970-01-01 00:00:00.000000000 +0000
@@ -185,3 +185,22 @@ MACHINE_START(AVILA, "Gateworks Avila Ne
MACHINE_END
#endif
+/*
+ * Loft is functionally equivalent to Avila except that it has a
+ * different number for the maximum PCI devices. The MACHINE
+ * structure below is identical to Avila except for the comment.
+ */
+#ifdef CONFIG_MACH_LOFT
+MACHINE_START(LOFT, "Giant Shoulder Inc Loft board")
+ /* Maintainer: Tom Billman <kernel@giantshoulderinc.com> */
+ .phys_ram = PHYS_OFFSET,
+ .phys_io = IXP4XX_PERIPHERAL_BASE_PHYS,
+ .io_pg_offst = ((IXP4XX_PERIPHERAL_BASE_VIRT) >> 18) & 0xfffc,
+ .map_io = ixp4xx_map_io,
+ .init_irq = ixp4xx_init_irq,
+ .timer = &ixp4xx_timer,
+ .boot_params = 0x0100,
+ .init_machine = ixdp425_init,
+MACHINE_END
+#endif
+
--- linux-2.6.15/include/asm-arm/arch-ixp4xx/ixdp425.h 1970-01-01 00:00:00.000000000 +0000
+++ linux-2.6.15/include/asm-arm/arch-ixp4xx/ixdp425.h 1970-01-01 00:00:00.000000000 +0000
@@ -26,6 +26,7 @@
* IXDP425 PCI IRQs
*/
#define IXDP425_PCI_MAX_DEV 4
+#define LOFT_PCI_MAX_DEV 6
#define IXDP425_PCI_IRQ_LINES 4
|