Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/arch/arm/mach-ixp4xx/wg302v2-setup.c
10817 views
1
/*
2
* arch/arm/mach-ixp4xx/wg302-setup.c
3
*
4
* Board setup for the Netgear WG302 v2 and WAG302 v2
5
*
6
* Copyright (C) 2007 Imre Kaloz <[email protected]>
7
*
8
* based on coyote-setup.c:
9
* Copyright (C) 2003-2005 MontaVista Software, Inc.
10
*
11
* Author: Imre Kaloz <[email protected]>
12
*
13
*/
14
15
#include <linux/kernel.h>
16
#include <linux/init.h>
17
#include <linux/device.h>
18
#include <linux/serial.h>
19
#include <linux/tty.h>
20
#include <linux/serial_8250.h>
21
22
#include <asm/types.h>
23
#include <asm/setup.h>
24
#include <asm/memory.h>
25
#include <mach/hardware.h>
26
#include <asm/irq.h>
27
#include <asm/mach-types.h>
28
#include <asm/mach/arch.h>
29
#include <asm/mach/flash.h>
30
31
static struct flash_platform_data wg302v2_flash_data = {
32
.map_name = "cfi_probe",
33
.width = 2,
34
};
35
36
static struct resource wg302v2_flash_resource = {
37
.flags = IORESOURCE_MEM,
38
};
39
40
static struct platform_device wg302v2_flash = {
41
.name = "IXP4XX-Flash",
42
.id = 0,
43
.dev = {
44
.platform_data = &wg302v2_flash_data,
45
},
46
.num_resources = 1,
47
.resource = &wg302v2_flash_resource,
48
};
49
50
static struct resource wg302v2_uart_resource = {
51
.start = IXP4XX_UART2_BASE_PHYS,
52
.end = IXP4XX_UART2_BASE_PHYS + 0x0fff,
53
.flags = IORESOURCE_MEM,
54
};
55
56
static struct plat_serial8250_port wg302v2_uart_data[] = {
57
{
58
.mapbase = IXP4XX_UART2_BASE_PHYS,
59
.membase = (char *)IXP4XX_UART2_BASE_VIRT + REG_OFFSET,
60
.irq = IRQ_IXP4XX_UART2,
61
.flags = UPF_BOOT_AUTOCONF | UPF_SKIP_TEST,
62
.iotype = UPIO_MEM,
63
.regshift = 2,
64
.uartclk = IXP4XX_UART_XTAL,
65
},
66
{ },
67
};
68
69
static struct platform_device wg302v2_uart = {
70
.name = "serial8250",
71
.id = PLAT8250_DEV_PLATFORM,
72
.dev = {
73
.platform_data = wg302v2_uart_data,
74
},
75
.num_resources = 1,
76
.resource = &wg302v2_uart_resource,
77
};
78
79
static struct platform_device *wg302v2_devices[] __initdata = {
80
&wg302v2_flash,
81
&wg302v2_uart,
82
};
83
84
static void __init wg302v2_init(void)
85
{
86
ixp4xx_sys_init();
87
88
wg302v2_flash_resource.start = IXP4XX_EXP_BUS_BASE(0);
89
wg302v2_flash_resource.end = IXP4XX_EXP_BUS_BASE(0) + SZ_32M - 1;
90
91
*IXP4XX_EXP_CS0 |= IXP4XX_FLASH_WRITABLE;
92
*IXP4XX_EXP_CS1 = *IXP4XX_EXP_CS0;
93
94
platform_add_devices(wg302v2_devices, ARRAY_SIZE(wg302v2_devices));
95
}
96
97
#ifdef CONFIG_MACH_WG302V2
98
MACHINE_START(WG302V2, "Netgear WG302 v2 / WAG302 v2")
99
/* Maintainer: Imre Kaloz <[email protected]> */
100
.map_io = ixp4xx_map_io,
101
.init_irq = ixp4xx_init_irq,
102
.timer = &ixp4xx_timer,
103
.boot_params = 0x0100,
104
.init_machine = wg302v2_init,
105
MACHINE_END
106
#endif
107
108