Blame view

arch/blackfin/mach-bf561/boards/cm_bf561.c 12.7 KB
1394f0322   Bryan Wu   blackfin architec...
1
  /*
96f1050d3   Robin Getz   Blackfin: mass cl...
2
3
4
5
   * Copyright 2004-2009 Analog Devices Inc.
   *               2008-2009 Bluetechnix
   *               2005 National ICT Australia (NICTA)
   *                    Aidan Williams <aidan@nicta.com.au>
1394f0322   Bryan Wu   blackfin architec...
6
   *
96f1050d3   Robin Getz   Blackfin: mass cl...
7
   * Licensed under the GPL-2 or later.
1394f0322   Bryan Wu   blackfin architec...
8
9
10
11
12
13
14
15
   */
  
  #include <linux/device.h>
  #include <linux/platform_device.h>
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/partitions.h>
  #include <linux/spi/spi.h>
  #include <linux/spi/flash.h>
b964c592d   Mike Frysinger   [Blackfin] arch: ...
16
  #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
f02bcec59   Mike Frysinger   Blackfin arch: re...
17
  #include <linux/usb/isp1362.h>
b964c592d   Mike Frysinger   [Blackfin] arch: ...
18
  #endif
0a87e3e92   Jeff Garzik   Rename: linux/pat...
19
  #include <linux/ata_platform.h>
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
20
  #include <linux/irq.h>
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
21
  #include <asm/dma.h>
1394f0322   Bryan Wu   blackfin architec...
22
  #include <asm/bfin5xx_spi.h>
5d448dd50   Bryan Wu   Blackfin arch: mo...
23
  #include <asm/portmux.h>
14b03204c   Michael Hennerich   [Blackfin] arch: ...
24
  #include <asm/dpmc.h>
9c21453e3   Harald Krapfenbauer   Blackfin: update ...
25
  #include <linux/mtd/physmap.h>
1394f0322   Bryan Wu   blackfin architec...
26
27
28
29
  
  /*
   * Name the Board for the /proc/cpuinfo
   */
066954a38   Mike Frysinger   Blackfin arch: us...
30
  const char bfin_board_name[] = "Bluetechnix CM BF561";
1394f0322   Bryan Wu   blackfin architec...
31

7d157fb02   Sonic Zhang   blackfin: config:...
32
  #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
d2d50aa97   Simon Arlott   Blackfin arch: sp...
33
  /* all SPI peripherals info goes here */
