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