xref: /openbmc/linux/arch/sh/boards/board-edosk7705.c (revision 87dfb311)
1b2441318SGreg Kroah-Hartman // SPDX-License-Identifier: GPL-2.0
2c819cc73SPaul Mundt /*
3c819cc73SPaul Mundt  * arch/sh/boards/renesas/edosk7705/setup.c
4c819cc73SPaul Mundt  *
5c819cc73SPaul Mundt  * Copyright (C) 2000  Kazumoto Kojima
6c819cc73SPaul Mundt  *
7c819cc73SPaul Mundt  * Hitachi SolutionEngine Support.
8c819cc73SPaul Mundt  *
9c819cc73SPaul Mundt  * Modified for edosk7705 development
10c819cc73SPaul Mundt  * board by S. Dunn, 2003.
11c819cc73SPaul Mundt  */
12c819cc73SPaul Mundt #include <linux/init.h>
13c819cc73SPaul Mundt #include <linux/irq.h>
14c819cc73SPaul Mundt #include <linux/platform_device.h>
15c819cc73SPaul Mundt #include <linux/interrupt.h>
16c819cc73SPaul Mundt #include <linux/smc91x.h>
170fa4c391SPaul Mundt #include <linux/sh_intc.h>
18c819cc73SPaul Mundt #include <asm/machvec.h>
1987dfb311SMasahiro Yamada #include <linux/sizes.h>
20c819cc73SPaul Mundt 
21c819cc73SPaul Mundt #define SMC_IOBASE	0xA2000000
22c819cc73SPaul Mundt #define SMC_IO_OFFSET	0x300
23c819cc73SPaul Mundt #define SMC_IOADDR	(SMC_IOBASE + SMC_IO_OFFSET)
24c819cc73SPaul Mundt 
250fa4c391SPaul Mundt #define ETHERNET_IRQ	evt2irq(0x320)
26c819cc73SPaul Mundt 
sh_edosk7705_init_irq(void)27c819cc73SPaul Mundt static void __init sh_edosk7705_init_irq(void)
28c819cc73SPaul Mundt {
29c819cc73SPaul Mundt 	make_imask_irq(ETHERNET_IRQ);
30c819cc73SPaul Mundt }
31c819cc73SPaul Mundt 
32c819cc73SPaul Mundt /* eth initialization functions */
33c819cc73SPaul Mundt static struct smc91x_platdata smc91x_info = {
34c819cc73SPaul Mundt 	.flags = SMC91X_USE_16BIT | SMC91X_IO_SHIFT_1 | IORESOURCE_IRQ_LOWLEVEL,
35c819cc73SPaul Mundt };
36c819cc73SPaul Mundt 
37c819cc73SPaul Mundt static struct resource smc91x_res[] = {
38c819cc73SPaul Mundt 	[0] = {
39c819cc73SPaul Mundt 		.start	= SMC_IOADDR,
40c819cc73SPaul Mundt 		.end	= SMC_IOADDR + SZ_32 - 1,
41c819cc73SPaul Mundt 		.flags	= IORESOURCE_MEM,
42c819cc73SPaul Mundt 	},
43c819cc73SPaul Mundt 	[1] = {
44c819cc73SPaul Mundt 		.start	= ETHERNET_IRQ,
45c819cc73SPaul Mundt 		.end	= ETHERNET_IRQ,
46c819cc73SPaul Mundt 		.flags	= IORESOURCE_IRQ ,
47c819cc73SPaul Mundt 	}
48c819cc73SPaul Mundt };
49c819cc73SPaul Mundt 
50c819cc73SPaul Mundt static struct platform_device smc91x_dev = {
51c819cc73SPaul Mundt 	.name		= "smc91x",
52c819cc73SPaul Mundt 	.id		= -1,
53c819cc73SPaul Mundt 	.num_resources	= ARRAY_SIZE(smc91x_res),
54c819cc73SPaul Mundt 	.resource	= smc91x_res,
55c819cc73SPaul Mundt 
56c819cc73SPaul Mundt 	.dev	= {
57c819cc73SPaul Mundt 		.platform_data	= &smc91x_info,
58c819cc73SPaul Mundt 	},
59c819cc73SPaul Mundt };
60c819cc73SPaul Mundt 
61c819cc73SPaul Mundt /* platform init code */
62c819cc73SPaul Mundt static struct platform_device *edosk7705_devices[] __initdata = {
63c819cc73SPaul Mundt 	&smc91x_dev,
64c819cc73SPaul Mundt };
65c819cc73SPaul Mundt 
init_edosk7705_devices(void)66c819cc73SPaul Mundt static int __init init_edosk7705_devices(void)
67c819cc73SPaul Mundt {
68c819cc73SPaul Mundt 	return platform_add_devices(edosk7705_devices,
69c819cc73SPaul Mundt 				    ARRAY_SIZE(edosk7705_devices));
70c819cc73SPaul Mundt }
7195d210ceSNobuhiro Iwamatsu device_initcall(init_edosk7705_devices);
72c819cc73SPaul Mundt 
73c819cc73SPaul Mundt /*
74c819cc73SPaul Mundt  * The Machine Vector
75c819cc73SPaul Mundt  */
76c819cc73SPaul Mundt static struct sh_machine_vector mv_edosk7705 __initmv = {
77c819cc73SPaul Mundt 	.mv_name		= "EDOSK7705",
78c819cc73SPaul Mundt 	.mv_init_irq		= sh_edosk7705_init_irq,
79c819cc73SPaul Mundt };
80