1394f0322   Bryan Wu   blackfin architec...
34
35
36
37
  
  #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
  static struct mtd_partition bfin_spi_flash_partitions[] = {
  	{
aa5829776   Robin Getz   Blackfin arch: be...
38
  		.name = "bootloader(spi)",
1394f0322   Bryan Wu   blackfin architec...
39
40
41
  		.size = 0x00020000,
  		.offset = 0,
  		.mask_flags = MTD_CAP_ROM
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
42
  	}, {
aa5829776   Robin Getz   Blackfin arch: be...
43
  		.name = "linux kernel(spi)",
1394f0322   Bryan Wu   blackfin architec...
44
45
  		.size = 0xe0000,
  		.offset = 0x20000
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
46
  	}, {
aa5829776   Robin Getz   Blackfin arch: be...
47
  		.name = "file system(spi)",
1394f0322   Bryan Wu   blackfin architec...
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
  		.size = 0x700000,
  		.offset = 0x00100000,
  	}
  };
  
  static struct flash_platform_data bfin_spi_flash_data = {
  	.name = "m25p80",
  	.parts = bfin_spi_flash_partitions,
  	.nr_parts = ARRAY_SIZE(bfin_spi_flash_partitions),
  	.type = "m25p64",
  };
  
  /* SPI flash chip (m25p64) */
  static struct bfin5xx_spi_chip spi_flash_chip_info = {
  	.enable_dma = 0,         /* use dma transfer with this chip*/
1394f0322   Bryan Wu   blackfin architec...
63
64
65
66
67
68
69
70
71
  };
  #endif
  
  static struct spi_board_info bfin_spi_board_info[] __initdata = {
  #if defined(CONFIG_MTD_M25P80) || defined(CONFIG_MTD_M25P80_MODULE)
  	{
  		/* the modalias must be the same as spi device driver name */
  		.modalias = "m25p80", /* Name of spi_driver for this device */
  		.max_speed_hz = 25000000,     /* max spi clock (SCK) speed in HZ */
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
72
  		.bus_num = 0, /* Framework bus number */
1394f0322   Bryan Wu   blackfin architec...
73
74
75
76
77
78
  		.chip_select = 1, /* Framework chip select. On STAMP537 it is SPISSEL1*/
  		.platform_data = &bfin_spi_flash_data,
  		.controller_data = &spi_flash_chip_info,
  		.mode = SPI_MODE_3,
  	},
  #endif
7ba80063e   Barry Song   Blackfin: boards:...
79
  #if defined(CONFIG_SND_BF5XX_SOC_AD183X) || defined(CONFIG_SND_BF5XX_SOC_AD183X_MODULE)
1394f0322   Bryan Wu   blackfin architec...
80
  	{
7ba80063e   Barry Song   Blackfin: boards:...
81
  		.modalias = "ad183x",
1394f0322   Bryan Wu   blackfin architec...
82
  		.max_speed_hz = 3125000,     /* max spi clock (SCK) speed in HZ */
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
83
  		.bus_num = 0,
7ba80063e   Barry Song   Blackfin: boards:...
84
  		.chip_select = 4,
1394f0322   Bryan Wu   blackfin architec...
85
86
  	},
  #endif
f3f704d37   Michael Hennerich   Blackfin arch: SP...
87
  #if defined(CONFIG_MMC_SPI) || defined(CONFIG_MMC_SPI_MODULE)
1394f0322   Bryan Wu   blackfin architec...
88
  	{
f3f704d37   Michael Hennerich   Blackfin arch: SP...
89
  		.modalias = "mmc_spi",
9c21453e3   Harald Krapfenbauer   Blackfin: update ...
90
  		.max_speed_hz = 20000000,     /* max spi clock (SCK) speed in HZ */
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
91
  		.bus_num = 0,
9c21453e3   Harald Krapfenbauer   Blackfin: update ...
92
  		.chip_select = 1,
1394f0322   Bryan Wu   blackfin architec...
93
94
95
96
  		.mode = SPI_MODE_3,
  	},
  #endif
  };
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
97
98
99
100
101
102
103
104
105
106
  /* SPI (0) */
  static struct resource bfin_spi0_resource[] = {
  	[0] = {
  		.start = SPI0_REGBASE,
  		.end   = SPI0_REGBASE + 0xFF,
  		.flags = IORESOURCE_MEM,
  	},
  	[1] = {
  		.start = CH_SPI,
  		.end   = CH_SPI,
53122693c   Yi Li   Blackfin: define ...
107
108
109
110
111
  		.flags = IORESOURCE_DMA,
  	},
  	[2] = {
  		.start = IRQ_SPI,
  		.end   = IRQ_SPI,
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
112
  		.flags = IORESOURCE_IRQ,
53122693c   Yi Li   Blackfin: define ...
113
  	},
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
114
  };
1394f0322   Bryan Wu   blackfin architec...
115
  /* SPI controller data */
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
116
  static struct bfin5xx_spi_master bfin_spi0_info = {
1394f0322   Bryan Wu   blackfin architec...
117
118
  	.num_chipselect = 8,
  	.enable_dma = 1,  /* master has the ability to do dma transfer */
5d448dd50   Bryan Wu   Blackfin arch: mo...
119
  	.pin_req = {P_SPI0_SCK, P_SPI0_MISO, P_SPI0_MOSI, 0},
1394f0322   Bryan Wu   blackfin architec...
120
  };
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
121
122
123
124
125
  static struct platform_device bfin_spi0_device = {
  	.name = "bfin-spi",
  	.id = 0, /* Bus number */
  	.num_resources = ARRAY_SIZE(bfin_spi0_resource),
  	.resource = bfin_spi0_resource,
1394f0322   Bryan Wu   blackfin architec...
126
  	.dev = {
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
127
  		.platform_data = &bfin_spi0_info, /* Passed to driver */
1394f0322   Bryan Wu   blackfin architec...
128
129
130
  	},
  };
  #endif  /* spi master and devices */
