linux/arch/sh/boards/mach-se/7721/setup.c
<<
>>
Prefs
   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