-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
yaml --- r: 117563 b: refs/heads/master c: 5b50c16 h: refs/heads/master i: 117561: c25a7ed 117559: d0da66e v: v3
- Loading branch information
Mark Jackson
authored and
Haavard Skinnemoen
committed
Oct 13, 2008
1 parent
51c61e5
commit b0b6fcc
Showing
7 changed files
with
467 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,2 +1,2 @@ | ||
--- | ||
refs/heads/master: 198f29358a31cdca1a496d19da90bd5d6c8527ce | ||
refs/heads/master: 5b50c166b79ffa0a2e3b0f3785fa5263685a81f2 |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
obj-y += setup.o flash.o fram.o |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,143 @@ | ||
/* | ||
* MIMC200 board-specific flash initialization | ||
* | ||
* Copyright (C) 2008 Mercury IMC Ltd | ||
* | ||
* This program is free software; you can redistribute it and/or modify | ||
* it under the terms of the GNU General Public License version 2 as | ||
* published by the Free Software Foundation. | ||
*/ | ||
#include <linux/init.h> | ||
#include <linux/platform_device.h> | ||
#include <linux/mtd/mtd.h> | ||
#include <linux/mtd/partitions.h> | ||
#include <linux/mtd/physmap.h> | ||
|
||
#include <mach/smc.h> | ||
|
||
static struct smc_timing flash_timing __initdata = { | ||
.ncs_read_setup = 0, | ||
.nrd_setup = 15, | ||
.ncs_write_setup = 0, | ||
.nwe_setup = 0, | ||
|
||
.ncs_read_pulse = 115, | ||
.nrd_pulse = 110, | ||
.ncs_write_pulse = 60, | ||
.nwe_pulse = 60, | ||
|
||
.read_cycle = 115, | ||
.write_cycle = 100, | ||
}; | ||
|
||
static struct smc_config flash_config __initdata = { | ||
.bus_width = 2, | ||
.nrd_controlled = 1, | ||
.nwe_controlled = 1, | ||
.byte_write = 1, | ||
}; | ||
|
||
/* system flash definition */ | ||
|
||
static struct mtd_partition flash_parts_system[] = { | ||
{ | ||
.name = "u-boot", | ||
.offset = 0x00000000, | ||
.size = 0x00020000, /* 128 KiB */ | ||
.mask_flags = MTD_WRITEABLE, | ||
}, | ||
{ | ||
.name = "root", | ||
.offset = 0x00020000, | ||
.size = 0x007c0000, | ||
}, | ||
{ | ||
.name = "splash", | ||
.offset = 0x007e0000, | ||
.size = 0x00010000, /* 64KiB */ | ||
}, | ||
{ | ||
.name = "env", | ||
.offset = 0x007f0000, | ||
.size = 0x00010000, | ||
.mask_flags = MTD_WRITEABLE, | ||
}, | ||
}; | ||
|
||
static struct physmap_flash_data flash_system = { | ||
.width = 2, | ||
.nr_parts = ARRAY_SIZE(flash_parts_system), | ||
.parts = flash_parts_system, | ||
}; | ||
|
||
static struct resource flash_resource_system = { | ||
.start = 0x00000000, | ||
.end = 0x007fffff, | ||
.flags = IORESOURCE_MEM, | ||
}; | ||
|
||
static struct platform_device flash_device_system = { | ||
.name = "physmap-flash", | ||
.id = 0, | ||
.resource = &flash_resource_system, | ||
.num_resources = 1, | ||
.dev = { | ||
.platform_data = &flash_system, | ||
}, | ||
}; | ||
|
||
/* data flash definition */ | ||
|
||
static struct mtd_partition flash_parts_data[] = { | ||
{ | ||
.name = "data", | ||
.offset = 0x00000000, | ||
.size = 0x00800000, | ||
}, | ||
}; | ||
|
||
static struct physmap_flash_data flash_data = { | ||
.width = 2, | ||
.nr_parts = ARRAY_SIZE(flash_parts_data), | ||
.parts = flash_parts_data, | ||
}; | ||
|
||
static struct resource flash_resource_data = { | ||
.start = 0x08000000, | ||
.end = 0x087fffff, | ||
.flags = IORESOURCE_MEM, | ||
}; | ||
|
||
static struct platform_device flash_device_data = { | ||
.name = "physmap-flash", | ||
.id = 1, | ||
.resource = &flash_resource_data, | ||
.num_resources = 1, | ||
.dev = { | ||
.platform_data = &flash_data, | ||
}, | ||
}; | ||
|
||
/* This needs to be called after the SMC has been initialized */ | ||
static int __init mimc200_flash_init(void) | ||
{ | ||
int ret; | ||
|
||
smc_set_timing(&flash_config, &flash_timing); | ||
ret = smc_set_configuration(0, &flash_config); | ||
if (ret < 0) { | ||
printk(KERN_ERR "mimc200: failed to set 'System' NOR flash timing\n"); | ||
return ret; | ||
} | ||
ret = smc_set_configuration(1, &flash_config); | ||
if (ret < 0) { | ||
printk(KERN_ERR "mimc200: failed to set 'Data' NOR flash timing\n"); | ||
return ret; | ||
} | ||
|
||
platform_device_register(&flash_device_system); | ||
platform_device_register(&flash_device_data); | ||
|
||
return 0; | ||
} | ||
device_initcall(mimc200_flash_init); |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,80 @@ | ||
/* | ||
* FRAM driver for MIMC200 board | ||
* | ||
* Copyright 2008 Mark Jackson <mpfj@mimc.co.uk> | ||
* | ||
* This module adds *very* simply support for the system's FRAM device. | ||
* At the moment, this is hard-coded to the MIMC200 platform, and only | ||
* supports mmap(). | ||
*/ | ||
|
||
#define FRAM_VERSION "1.0" | ||
|
||
#include <linux/miscdevice.h> | ||
#include <linux/proc_fs.h> | ||
#include <linux/mm.h> | ||
#include <linux/io.h> | ||
|
||
#define FRAM_BASE 0xac000000 | ||
#define FRAM_SIZE 0x20000 | ||
|
||
/* | ||
* The are the file operation function for user access to /dev/fram | ||
*/ | ||
|
||
static int fram_mmap(struct file *filp, struct vm_area_struct *vma) | ||
{ | ||
int ret; | ||
|
||
ret = remap_pfn_range(vma, | ||
vma->vm_start, | ||
virt_to_phys((void *)((unsigned long)FRAM_BASE)) >> PAGE_SHIFT, | ||
vma->vm_end-vma->vm_start, | ||
PAGE_SHARED); | ||
|
||
if (ret != 0) | ||
return -EAGAIN; | ||
|
||
return 0; | ||
} | ||
|
||
static const struct file_operations fram_fops = { | ||
.owner = THIS_MODULE, | ||
.mmap = fram_mmap, | ||
}; | ||
|
||
#define FRAM_MINOR 0 | ||
|
||
static struct miscdevice fram_dev = { | ||
FRAM_MINOR, | ||
"fram", | ||
&fram_fops | ||
}; | ||
|
||
static int __init | ||
fram_init(void) | ||
{ | ||
int ret; | ||
|
||
ret = misc_register(&fram_dev); | ||
if (ret) { | ||
printk(KERN_ERR "fram: can't misc_register on minor=%d\n", | ||
FRAM_MINOR); | ||
return ret; | ||
} | ||
printk(KERN_INFO "FRAM memory driver v" FRAM_VERSION "\n"); | ||
return 0; | ||
} | ||
|
||
static void __exit | ||
fram_cleanup_module(void) | ||
{ | ||
misc_deregister(&fram_dev); | ||
} | ||
|
||
module_init(fram_init); | ||
module_exit(fram_cleanup_module); | ||
|
||
MODULE_LICENSE("GPL"); | ||
|
||
MODULE_ALIAS_MISCDEV(FRAM_MINOR); |
Oops, something went wrong.