/*
- * $Id: mtdcore.c,v 1.43 2004/07/23 15:20:46 dwmw2 Exp $
+ * $Id: mtdcore.c,v 1.39 2003/05/21 15:15:03 dwmw2 Exp $
*
* Core registration and callback routines for MTD
* drivers and users.
*
*/
+#include <linux/version.h>
#include <linux/config.h>
#include <linux/module.h>
#include <linux/kernel.h>
/* Support for /proc/mtd */
#ifdef CONFIG_PROC_FS
+
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
static struct proc_dir_entry *proc_mtd;
+#endif
static inline int mtd_proc_info (char *buf, int i)
{
this->erasesize, this->name);
}
-static int mtd_read_proc (char *page, char **start, off_t off, int count,
- int *eof, void *data_unused)
+static int mtd_read_proc ( char *page, char **start, off_t off,int count
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
+ ,int *eof, void *data_unused
+#else
+ ,int unused
+#endif
+ )
{
int len, l, i;
off_t begin = 0;
}
}
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
*eof = 1;
+#endif
done:
up(&mtd_table_mutex);
return ((count < begin+len-off) ? count : begin+len-off);
}
+#if LINUX_VERSION_CODE < KERNEL_VERSION(2,2,0)
+struct proc_dir_entry mtd_proc_entry = {
+ 0, /* low_ino: the inode -- dynamic */
+ 3, "mtd", /* len of name and name */
+ S_IFREG | S_IRUGO, /* mode */
+ 1, 0, 0, /* nlinks, owner, group */
+ 0, NULL, /* size - unused; operations -- use default */
+ &mtd_read_proc, /* function used to read data */
+ /* nothing more */
+ };
+#endif
+
#endif /* CONFIG_PROC_FS */
/*====================================================================*/
int __init init_mtd(void)
{
#ifdef CONFIG_PROC_FS
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
if ((proc_mtd = create_proc_entry( "mtd", 0, NULL )))
- proc_mtd->read_proc = mtd_read_proc;
+ proc_mtd->read_proc = mtd_read_proc;
+#else
+ proc_register_dynamic(&proc_root,&mtd_proc_entry);
+#endif
+#endif
+
+#if LINUX_VERSION_CODE < 0x20212
+ init_mtd_devices();
#endif
#ifdef CONFIG_PM
#endif
#ifdef CONFIG_PROC_FS
+#if LINUX_VERSION_CODE >= KERNEL_VERSION(2,2,0)
if (proc_mtd)
- remove_proc_entry( "mtd", NULL);
+ remove_proc_entry( "mtd", NULL);
+#else
+ proc_unregister(&proc_root,mtd_proc_entry.low_ino);
+#endif
#endif
}