Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-at91/board-csb637.c
10817 views
1
/*
2
* linux/arch/arm/mach-at91/board-csb637.c
3
*
4
* Copyright (C) 2005 SAN People
5
*
6
* This program is free software; you can redistribute it and/or modify
7
* it under the terms of the GNU General Public License as published by
8
* the Free Software Foundation; either version 2 of the License, or
9
* (at your option) any later version.
10
*
11
* This program is distributed in the hope that it will be useful,
12
* but WITHOUT ANY WARRANTY; without even the implied warranty of
13
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14
* GNU General Public License for more details.
15
*
16
* You should have received a copy of the GNU General Public License
17
* along with this program; if not, write to the Free Software
18
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19
*/
20
21
#include <linux/types.h>
22
#include <linux/init.h>
23
#include <linux/mm.h>
24
#include <linux/module.h>
25
#include <linux/platform_device.h>
26
#include <linux/mtd/physmap.h>
27
28
#include <asm/setup.h>
29
#include <asm/mach-types.h>
30
#include <asm/irq.h>
31
32
#include <asm/mach/arch.h>
33
#include <asm/mach/map.h>
34
#include <asm/mach/irq.h>
35
36
#include <mach/hardware.h>
37
#include <mach/board.h>
38
#include <mach/gpio.h>
39
40
#include "generic.h"
41
42
43
static void __init csb637_init_early(void)
44
{
45
/* Initialize processor: 3.6864 MHz crystal */
46
at91rm9200_initialize(3686400);
47
48
/* DBGU on ttyS0. (Rx & Tx only) */
49
at91_register_uart(0, 0, 0);
50
51
/* make console=ttyS0 (ie, DBGU) the default */
52
at91_set_serial_console(0);
53
}
54
55
static void __init csb637_init_irq(void)
56
{
57
at91rm9200_init_interrupts(NULL);
58
}
59
60
static struct at91_eth_data __initdata csb637_eth_data = {
61
.phy_irq_pin = AT91_PIN_PC0,
62
.is_rmii = 0,
63
};
64
65
static struct at91_usbh_data __initdata csb637_usbh_data = {
66
.ports = 2,
67
};
68
69
static struct at91_udc_data __initdata csb637_udc_data = {
70
.vbus_pin = AT91_PIN_PB28,
71
.pullup_pin = AT91_PIN_PB1,
72
};
73
74
#define CSB_FLASH_BASE AT91_CHIPSELECT_0
75
#define CSB_FLASH_SIZE SZ_16M
76
77
static struct mtd_partition csb_flash_partitions[] = {
78
{
79
.name = "uMON flash",
80
.offset = 0,
81
.size = MTDPART_SIZ_FULL,
82
.mask_flags = MTD_WRITEABLE, /* read only */
83
}
84
};
85
86
static struct physmap_flash_data csb_flash_data = {
87
.width = 2,
88
.parts = csb_flash_partitions,
89
.nr_parts = ARRAY_SIZE(csb_flash_partitions),
90
};
91
92
static struct resource csb_flash_resources[] = {
93
{
94
.start = CSB_FLASH_BASE,
95
.end = CSB_FLASH_BASE + CSB_FLASH_SIZE - 1,
96
.flags = IORESOURCE_MEM,
97
}
98
};
99
100
static struct platform_device csb_flash = {
101
.name = "physmap-flash",
102
.id = 0,
103
.dev = {
104
.platform_data = &csb_flash_data,
105
},
106
.resource = csb_flash_resources,
107
.num_resources = ARRAY_SIZE(csb_flash_resources),
108
};
109
110
static struct gpio_led csb_leds[] = {
111
{ /* "d1", red */
112
.name = "d1",
113
.gpio = AT91_PIN_PB2,
114
.active_low = 1,
115
.default_trigger = "heartbeat",
116
},
117
};
118
119
static void __init csb637_board_init(void)
120
{
121
/* LED(s) */
122
at91_gpio_leds(csb_leds, ARRAY_SIZE(csb_leds));
123
/* Serial */
124
at91_add_device_serial();
125
/* Ethernet */
126
at91_add_device_eth(&csb637_eth_data);
127
/* USB Host */
128
at91_add_device_usbh(&csb637_usbh_data);
129
/* USB Device */
130
at91_add_device_udc(&csb637_udc_data);
131
/* I2C */
132
at91_add_device_i2c(NULL, 0);
133
/* SPI */
134
at91_add_device_spi(NULL, 0);
135
/* NOR flash */
136
platform_device_register(&csb_flash);
137
}
138
139
MACHINE_START(CSB637, "Cogent CSB637")
140
/* Maintainer: Bill Gatliff */
141
.timer = &at91rm9200_timer,
142
.map_io = at91rm9200_map_io,
143
.init_early = csb637_init_early,
144
.init_irq = csb637_init_irq,
145
.init_machine = csb637_board_init,
146
MACHINE_END
147
148