|
@@ -1,82 +0,0 @@
|
|
|
-/*
|
|
|
- * 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/module.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,
|
|
|
- .llseek = noop_llseek,
|
|
|
-};
|
|
|
-
|
|
|
-#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);
|