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 <mach-se/mach/se7721.h> 16#include <mach-se/mach/mrshpc.h> 17#include <asm/machvec.h> 18#include <asm/io.h> 19#include <asm/heartbeat.h> 20 21static unsigned char heartbeat_bit_pos[] = { 8, 9, 10, 11, 12, 13, 14, 15 }; 22 23static struct heartbeat_data heartbeat_data = { 24 .bit_pos = heartbeat_bit_pos, 25 .nr_bits = ARRAY_SIZE(heartbeat_bit_pos), 26}; 27 28static struct resource heartbeat_resource = { 29 .start = PA_LED, 30 .end = PA_LED, 31 .flags = IORESOURCE_MEM | IORESOURCE_MEM_16BIT, 32}; 33 34static struct platform_device heartbeat_device = { 35 .name = "heartbeat", 36 .id = -1, 37 .dev = { 38 .platform_data = &heartbeat_data, 39 }, 40 .num_resources = 1, 41 .resource = &heartbeat_resource, 42}; 43 44static struct resource cf_ide_resources[] = { 45 [0] = { 46 .start = PA_MRSHPC_IO + 0x1f0, 47 .end = PA_MRSHPC_IO + 0x1f0 + 8 , 48 .flags = IORESOURCE_IO, 49 }, 50 [1] = { 51 .start = PA_MRSHPC_IO + 0x1f0 + 0x206, 52 .end = PA_MRSHPC_IO + 0x1f0 + 8 + 0x206 + 8, 53 .flags = IORESOURCE_IO, 54 }, 55 [2] = { 56 .start = MRSHPC_IRQ0, 57 .flags = IORESOURCE_IRQ, 58 }, 59}; 60 61static struct platform_device cf_ide_device = { 62 .name = "pata_platform", 63 .id = -1, 64 .num_resources = ARRAY_SIZE(cf_ide_resources), 65 .resource = cf_ide_resources, 66}; 67 68static struct platform_device *se7721_devices[] __initdata = { 69 &cf_ide_device, 70 &heartbeat_device 71}; 72 73static int __init se7721_devices_setup(void) 74{ 75 mrshpc_setup_windows(); 76 return platform_add_devices(se7721_devices, ARRAY_SIZE(se7721_devices)); 77} 78device_initcall(se7721_devices_setup); 79 80static void __init se7721_setup(char **cmdline_p) 81{ 82 /* for USB */ 83 __raw_writew(0x0000, 0xA405010C); /* PGCR */ 84 __raw_writew(0x0000, 0xA405010E); /* PHCR */ 85 __raw_writew(0x00AA, 0xA4050118); /* PPCR */ 86 __raw_writew(0x0000, 0xA4050124); /* PSELA */ 87} 88 89/* 90 * The Machine Vector 91 */ 92struct sh_machine_vector mv_se7721 __initmv = { 93 .mv_name = "Solution Engine 7721", 94 .mv_setup = se7721_setup, 95 .mv_init_irq = init_se7721_IRQ, 96}; 97