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