Blame view

arch/arm/mach-sa1100/shannon.c 2.13 KB
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
1
2
3
  /*
   * linux/arch/arm/mach-sa1100/shannon.c
   */
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
4
5
6
7
8
9
  #include <linux/init.h>
  #include <linux/device.h>
  #include <linux/kernel.h>
  #include <linux/tty.h>
  #include <linux/mtd/mtd.h>
  #include <linux/mtd/partitions.h>
a09e64fbc   Russell King   [ARM] Move includ...
10
  #include <mach/hardware.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
11
12
13
14
15
16
17
  #include <asm/mach-types.h>
  #include <asm/setup.h>
  
  #include <asm/mach/arch.h>
  #include <asm/mach/flash.h>
  #include <asm/mach/map.h>
  #include <asm/mach/serial_sa1100.h>
a09e64fbc   Russell King   [ARM] Move includ...
18
19
  #include <mach/mcp.h>
  #include <mach/shannon.h>
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
20
21
22
23
24
25
26
27
28
29
30
31
32
33
  
  #include "generic.h"
  
  static struct mtd_partition shannon_partitions[] = {
  	{
  		.name		= "BLOB boot loader",
  		.offset		= 0,
  		.size		= 0x20000
  	},
  	{
  		.name		= "kernel",
  		.offset		= MTDPART_OFS_APPEND,
  		.size		= 0xe0000
  	},
93982535a   Kristoffer Ericson   [ARM] 5336/1: For...
34
  	{
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
  		.name		= "initrd",
  		.offset		= MTDPART_OFS_APPEND,	
  		.size		= MTDPART_SIZ_FULL
  	}
  };
  
  static struct flash_platform_data shannon_flash_data = {
  	.map_name	= "cfi_probe",
  	.parts		= shannon_partitions,
  	.nr_parts	= ARRAY_SIZE(shannon_partitions),
  };
  
  static struct resource shannon_flash_resource = {
  	.start		= SA1100_CS0_PHYS,
  	.end		= SA1100_CS0_PHYS + SZ_4M - 1,
  	.flags		= IORESOURCE_MEM,
  };
323cdfc19   Russell King   [MFD] Add SA11x0 ...
52
53
54
  static struct mcp_plat_data shannon_mcp_data = {
  	.mccr0		= MCCR0_ADM,
  	.sclk_rate	= 11981000,
5dd7bf59e   Jochen Friedrich   ARM: sa11x0: Impl...
55
  	.codec		= "ucb1x00",
323cdfc19   Russell King   [MFD] Add SA11x0 ...
56
  };
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
57
58
  static void __init shannon_init(void)
  {
7a5b4e16c   Russell King   ARM: sa11x0: conv...
59
  	sa11x0_register_mtd(&shannon_flash_data, &shannon_flash_resource, 1);
af9081ae6   Jochen Friedrich   ARM: sa1100: Refa...
60
61
62
63
64
65
66
67
68
  
  	/*
  	 * Setup the PPC unit correctly.
  	 */
  	PPDR &= ~PPC_RXD4;
  	PPDR |= PPC_TXD4 | PPC_SCLK | PPC_SFRM;
  	PSDR |= PPC_RXD4;
  	PSDR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
  	PPSR &= ~(PPC_TXD4 | PPC_SCLK | PPC_SFRM);
7a5b4e16c   Russell King   ARM: sa11x0: conv...
69
  	sa11x0_register_mcp(&shannon_mcp_data);
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
  }
  
  static void __init shannon_map_io(void)
  {
  	sa1100_map_io();
  
  	sa1100_register_uart(0, 3);
  	sa1100_register_uart(1, 1);
  
  	Ser1SDCR0 |= SDCR0_SUS;
  	GAFR |= (GPIO_UART_TXD | GPIO_UART_RXD);
  	GPDR |= GPIO_UART_TXD | SHANNON_GPIO_CODEC_RESET;
  	GPDR &= ~GPIO_UART_RXD;
  	PPAR |= PPAR_UPR;
  
  	/* reset the codec */
  	GPCR = SHANNON_GPIO_CODEC_RESET;
  	GPSR = SHANNON_GPIO_CODEC_RESET;
  }
  
  MACHINE_START(SHANNON, "Shannon (AKA: Tuxscreen)")
17f4425d5   Nicolas Pitre   ARM: mach-sa1100:...
91
  	.atag_offset	= 0x100,
e9dea0c65   Russell King   [PATCH] ARM: Remo...
92
93
  	.map_io		= shannon_map_io,
  	.init_irq	= sa1100_init_irq,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
94
95
  	.timer		= &sa1100_timer,
  	.init_machine	= shannon_init,
d9ca5839f   Russell King   ARM: restart: sa1...
96
  	.restart	= sa11x0_restart,
1da177e4c   Linus Torvalds   Linux-2.6.12-rc2
97
  MACHINE_END