Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-imx/mach-mx1ads.c
10817 views
1
/*
2
* arch/arm/mach-imx/mach-mx1ads.c
3
*
4
* Initially based on:
5
* linux-2.6.7-imx/arch/arm/mach-imx/scb9328.c
6
* Copyright (c) 2004 Sascha Hauer <[email protected]>
7
*
8
* 2004 (c) MontaVista Software, Inc.
9
*
10
* This file is licensed under the terms of the GNU General Public
11
* License version 2. This program is licensed "as is" without any
12
* warranty of any kind, whether express or implied.
13
*/
14
15
#include <linux/i2c.h>
16
#include <linux/i2c/pcf857x.h>
17
#include <linux/init.h>
18
#include <linux/kernel.h>
19
#include <linux/platform_device.h>
20
#include <linux/mtd/physmap.h>
21
22
#include <asm/mach-types.h>
23
#include <asm/mach/arch.h>
24
#include <asm/mach/time.h>
25
26
#include <mach/common.h>
27
#include <mach/hardware.h>
28
#include <mach/iomux-mx1.h>
29
#include <mach/irqs.h>
30
31
#include "devices-imx1.h"
32
33
static const int mx1ads_pins[] __initconst = {
34
/* UART1 */
35
PC9_PF_UART1_CTS,
36
PC10_PF_UART1_RTS,
37
PC11_PF_UART1_TXD,
38
PC12_PF_UART1_RXD,
39
/* UART2 */
40
PB28_PF_UART2_CTS,
41
PB29_PF_UART2_RTS,
42
PB30_PF_UART2_TXD,
43
PB31_PF_UART2_RXD,
44
/* I2C */
45
PA15_PF_I2C_SDA,
46
PA16_PF_I2C_SCL,
47
/* SPI */
48
PC13_PF_SPI1_SPI_RDY,
49
PC14_PF_SPI1_SCLK,
50
PC15_PF_SPI1_SS,
51
PC16_PF_SPI1_MISO,
52
PC17_PF_SPI1_MOSI,
53
};
54
55
/*
56
* UARTs platform data
57
*/
58
59
static const struct imxuart_platform_data uart0_pdata __initconst = {
60
.flags = IMXUART_HAVE_RTSCTS,
61
};
62
63
static const struct imxuart_platform_data uart1_pdata __initconst = {
64
.flags = IMXUART_HAVE_RTSCTS,
65
};
66
67
/*
68
* Physmap flash
69
*/
70
71
static struct physmap_flash_data mx1ads_flash_data = {
72
.width = 4, /* bankwidth in bytes */
73
};
74
75
static struct resource flash_resource = {
76
.start = MX1_CS0_PHYS,
77
.end = MX1_CS0_PHYS + SZ_32M - 1,
78
.flags = IORESOURCE_MEM,
79
};
80
81
static struct platform_device flash_device = {
82
.name = "physmap-flash",
83
.id = 0,
84
.resource = &flash_resource,
85
.num_resources = 1,
86
};
87
88
/*
89
* I2C
90
*/
91
static struct pcf857x_platform_data pcf857x_data[] = {
92
{
93
.gpio_base = 4 * 32,
94
}, {
95
.gpio_base = 4 * 32 + 16,
96
}
97
};
98
99
static const struct imxi2c_platform_data mx1ads_i2c_data __initconst = {
100
.bitrate = 100000,
101
};
102
103
static struct i2c_board_info mx1ads_i2c_devices[] = {
104
{
105
I2C_BOARD_INFO("pcf8575", 0x22),
106
.platform_data = &pcf857x_data[0],
107
}, {
108
I2C_BOARD_INFO("pcf8575", 0x24),
109
.platform_data = &pcf857x_data[1],
110
},
111
};
112
113
/*
114
* Board init
115
*/
116
static void __init mx1ads_init(void)
117
{
118
mxc_gpio_setup_multiple_pins(mx1ads_pins,
119
ARRAY_SIZE(mx1ads_pins), "mx1ads");
120
121
/* UART */
122
imx1_add_imx_uart0(&uart0_pdata);
123
imx1_add_imx_uart1(&uart1_pdata);
124
125
/* Physmap flash */
126
mxc_register_device(&flash_device, &mx1ads_flash_data);
127
128
/* I2C */
129
i2c_register_board_info(0, mx1ads_i2c_devices,
130
ARRAY_SIZE(mx1ads_i2c_devices));
131
132
imx1_add_imx_i2c(&mx1ads_i2c_data);
133
}
134
135
static void __init mx1ads_timer_init(void)
136
{
137
mx1_clocks_init(32000);
138
}
139
140
struct sys_timer mx1ads_timer = {
141
.init = mx1ads_timer_init,
142
};
143
144
MACHINE_START(MX1ADS, "Freescale MX1ADS")
145
/* Maintainer: Sascha Hauer, Pengutronix */
146
.boot_params = MX1_PHYS_OFFSET + 0x100,
147
.map_io = mx1_map_io,
148
.init_early = imx1_init_early,
149
.init_irq = mx1_init_irq,
150
.timer = &mx1ads_timer,
151
.init_machine = mx1ads_init,
152
MACHINE_END
153
154
MACHINE_START(MXLADS, "Freescale MXLADS")
155
.boot_params = MX1_PHYS_OFFSET + 0x100,
156
.map_io = mx1_map_io,
157
.init_early = imx1_init_early,
158
.init_irq = mx1_init_irq,
159
.timer = &mx1ads_timer,
160
.init_machine = mx1ads_init,
161
MACHINE_END
162
163