0d4a89bb3   Michael Hennerich   [Blackfin] arch: ...
131
132
133
134
135
  #if defined(CONFIG_FB_HITACHI_TX09) || defined(CONFIG_FB_HITACHI_TX09_MODULE)
  static struct platform_device hitachi_fb_device = {
  	.name = "hitachi-tx09",
  };
  #endif
1394f0322   Bryan Wu   blackfin architec...
136
  #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
61f09b5a0   Michael Hennerich   Blackfin: convert...
137
138
139
140
141
142
143
  #include <linux/smc91x.h>
  
  static struct smc91x_platdata smc91x_info = {
  	.flags = SMC91X_USE_32BIT | SMC91X_NOWAIT,
  	.leda = RPC_LED_100_10,
  	.ledb = RPC_LED_TX_RX,
  };
1394f0322   Bryan Wu   blackfin architec...
144
145
146
147
148
149
150
  
  static struct resource smc91x_resources[] = {
  	{
  		.name = "smc91x-regs",
  		.start = 0x28000300,
  		.end = 0x28000300 + 16,
  		.flags = IORESOURCE_MEM,
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
151
  	}, {
1394f0322   Bryan Wu   blackfin architec...
152
153
154
155
156
157
158
159
160
161
  		.start = IRQ_PF0,
  		.end = IRQ_PF0,
  		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
  	},
  };
  static struct platform_device smc91x_device = {
  	.name = "smc91x",
  	.id = 0,
  	.num_resources = ARRAY_SIZE(smc91x_resources),
  	.resource = smc91x_resources,
61f09b5a0   Michael Hennerich   Blackfin: convert...
162
163
164
  	.dev	= {
  		.platform_data	= &smc91x_info,
  	},
1394f0322   Bryan Wu   blackfin architec...
165
166
  };
  #endif
9c21453e3   Harald Krapfenbauer   Blackfin: update ...
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
  #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
  #include <linux/smsc911x.h>
  
  static struct resource smsc911x_resources[] = {
  	{
  		.name = "smsc911x-memory",
  		.start = 0x24008000,
  		.end = 0x24008000 + 0xFF,
  		.flags = IORESOURCE_MEM,
  	},
  	{
  		.start = IRQ_PF43,
  		.end = IRQ_PF43,
  		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWLEVEL,
  	},
  };
  
  static struct smsc911x_platform_config smsc911x_config = {
  	.flags = SMSC911X_USE_16BIT,
  	.irq_polarity = SMSC911X_IRQ_POLARITY_ACTIVE_LOW,
  	.irq_type = SMSC911X_IRQ_TYPE_OPEN_DRAIN,
  	.phy_interface = PHY_INTERFACE_MODE_MII,
  };
  
  static struct platform_device smsc911x_device = {
  	.name = "smsc911x",
  	.id = 0,
  	.num_resources = ARRAY_SIZE(smsc911x_resources),
  	.resource = smsc911x_resources,
  	.dev = {
  		.platform_data = &smsc911x_config,
  	},
  };
  #endif
  
  #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
  static struct resource net2272_bfin_resources[] = {
  	{
  		.start = 0x24000000,
  		.end = 0x24000000 + 0x100,
  		.flags = IORESOURCE_MEM,
  	}, {
  		.start = IRQ_PF45,
  		.end = IRQ_PF45,
  		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_HIGHLEVEL,
  	},
  };
  
  static struct platform_device net2272_bfin_device = {
  	.name = "net2272",
  	.id = -1,
  	.num_resources = ARRAY_SIZE(net2272_bfin_resources),
  	.resource = net2272_bfin_resources,
  };
  #endif
