diff options
author | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
---|---|---|
committer | Srikant Patnaik | 2015-01-11 12:28:04 +0530 |
commit | 871480933a1c28f8a9fed4c4d34d06c439a7a422 (patch) | |
tree | 8718f573808810c2a1e8cb8fb6ac469093ca2784 /arch/avr32/boards/mimc200/fram.c | |
parent | 9d40ac5867b9aefe0722bc1f110b965ff294d30d (diff) | |
download | FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.gz FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.tar.bz2 FOSSEE-netbook-kernel-source-871480933a1c28f8a9fed4c4d34d06c439a7a422.zip |
Moved, renamed, and deleted files
The original directory structure was scattered and unorganized.
Changes are basically to make it look like kernel structure.
Diffstat (limited to 'arch/avr32/boards/mimc200/fram.c')
-rw-r--r-- | arch/avr32/boards/mimc200/fram.c | 81 |
1 files changed, 81 insertions, 0 deletions
diff --git a/arch/avr32/boards/mimc200/fram.c b/arch/avr32/boards/mimc200/fram.c new file mode 100644 index 00000000..9764a1a1 --- /dev/null +++ b/arch/avr32/boards/mimc200/fram.c @@ -0,0 +1,81 @@ +/* + * 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, + .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); |