11da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
21da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * arch/sh/boards/renesas/edosk7705/setup.c
31da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
41da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Copyright (C) 2000  Kazumoto Kojima
51da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
61da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Hitachi SolutionEngine Support.
71da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds *
81da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * Modified for edosk7705 development
91da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * board by S. Dunn, 2003.
101da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
111da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds#include <linux/init.h>
12866ef8f48f2272ce8d84156c91964d730666ab33Paul Mundt#include <linux/irq.h>
13c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#include <linux/platform_device.h>
14c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#include <linux/interrupt.h>
15c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#include <linux/smc91x.h>
16c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#include <asm/machvec.h>
17c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#include <asm/sizes.h>
18c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
19c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#define SMC_IOBASE	0xA2000000
20c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#define SMC_IO_OFFSET	0x300
21c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#define SMC_IOADDR	(SMC_IOBASE + SMC_IO_OFFSET)
22c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
23c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt#define ETHERNET_IRQ	0x09
241da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
252c7834a6f15fe6c50ed4766f1bb6f9183b9e2740Paul Mundtstatic void __init sh_edosk7705_init_irq(void)
262c7834a6f15fe6c50ed4766f1bb6f9183b9e2740Paul Mundt{
27c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	make_imask_irq(ETHERNET_IRQ);
282c7834a6f15fe6c50ed4766f1bb6f9183b9e2740Paul Mundt}
291da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds
30c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt/* eth initialization functions */
31c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundtstatic struct smc91x_platdata smc91x_info = {
32c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	.flags = SMC91X_USE_16BIT | SMC91X_IO_SHIFT_1 | IORESOURCE_IRQ_LOWLEVEL,
33c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt};
34c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
35c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundtstatic struct resource smc91x_res[] = {
36c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	[0] = {
37c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.start	= SMC_IOADDR,
38c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.end	= SMC_IOADDR + SZ_32 - 1,
39c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.flags	= IORESOURCE_MEM,
40c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	},
41c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	[1] = {
42c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.start	= ETHERNET_IRQ,
43c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.end	= ETHERNET_IRQ,
44c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.flags	= IORESOURCE_IRQ ,
45c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	}
46c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt};
47c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
48c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundtstatic struct platform_device smc91x_dev = {
49c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	.name		= "smc91x",
50c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	.id		= -1,
51c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	.num_resources	= ARRAY_SIZE(smc91x_res),
52c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	.resource	= smc91x_res,
53c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
54c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	.dev	= {
55c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt		.platform_data	= &smc91x_info,
56c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	},
57c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt};
58c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
59c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt/* platform init code */
60c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundtstatic struct platform_device *edosk7705_devices[] __initdata = {
61c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	&smc91x_dev,
62c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt};
63c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
64c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundtstatic int __init init_edosk7705_devices(void)
65c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt{
66c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt	return platform_add_devices(edosk7705_devices,
67c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt				    ARRAY_SIZE(edosk7705_devices));
68c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt}
6995d210ce6b23ec8916f97ec0cc7eb4d5fa80e0b3Nobuhiro Iwamatsudevice_initcall(init_edosk7705_devices);
70c1cfed3c3a190b4ce1d5a4510d9dfd3d42176fbaPaul Mundt
711da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds/*
721da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds * The Machine Vector
731da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds */
7482f81f4784479df17a80caff4a7156da0a2f7deaPaul Mundtstatic struct sh_machine_vector mv_edosk7705 __initmv = {
752c7834a6f15fe6c50ed4766f1bb6f9183b9e2740Paul Mundt	.mv_name		= "EDOSK7705",
761da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds	.mv_nr_irqs		= 80,
772c7834a6f15fe6c50ed4766f1bb6f9183b9e2740Paul Mundt	.mv_init_irq		= sh_edosk7705_init_irq,
781da177e4c3f41524e886b7f1b8a0c1fc7321cacLinus Torvalds};
79