1394f0322   Bryan Wu   blackfin architec...
222
223
224
225
226
227
  #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
  static struct resource isp1362_hcd_resources[] = {
  	{
  		.start = 0x24008000,
  		.end = 0x24008000,
  		.flags = IORESOURCE_MEM,
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
228
  	}, {
1394f0322   Bryan Wu   blackfin architec...
229
230
231
  		.start = 0x24008004,
  		.end = 0x24008004,
  		.flags = IORESOURCE_MEM,
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
232
  	}, {
1394f0322   Bryan Wu   blackfin architec...
233
234
  		.start = IRQ_PF47,
  		.end = IRQ_PF47,
9e75894c5   Michael Hennerich   Blackfin: boards:...
235
  		.flags = IORESOURCE_IRQ | IORESOURCE_IRQ_LOWEDGE,
1394f0322   Bryan Wu   blackfin architec...
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
  	},
  };
  
  static struct isp1362_platform_data isp1362_priv = {
  	.sel15Kres = 1,
  	.clknotstop = 0,
  	.oc_enable = 0,
  	.int_act_high = 0,
  	.int_edge_triggered = 0,
  	.remote_wakeup_connected = 0,
  	.no_power_switching = 1,
  	.power_switching_mode = 0,
  };
  
  static struct platform_device isp1362_hcd_device = {
  	.name = "isp1362-hcd",
  	.id = 0,
  	.dev = {
  		.platform_data = &isp1362_priv,
  	},
  	.num_resources = ARRAY_SIZE(isp1362_hcd_resources),
  	.resource = isp1362_hcd_resources,
  };
  #endif
  
  #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
6bd1fbea2   Sonic Zhang   Blackfin: move on...
262
263
  #ifdef CONFIG_SERIAL_BFIN_UART0
  static struct resource bfin_uart0_resources[] = {
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
264
  	{
6bd1fbea2   Sonic Zhang   Blackfin: move on...
265
266
  		.start = BFIN_UART_THR,
  		.end = BFIN_UART_GCTL+2,
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
267
268
  		.flags = IORESOURCE_MEM,
  	},
6bd1fbea2   Sonic Zhang   Blackfin: move on...
269
  	{
edb0a6408   Sonic Zhang   Blackfin: add ser...
270
271
272
273
274
  		.start = IRQ_UART_TX,
  		.end = IRQ_UART_TX,
  		.flags = IORESOURCE_IRQ,
  	},
  	{
6bd1fbea2   Sonic Zhang   Blackfin: move on...
275
  		.start = IRQ_UART_RX,
edb0a6408   Sonic Zhang   Blackfin: add ser...
276
  		.end = IRQ_UART_RX,
6bd1fbea2   Sonic Zhang   Blackfin: move on...
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
  		.flags = IORESOURCE_IRQ,
  	},
  	{
  		.start = IRQ_UART_ERROR,
  		.end = IRQ_UART_ERROR,
  		.flags = IORESOURCE_IRQ,
  	},
  	{
  		.start = CH_UART_TX,
  		.end = CH_UART_TX,
  		.flags = IORESOURCE_DMA,
  	},
  	{
  		.start = CH_UART_RX,
  		.end = CH_UART_RX,
  		.flags = IORESOURCE_DMA,
  	},
  };
a8b198860   Mike Frysinger   Blackfin: boards:...
295
  static unsigned short bfin_uart0_peripherals[] = {
6bd1fbea2   Sonic Zhang   Blackfin: move on...
296
  	P_UART0_TX, P_UART0_RX, 0
1394f0322   Bryan Wu   blackfin architec...
297
  };
