1 /* 2 * linux/arch/sh/boards/se/7721/setup.c 3 * 4 * Copyright (C) 2008 Renesas Solutions Corp. 5 * 6 * Hitachi UL SolutionEngine 7721 Support. 7 * 8 * This file is subject to the terms and conditions of the GNU General Public 9 * License. See the file "COPYING" in the main directory of this archive 10 * for more details. 11 * 12 */ 13 #include <linux/init.h> 14 #include <linux/platform_device.h> 15 #include <asm/machvec.h> 16 #include <mach-se/mach/se7721.h> 17 #include <asm/io.h> 18 #include <asm/heartbeat.h> 19 20 static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; 21 22 static struct heartbeat_data heartbeat_data = { 23 .bit_pos = heartbeat_bit_pos, 24 .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), 25 .regsize = 16, 26 }; 27 28 static struct resource heartbeat_resources[] = { 29 [0] = { 30 .start = PA_LED, 31 .end = PA_LED, 32 .flags = IORESOURCE_MEM, 33 }, 34 }; 35 36 static struct platform_device heartbeat_device = { 37 .name = "heartbeat", 38 .id = -1, 39 .dev = { 40 .platform_data = &heartbeat_data, 41 }, 42 .num_resources = ARRAY_SIZE(heartbeat_resources), 43 .resource = heartbeat_resources, 44 }; 45 46 static struct resource cf_ide_resources[] = { 47 [0] = { 48 .start = PA_MRSHPC_IO + 0x1f0, 49 .end = PA_MRSHPC_IO + 0x1f0 + 8 , 50 .flags = IORESOURCE_IO, 51 }, 52 [1] = { 53 .start = PA_MRSHPC_IO + 0x1f0 + 0x206, 54 .end = PA_MRSHPC_IO + 0x1f0 + 8 + 0x206 + 8, 55 .flags = IORESOURCE_IO, 56 }, 57 [2] = { 58 .start = MRSHPC_IRQ0, 59 .flags = IORESOURCE_IRQ, 60 }, 61 }; 62 63 static struct platform_device cf_ide_device = { 64 .name = "pata_platform", 65 .id = -1, 66 .num_resources = ARRAY_SIZE(cf_ide_resources), 67 .resource = cf_ide_resources, 68 }; 69 70 static struct platform_device *se7721_devices[] __initdata = { 71 &cf_ide_device, 72 &heartbeat_device 73 }; 74 75 static int __init se7721_devices_setup(void) 76 { 77 return platform_add_devices(se7721_devices, 78 ARRAY_SIZE(se7721_devices)); 79 } 80 device_initcall(se7721_devices_setup); 81 82 static void __init se7721_setup(char **cmdline_p) 83 { 84 /* for USB */ 85 ctrl_outw(0x0000, 0xA405010C); /* PGCR */ 86 ctrl_outw(0x0000, 0xA405010E); /* PHCR */ 87 ctrl_outw(0x00AA, 0xA4050118); /* PPCR */ 88 ctrl_outw(0x0000, 0xA4050124); /* PSELA */ 89 } 90 91 /* 92 * The Machine Vector 93 */ 94 struct sh_machine_vector mv_se7721 __initmv = { 95 .mv_name = "Solution Engine 7721", 96 .mv_setup = se7721_setup, 97 .mv_nr_irqs = 109, 98 .mv_init_irq = init_se7721_IRQ, 99 }; 100