firebee.c (2289B)
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/***************************************************************************/