6bd1fbea2   Sonic Zhang   Blackfin: move on...
298
  static struct platform_device bfin_uart0_device = {
1f83b8f14   Mike Frysinger   Blackfin arch: cl...
299
  	.name = "bfin-uart",
6bd1fbea2   Sonic Zhang   Blackfin: move on...
300
301
302
303
304
305
  	.id = 0,
  	.num_resources = ARRAY_SIZE(bfin_uart0_resources),
  	.resource = bfin_uart0_resources,
  	.dev = {
  		.platform_data = &bfin_uart0_peripherals, /* Passed to driver */
  	},
1394f0322   Bryan Wu   blackfin architec...
306
307
  };
  #endif
6bd1fbea2   Sonic Zhang   Blackfin: move on...
308
  #endif
1394f0322   Bryan Wu   blackfin architec...
309

5be36d22b   Graf Yang   [Blackfin] arch: ...
310
  #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
5be36d22b   Graf Yang   [Blackfin] arch: ...
311
  #ifdef CONFIG_BFIN_SIR0
42bd8bcb2   Graf Yang   Blackfin arch: Mo...
312
  static struct resource bfin_sir0_resources[] = {
5be36d22b   Graf Yang   [Blackfin] arch: ...
313
314
315
316
317
  	{
  		.start = 0xFFC00400,
  		.end = 0xFFC004FF,
  		.flags = IORESOURCE_MEM,
  	},
42bd8bcb2   Graf Yang   Blackfin arch: Mo...
318
319
320
321
322
323
324
325
326
327
  	{
  		.start = IRQ_UART0_RX,
  		.end = IRQ_UART0_RX+1,
  		.flags = IORESOURCE_IRQ,
  	},
  	{
  		.start = CH_UART0_RX,
  		.end = CH_UART0_RX+1,
  		.flags = IORESOURCE_DMA,
  	},
5be36d22b   Graf Yang   [Blackfin] arch: ...
328
  };
42bd8bcb2   Graf Yang   Blackfin arch: Mo...
329
  static struct platform_device bfin_sir0_device = {
5be36d22b   Graf Yang   [Blackfin] arch: ...
330
331
  	.name = "bfin_sir",
  	.id = 0,
42bd8bcb2   Graf Yang   Blackfin arch: Mo...
332
333
  	.num_resources = ARRAY_SIZE(bfin_sir0_resources),
  	.resource = bfin_sir0_resources,
5be36d22b   Graf Yang   [Blackfin] arch: ...
334
335
  };
  #endif
42bd8bcb2   Graf Yang   Blackfin arch: Mo...
336
  #endif
5be36d22b   Graf Yang   [Blackfin] arch: ...
337

c6c4d7bbb   Bryan Wu   Blackfin arch: up...
338
  #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
fe5aeb930   Mike Frysinger   Blackfin arch: us...
339
  #define PATA_INT	IRQ_PF46
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
340
341
342
  
  static struct pata_platform_info bfin_pata_platform_data = {
  	.ioport_shift = 2,
7832bb5d4   Yong Zhang   Blackfin: irq: re...
343
  	.irq_type = IRQF_TRIGGER_HIGH,
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
  };
  
  static struct resource bfin_pata_resources[] = {
  	{
  		.start = 0x2400C000,
  		.end = 0x2400C001F,
  		.flags = IORESOURCE_MEM,
  	},
  	{
  		.start = 0x2400D018,
  		.end = 0x2400D01B,
  		.flags = IORESOURCE_MEM,
  	},
  	{
  		.start = PATA_INT,
  		.end = PATA_INT,
  		.flags = IORESOURCE_IRQ,
  	},
  };
  
  static struct platform_device bfin_pata_device = {
  	.name = "pata_platform",
  	.id = -1,
  	.num_resources = ARRAY_SIZE(bfin_pata_resources),
  	.resource = bfin_pata_resources,
  	.dev = {
  		.platform_data = &bfin_pata_platform_data,
  	}
  };
  #endif
