Commit | Line | Data |
---|---|---|
1da177e4 | 1 | /* |
1da177e4 LT |
2 | * Renesas Technology Sales RTS7751R2D Support. |
3 | * | |
ade2b3f6 PM |
4 | * Copyright (C) 2002 Atom Create Engineering Co., Ltd. |
5 | * Copyright (C) 2004 - 2006 Paul Mundt | |
6 | * | |
7 | * This file is subject to the terms and conditions of the GNU General Public | |
8 | * License. See the file "COPYING" in the main directory of this archive | |
9 | * for more details. | |
1da177e4 | 10 | */ |
1da177e4 | 11 | #include <linux/init.h> |
ade2b3f6 PM |
12 | #include <linux/platform_device.h> |
13 | #include <linux/serial_8250.h> | |
a56d276c | 14 | #include <linux/pm.h> |
1da177e4 | 15 | #include <asm/io.h> |
ade2b3f6 | 16 | #include <asm/mach/rts7751r2d.h> |
adf1890b | 17 | #include <asm/voyagergx.h> |
ade2b3f6 PM |
18 | |
19 | static struct plat_serial8250_port uart_platform_data[] = { | |
20 | { | |
21 | .membase = (void *)VOYAGER_UART_BASE, | |
22 | .mapbase = VOYAGER_UART_BASE, | |
23 | .iotype = UPIO_MEM, | |
24 | .irq = VOYAGER_UART0_IRQ, | |
25 | .flags = UPF_BOOT_AUTOCONF, | |
26 | .regshift = 2, | |
27 | .uartclk = (9600 * 16), | |
28 | }, { | |
29 | .flags = 0, | |
30 | }, | |
31 | }; | |
32 | ||
33 | static void __init voyagergx_serial_init(void) | |
34 | { | |
35 | unsigned long val; | |
36 | ||
37 | /* | |
38 | * GPIO Control | |
39 | */ | |
40 | val = inl(GPIO_MUX_HIGH); | |
41 | val |= 0x00001fe0; | |
42 | outl(val, GPIO_MUX_HIGH); | |
43 | ||
44 | /* | |
45 | * Power Mode Gate | |
46 | */ | |
47 | val = inl(POWER_MODE0_GATE); | |
48 | val |= (POWER_MODE0_GATE_U0 | POWER_MODE0_GATE_U1); | |
49 | outl(val, POWER_MODE0_GATE); | |
50 | ||
51 | val = inl(POWER_MODE1_GATE); | |
52 | val |= (POWER_MODE1_GATE_U0 | POWER_MODE1_GATE_U1); | |
53 | outl(val, POWER_MODE1_GATE); | |
54 | } | |
55 | ||
56 | static struct platform_device uart_device = { | |
57 | .name = "serial8250", | |
58 | .id = -1, | |
59 | .dev = { | |
60 | .platform_data = uart_platform_data, | |
61 | }, | |
62 | }; | |
63 | ||
64 | static struct platform_device *rts7751r2d_devices[] __initdata = { | |
65 | &uart_device, | |
66 | }; | |
67 | ||
68 | static int __init rts7751r2d_devices_setup(void) | |
69 | { | |
70 | return platform_add_devices(rts7751r2d_devices, | |
71 | ARRAY_SIZE(rts7751r2d_devices)); | |
72 | } | |
73 | __initcall(rts7751r2d_devices_setup); | |
1da177e4 | 74 | |
1da177e4 LT |
75 | const char *get_system_type(void) |
76 | { | |
77 | return "RTS7751R2D"; | |
78 | } | |
79 | ||
a56d276c PM |
80 | static void rts7751r2d_power_off(void) |
81 | { | |
82 | ctrl_outw(0x0001, PA_POWOFF); | |
83 | } | |
84 | ||
1da177e4 LT |
85 | /* |
86 | * Initialize the board | |
87 | */ | |
88 | void __init platform_setup(void) | |
89 | { | |
90 | printk(KERN_INFO "Renesas Technology Sales RTS7751R2D support.\n"); | |
91 | ctrl_outw(0x0000, PA_OUTPORT); | |
a56d276c | 92 | pm_power_off = rts7751r2d_power_off; |
ade2b3f6 PM |
93 | |
94 | voyagergx_serial_init(); | |
95 | ||
1da177e4 | 96 | } |