Root/
1 | /* |
2 | * linux/arch/arm/mach-sa1100/pleb.c |
3 | */ |
4 | |
5 | #include <linux/init.h> |
6 | #include <linux/kernel.h> |
7 | #include <linux/tty.h> |
8 | #include <linux/ioport.h> |
9 | #include <linux/platform_device.h> |
10 | #include <linux/irq.h> |
11 | #include <linux/io.h> |
12 | #include <linux/mtd/partitions.h> |
13 | |
14 | #include <mach/hardware.h> |
15 | #include <asm/setup.h> |
16 | #include <asm/mach-types.h> |
17 | |
18 | #include <asm/mach/arch.h> |
19 | #include <asm/mach/map.h> |
20 | #include <asm/mach/flash.h> |
21 | #include <asm/mach/serial_sa1100.h> |
22 | #include <mach/irqs.h> |
23 | |
24 | #include "generic.h" |
25 | |
26 | |
27 | /* |
28 | * Ethernet IRQ mappings |
29 | */ |
30 | |
31 | #define PLEB_ETH0_P (0x20000300) /* Ethernet 0 in PCMCIA0 IO */ |
32 | #define PLEB_ETH0_V (0xf6000300) |
33 | |
34 | #define GPIO_ETH0_IRQ GPIO_GPIO(21) |
35 | #define GPIO_ETH0_EN GPIO_GPIO(26) |
36 | |
37 | #define IRQ_GPIO_ETH0_IRQ IRQ_GPIO21 |
38 | |
39 | static struct resource smc91x_resources[] = { |
40 | [0] = { |
41 | .start = PLEB_ETH0_P, |
42 | .end = PLEB_ETH0_P | 0x03ffffff, |
43 | .flags = IORESOURCE_MEM, |
44 | }, |
45 | #if 0 /* Autoprobe instead, to get rising/falling edge characteristic right */ |
46 | [1] = { |
47 | .start = IRQ_GPIO_ETH0_IRQ, |
48 | .end = IRQ_GPIO_ETH0_IRQ, |
49 | .flags = IORESOURCE_IRQ, |
50 | }, |
51 | #endif |
52 | }; |
53 | |
54 | |
55 | static struct platform_device smc91x_device = { |
56 | .name = "smc91x", |
57 | .id = 0, |
58 | .num_resources = ARRAY_SIZE(smc91x_resources), |
59 | .resource = smc91x_resources, |
60 | }; |
61 | |
62 | static struct platform_device *devices[] __initdata = { |
63 | &smc91x_device, |
64 | }; |
65 | |
66 | |
67 | /* |
68 | * Pleb's memory map |
69 | * has flash memory (typically 4 or 8 meg) selected by |
70 | * the two SA1100 lowest chip select outputs. |
71 | */ |
72 | static struct resource pleb_flash_resources[] = { |
73 | [0] = { |
74 | .start = SA1100_CS0_PHYS, |
75 | .end = SA1100_CS0_PHYS + SZ_8M - 1, |
76 | .flags = IORESOURCE_MEM, |
77 | }, |
78 | [1] = { |
79 | .start = SA1100_CS1_PHYS, |
80 | .end = SA1100_CS1_PHYS + SZ_8M - 1, |
81 | .flags = IORESOURCE_MEM, |
82 | } |
83 | }; |
84 | |
85 | |
86 | static struct mtd_partition pleb_partitions[] = { |
87 | { |
88 | .name = "blob", |
89 | .offset = 0, |
90 | .size = 0x00020000, |
91 | }, { |
92 | .name = "kernel", |
93 | .offset = MTDPART_OFS_APPEND, |
94 | .size = 0x000e0000, |
95 | }, { |
96 | .name = "rootfs", |
97 | .offset = MTDPART_OFS_APPEND, |
98 | .size = 0x00300000, |
99 | } |
100 | }; |
101 | |
102 | |
103 | static struct flash_platform_data pleb_flash_data = { |
104 | .map_name = "cfi_probe", |
105 | .parts = pleb_partitions, |
106 | .nr_parts = ARRAY_SIZE(pleb_partitions), |
107 | }; |
108 | |
109 | |
110 | static void __init pleb_init(void) |
111 | { |
112 | sa11x0_register_mtd(&pleb_flash_data, pleb_flash_resources, |
113 | ARRAY_SIZE(pleb_flash_resources)); |
114 | |
115 | |
116 | platform_add_devices(devices, ARRAY_SIZE(devices)); |
117 | } |
118 | |
119 | |
120 | static void __init pleb_map_io(void) |
121 | { |
122 | sa1100_map_io(); |
123 | |
124 | sa1100_register_uart(0, 3); |
125 | sa1100_register_uart(1, 1); |
126 | |
127 | GAFR |= (GPIO_UART_TXD | GPIO_UART_RXD); |
128 | GPDR |= GPIO_UART_TXD; |
129 | GPDR &= ~GPIO_UART_RXD; |
130 | PPAR |= PPAR_UPR; |
131 | |
132 | /* |
133 | * Fix expansion memory timing for network card |
134 | */ |
135 | MECR = ((2<<10) | (2<<5) | (2<<0)); |
136 | |
137 | /* |
138 | * Enable the SMC ethernet controller |
139 | */ |
140 | GPDR |= GPIO_ETH0_EN; /* set to output */ |
141 | GPCR = GPIO_ETH0_EN; /* clear MCLK (enable smc) */ |
142 | |
143 | GPDR &= ~GPIO_ETH0_IRQ; |
144 | |
145 | set_irq_type(GPIO_ETH0_IRQ, IRQ_TYPE_EDGE_FALLING); |
146 | } |
147 | |
148 | MACHINE_START(PLEB, "PLEB") |
149 | .map_io = pleb_map_io, |
150 | .init_irq = sa1100_init_irq, |
151 | .timer = &sa1100_timer, |
152 | .init_machine = pleb_init, |
153 | MACHINE_END |
154 |
Branches:
ben-wpan
ben-wpan-stefan
javiroman/ks7010
jz-2.6.34
jz-2.6.34-rc5
jz-2.6.34-rc6
jz-2.6.34-rc7
jz-2.6.35
jz-2.6.36
jz-2.6.37
jz-2.6.38
jz-2.6.39
jz-3.0
jz-3.1
jz-3.11
jz-3.12
jz-3.13
jz-3.15
jz-3.16
jz-3.18-dt
jz-3.2
jz-3.3
jz-3.4
jz-3.5
jz-3.6
jz-3.6-rc2-pwm
jz-3.9
jz-3.9-clk
jz-3.9-rc8
jz47xx
jz47xx-2.6.38
master
Tags:
od-2011-09-04
od-2011-09-18
v2.6.34-rc5
v2.6.34-rc6
v2.6.34-rc7
v3.9