9c21453e3   Harald Krapfenbauer   Blackfin: update ...
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
  #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
  static struct mtd_partition para_partitions[] = {
  	{
  		.name       = "bootloader(nor)",
  		.size       = 0x40000,
  		.offset     = 0,
  	}, {
  		.name       = "linux kernel(nor)",
  		.size       = 0x100000,
  		.offset     = MTDPART_OFS_APPEND,
  	}, {
  		.name       = "file system(nor)",
  		.size       = MTDPART_SIZ_FULL,
  		.offset     = MTDPART_OFS_APPEND,
  	}
  };
  
  static struct physmap_flash_data para_flash_data = {
  	.width      = 2,
  	.parts      = para_partitions,
  	.nr_parts   = ARRAY_SIZE(para_partitions),
  };
  
  static struct resource para_flash_resource = {
  	.start = 0x20000000,
  	.end   = 0x207fffff,
  	.flags = IORESOURCE_MEM,
  };
  
  static struct platform_device para_flash_device = {
  	.name          = "physmap-flash",
  	.id            = 0,
  	.dev = {
  		.platform_data = &para_flash_data,
  	},
  	.num_resources = 1,
  	.resource      = &para_flash_resource,
  };
  #endif
14b03204c   Michael Hennerich   [Blackfin] arch: ...
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
  static const unsigned int cclk_vlev_datasheet[] =
  {
  	VRPAIR(VLEV_085, 250000000),
  	VRPAIR(VLEV_090, 300000000),
  	VRPAIR(VLEV_095, 313000000),
  	VRPAIR(VLEV_100, 350000000),
  	VRPAIR(VLEV_105, 400000000),
  	VRPAIR(VLEV_110, 444000000),
  	VRPAIR(VLEV_115, 450000000),
  	VRPAIR(VLEV_120, 475000000),
  	VRPAIR(VLEV_125, 500000000),
  	VRPAIR(VLEV_130, 600000000),
  };
  
  static struct bfin_dpmc_platform_data bfin_dmpc_vreg_data = {
  	.tuple_tab = cclk_vlev_datasheet,
  	.tabsize = ARRAY_SIZE(cclk_vlev_datasheet),
  	.vr_settling_time = 25 /* us */,
  };
  
  static struct platform_device bfin_dpmc = {
  	.name = "bfin dpmc",
  	.dev = {
  		.platform_data = &bfin_dmpc_vreg_data,
  	},
  };
1394f0322   Bryan Wu   blackfin architec...
439
  static struct platform_device *cm_bf561_devices[] __initdata = {
14b03204c   Michael Hennerich   [Blackfin] arch: ...
440
  	&bfin_dpmc,
0d4a89bb3   Michael Hennerich   [Blackfin] arch: ...
441
442
443
  #if defined(CONFIG_FB_HITACHI_TX09) || defined(CONFIG_FB_HITACHI_TX09_MODULE)
  	&hitachi_fb_device,
  #endif
1394f0322   Bryan Wu   blackfin architec...
444
  #if defined(CONFIG_SERIAL_BFIN) || defined(CONFIG_SERIAL_BFIN_MODULE)
6bd1fbea2   Sonic Zhang   Blackfin: move on...
445
446
447
  #ifdef CONFIG_SERIAL_BFIN_UART0
  	&bfin_uart0_device,
  #endif
1394f0322   Bryan Wu   blackfin architec...
448
  #endif
5be36d22b   Graf Yang   [Blackfin] arch: ...
449
  #if defined(CONFIG_BFIN_SIR) || defined(CONFIG_BFIN_SIR_MODULE)
42bd8bcb2   Graf Yang   Blackfin arch: Mo...
450
451
452
  #ifdef CONFIG_BFIN_SIR0
  	&bfin_sir0_device,
  #endif
5be36d22b   Graf Yang   [Blackfin] arch: ...
453
  #endif
1394f0322   Bryan Wu   blackfin architec...
454
455
456
457
458
459
460
  #if defined(CONFIG_USB_ISP1362_HCD) || defined(CONFIG_USB_ISP1362_HCD_MODULE)
  	&isp1362_hcd_device,
  #endif
  
  #if defined(CONFIG_SMC91X) || defined(CONFIG_SMC91X_MODULE)
  	&smc91x_device,
  #endif
9c21453e3   Harald Krapfenbauer   Blackfin: update ...
461
462
463
464
465
466
467
  #if defined(CONFIG_SMSC911X) || defined(CONFIG_SMSC911X_MODULE)
  	&smsc911x_device,
  #endif
  
  #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
  	&net2272_bfin_device,
  #endif
7d157fb02   Sonic Zhang   blackfin: config:...
468
  #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
469
  	&bfin_spi0_device,
1394f0322   Bryan Wu   blackfin architec...
470
  #endif
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
471
472
473
  #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
  	&bfin_pata_device,
  #endif
c97618d3b   Mike Frysinger   Blackfin arch: ad...
474

9c21453e3   Harald Krapfenbauer   Blackfin: update ...
475
476
477
  #if defined(CONFIG_MTD_PHYSMAP) || defined(CONFIG_MTD_PHYSMAP_MODULE)
  	&para_flash_device,
  #endif
1394f0322   Bryan Wu   blackfin architec...
478
  };
