2 * Renesas Technology Sales RTS7751R2D Support.
4 * Copyright (C) 2002 Atom Create Engineering Co., Ltd.
5 * Copyright (C) 2004 - 2006 Paul Mundt
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
11 #include <linux/init.h>
12 #include <linux/platform_device.h>
13 #include <linux/serial_8250.h>
15 #include <asm/machvec.h>
16 #include <asm/mach/rts7751r2d.h>
18 #include <asm/voyagergx.h>
20 extern void heartbeat_rts7751r2d(void);
21 extern void init_rts7751r2d_IRQ(void);
22 extern int rts7751r2d_irq_demux(int irq
);
24 extern void *voyagergx_consistent_alloc(struct device
*, size_t, dma_addr_t
*, gfp_t
);
25 extern int voyagergx_consistent_free(struct device
*, size_t, void *, dma_addr_t
);
27 static struct plat_serial8250_port uart_platform_data
[] = {
29 .membase
= (void *)VOYAGER_UART_BASE
,
30 .mapbase
= VOYAGER_UART_BASE
,
32 .irq
= VOYAGER_UART0_IRQ
,
33 .flags
= UPF_BOOT_AUTOCONF
,
35 .uartclk
= (9600 * 16),
41 static void __init
voyagergx_serial_init(void)
48 val
= inl(GPIO_MUX_HIGH
);
50 outl(val
, GPIO_MUX_HIGH
);
55 val
= inl(POWER_MODE0_GATE
);
56 val
|= (POWER_MODE0_GATE_U0
| POWER_MODE0_GATE_U1
);
57 outl(val
, POWER_MODE0_GATE
);
59 val
= inl(POWER_MODE1_GATE
);
60 val
|= (POWER_MODE1_GATE_U0
| POWER_MODE1_GATE_U1
);
61 outl(val
, POWER_MODE1_GATE
);
64 static struct platform_device uart_device
= {
68 .platform_data
= uart_platform_data
,
72 static struct platform_device
*rts7751r2d_devices
[] __initdata
= {
76 static int __init
rts7751r2d_devices_setup(void)
78 return platform_add_devices(rts7751r2d_devices
,
79 ARRAY_SIZE(rts7751r2d_devices
));
82 static void rts7751r2d_power_off(void)
84 ctrl_outw(0x0001, PA_POWOFF
);
88 * Initialize the board
90 static void __init
rts7751r2d_setup(char **cmdline_p
)
92 device_initcall(rts7751r2d_devices_setup
);
94 ctrl_outw(0x0000, PA_OUTPORT
);
95 pm_power_off
= rts7751r2d_power_off
;
97 voyagergx_serial_init();
99 printk(KERN_INFO
"Renesas Technology Sales RTS7751R2D support.\n");
105 struct sh_machine_vector mv_rts7751r2d __initmv
= {
106 .mv_name
= "RTS7751R2D",
107 .mv_setup
= rts7751r2d_setup
,
110 .mv_inb
= rts7751r2d_inb
,
111 .mv_inw
= rts7751r2d_inw
,
112 .mv_inl
= rts7751r2d_inl
,
113 .mv_outb
= rts7751r2d_outb
,
114 .mv_outw
= rts7751r2d_outw
,
115 .mv_outl
= rts7751r2d_outl
,
117 .mv_inb_p
= rts7751r2d_inb_p
,
118 .mv_inw_p
= rts7751r2d_inw
,
119 .mv_inl_p
= rts7751r2d_inl
,
120 .mv_outb_p
= rts7751r2d_outb_p
,
121 .mv_outw_p
= rts7751r2d_outw
,
122 .mv_outl_p
= rts7751r2d_outl
,
124 .mv_insb
= rts7751r2d_insb
,
125 .mv_insw
= rts7751r2d_insw
,
126 .mv_insl
= rts7751r2d_insl
,
127 .mv_outsb
= rts7751r2d_outsb
,
128 .mv_outsw
= rts7751r2d_outsw
,
129 .mv_outsl
= rts7751r2d_outsl
,
131 .mv_init_irq
= init_rts7751r2d_IRQ
,
132 #ifdef CONFIG_HEARTBEAT
133 .mv_heartbeat
= heartbeat_rts7751r2d
,
135 .mv_irq_demux
= rts7751r2d_irq_demux
,
137 #ifdef CONFIG_USB_SM501
138 .mv_consistent_alloc
= voyagergx_consistent_alloc
,
139 .mv_consistent_free
= voyagergx_consistent_free
,