linux/arch/m68k/coldfire/firebee.c
<<
>>
Prefs
   1// SPDX-License-Identifier: GPL-2.0
   2/***************************************************************************/
   3
   4/*
   5 *      firebee.c -- extra startup code support for the FireBee boards
   6 *
   7 *      Copyright (C) 2011, Greg Ungerer (gerg@snapgear.com)
   8 */
   9
  10/***************************************************************************/
  11
  12#include <linux/kernel.h>
  13#include <linux/init.h>
  14#include <linux/io.h>
  15#include <linux/platform_device.h>
  16#include <linux/mtd/mtd.h>
  17#include <linux/mtd/partitions.h>
  18#include <linux/mtd/physmap.h>
  19#include <asm/coldfire.h>
  20#include <asm/mcfsim.h>
  21
  22/***************************************************************************/
  23
  24/*
  25 *      8MB of NOR flash fitted to the FireBee board.
  26 */
  27#define FLASH_PHYS_ADDR         0xe0000000      /* Physical address of flash */
  28#define FLASH_PHYS_SIZE         0x00800000      /* Size of flash */
  29
  30#define PART_BOOT_START         0x00000000      /* Start at bottom of flash */
  31#define PART_BOOT_SIZE          0x00040000      /* 256k in size */
  32#define PART_IMAGE_START        0x00040000      /* Start after boot loader */
  33#define PART_IMAGE_SIZE         0x006c0000      /* Most of flash */
  34#define PART_FPGA_START         0x00700000      /* Start at offset 7MB */
  35#define PART_FPGA_SIZE          0x00100000      /* 1MB in size */
  36
  37static struct mtd_partition firebee_flash_parts[] = {
  38        {
  39                .name   = "dBUG",
  40                .offset = PART_BOOT_START,
  41                .size   = PART_BOOT_SIZE,
  42        },
  43        {
  44                .name   = "FPGA",
  45                .offset = PART_FPGA_START,
  46                .size   = PART_FPGA_SIZE,
  47        },
  48        {
  49                .name   = "image",
  50                .offset = PART_IMAGE_START,
  51                .size   = PART_IMAGE_SIZE,
  52        },
  53};
  54
  55static struct physmap_flash_data firebee_flash_data = {
  56        .width          = 2,
  57        .nr_parts       = ARRAY_SIZE(firebee_flash_parts),
  58        .parts          = firebee_flash_parts,
  59};
  60
  61static struct resource firebee_flash_resource = {
  62        .start          = FLASH_PHYS_ADDR,
  63        .end            = FLASH_PHYS_ADDR + FLASH_PHYS_SIZE,
  64        .flags          = IORESOURCE_MEM,
  65};
  66
  67static struct platform_device firebee_flash = {
  68        .name           = "physmap-flash",
  69        .id             = 0,
  70        .dev            = {
  71                .platform_data = &firebee_flash_data,
  72        },
  73        .num_resources  = 1,
  74        .resource       = &firebee_flash_resource,
  75};
  76
  77/***************************************************************************/
  78
  79static int __init init_firebee(void)
  80{
  81        platform_device_register(&firebee_flash);
  82        return 0;
  83}
  84
  85arch_initcall(init_firebee);
  86
  87/***************************************************************************/
  88