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>
19*87dfb311SMasahiro 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