9be8631b8   Mike Frysinger   Blackfin: net2272...
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
  static int __init net2272_init(void)
  {
  #if defined(CONFIG_USB_NET2272) || defined(CONFIG_USB_NET2272_MODULE)
  	int ret;
  
  	ret = gpio_request(GPIO_PF46, "net2272");
  	if (ret)
  		return ret;
  
  	/* Reset USB Chip, PF46 */
  	gpio_direction_output(GPIO_PF46, 0);
  	mdelay(2);
  	gpio_set_value(GPIO_PF46, 1);
  #endif
  
  	return 0;
  }
1394f0322   Bryan Wu   blackfin architec...
496
497
  static int __init cm_bf561_init(void)
  {
b85d858b4   Harvey Harrison   [Blackfin] arch: ...
498
499
  	printk(KERN_INFO "%s(): registering device resources
  ", __func__);
1394f0322   Bryan Wu   blackfin architec...
500
  	platform_add_devices(cm_bf561_devices, ARRAY_SIZE(cm_bf561_devices));
7d157fb02   Sonic Zhang   blackfin: config:...
501
  #if defined(CONFIG_SPI_BFIN5XX) || defined(CONFIG_SPI_BFIN5XX_MODULE)
1394f0322   Bryan Wu   blackfin architec...
502
503
  	spi_register_board_info(bfin_spi_board_info, ARRAY_SIZE(bfin_spi_board_info));
  #endif
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
504
505
  
  #if defined(CONFIG_PATA_PLATFORM) || defined(CONFIG_PATA_PLATFORM_MODULE)
bc2f6bd80   Thomas Gleixner   Blackfin: use pro...
506
  	irq_set_status_flags(PATA_INT, IRQ_NOAUTOEN);
c6c4d7bbb   Bryan Wu   Blackfin arch: up...
507
  #endif
9be8631b8   Mike Frysinger   Blackfin: net2272...
508
509
510
511
  
  	if (net2272_init())
  		pr_warning("unable to configure net2272; it probably won't work
  ");
1394f0322   Bryan Wu   blackfin architec...
512
513
514
515
  	return 0;
  }
  
  arch_initcall(cm_bf561_init);
c13ce9fd2   Sonic Zhang   Blackfin: add UAR...
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
  
  static struct platform_device *cm_bf561_early_devices[] __initdata = {
  #if defined(CONFIG_SERIAL_BFIN_CONSOLE) || defined(CONFIG_EARLY_PRINTK)
  #ifdef CONFIG_SERIAL_BFIN_UART0
  	&bfin_uart0_device,
  #endif
  #endif
  };
  
  void __init native_machine_early_platform_add_devices(void)
  {
  	printk(KERN_INFO "register early platform devices
  ");
  	early_platform_add_devices(cm_bf561_early_devices,
  		ARRAY_SIZE(cm_bf561_early_devices));
  }