linux/arch/sh/boards/board-espt.c
<<
>>
Prefs
   1/*
   2 * Data Technology Inc. ESPT-GIGA board support
   3 *
   4 * Copyright (C) 2008, 2009 Renesas Solutions Corp.
   5 * Copyright (C) 2008, 2009 Nobuhiro Iwamatsu <iwamatsu.nobuhiro@renesas.com>
   6 *
   7 * This file is subject to the terms and conditions of the GNU General Public
   8 * License.  See the file "COPYING" in the main directory of this archive
   9 * for more details.
  10 */
  11#include <linux/init.h>
  12#include <linux/platform_device.h>
  13#include <linux/interrupt.h>
  14#include <linux/mtd/physmap.h>
  15#include <linux/io.h>
  16#include <linux/sh_eth.h>
  17#include <linux/sh_intc.h>
  18#include <asm/machvec.h>
  19#include <asm/sizes.h>
  20
  21/* NOR Flash */
  22static struct mtd_partition espt_nor_flash_partitions[] = {
  23        {
  24                .name = "U-Boot",
  25                .offset = 0,
  26                .size = (2 * SZ_128K),
  27                .mask_flags = MTD_WRITEABLE,    /* Read-only */
  28        }, {
  29                .name = "Linux-Kernel",
  30                .offset = MTDPART_OFS_APPEND,
  31                .size = (20 * SZ_128K),
  32        }, {
  33                .name = "Root Filesystem",
  34                .offset = MTDPART_OFS_APPEND,
  35                .size = MTDPART_SIZ_FULL,
  36        },
  37};
  38
  39static struct physmap_flash_data espt_nor_flash_data = {
  40        .width = 2,
  41        .parts = espt_nor_flash_partitions,
  42        .nr_parts = ARRAY_SIZE(espt_nor_flash_partitions),
  43};
  44
  45static struct resource espt_nor_flash_resources[] = {
  46        [0] = {
  47                .name = "NOR Flash",
  48                .start = 0,
  49                .end = SZ_8M - 1,
  50                .flags = IORESOURCE_MEM,
  51        },
  52};
  53
  54static struct platform_device espt_nor_flash_device = {
  55        .name = "physmap-flash",
  56        .resource = espt_nor_flash_resources,
  57        .num_resources = ARRAY_SIZE(espt_nor_flash_resources),
  58        .dev = {
  59                .platform_data = &espt_nor_flash_data,
  60        },
  61};
  62
  63/* SH-Ether */
  64static struct resource sh_eth_resources[] = {
  65        {
  66                .start  = 0xFEE00800,   /* use eth1 */
  67                .end    = 0xFEE00F7C - 1,
  68                .flags  = IORESOURCE_MEM,
  69        }, {
  70                .start  = 0xFEE01800,   /* TSU */
  71                .end    = 0xFEE01FFF,
  72                .flags  = IORESOURCE_MEM,
  73        }, {
  74
  75                .start  = evt2irq(0x920),   /* irq number */
  76                .flags  = IORESOURCE_IRQ,
  77        },
  78};
  79
  80static struct sh_eth_plat_data sh7763_eth_pdata = {
  81        .phy = 0,
  82        .edmac_endian = EDMAC_LITTLE_ENDIAN,
  83        .register_type = SH_ETH_REG_GIGABIT,
  84        .phy_interface = PHY_INTERFACE_MODE_MII,
  85};
  86
  87static struct platform_device espt_eth_device = {
  88        .name       = "sh-eth",
  89        .resource   = sh_eth_resources,
  90        .num_resources  = ARRAY_SIZE(sh_eth_resources),
  91        .dev        = {
  92                .platform_data = &sh7763_eth_pdata,
  93        },
  94};
  95
  96static struct platform_device *espt_devices[] __initdata = {
  97        &espt_nor_flash_device,
  98        &espt_eth_device,
  99};
 100
 101static int __init espt_devices_setup(void)
 102{
 103        return platform_add_devices(espt_devices,
 104                                    ARRAY_SIZE(espt_devices));
 105}
 106device_initcall(espt_devices_setup);
 107
 108static struct sh_machine_vector mv_espt __initmv = {
 109        .mv_name = "ESPT-GIGA",
 110};
 111