Skip to content

Commit

Permalink
---
Browse files Browse the repository at this point in the history
yaml
---
r: 4575
b: refs/heads/master
c: 9bc7b38
h: refs/heads/master
i:
  4573: fe98ebb
  4571: bb37124
  4567: eb5a89a
  4559: 47c2abe
  4543: 3248091
v: v3
  • Loading branch information
Todd Poynor authored and Thomas Gleixner committed Jul 1, 2005
1 parent 6846ec0 commit e860233
Show file tree
Hide file tree
Showing 2 changed files with 25 additions and 29 deletions.
2 changes: 1 addition & 1 deletion [refs]
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
---
refs/heads/master: bd7bcf52dabba9c391142fd515221fcb87b7c712
refs/heads/master: 9bc7b38731dd1cc1635ab12f8de48866f603b06e
52 changes: 24 additions & 28 deletions trunk/drivers/mtd/mtdchar.c
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
/*
* $Id: mtdchar.c,v 1.70 2005/04/01 15:36:11 nico Exp $
* $Id: mtdchar.c,v 1.72 2005/06/30 00:23:24 tpoynor Exp $
*
* Character-device access to raw MTD devices.
*
Expand All @@ -15,50 +15,37 @@
#include <linux/fs.h>
#include <asm/uaccess.h>

#ifdef CONFIG_DEVFS_FS
#include <linux/devfs_fs_kernel.h>
#include <linux/device.h>

static struct class *mtd_class;

static void mtd_notify_add(struct mtd_info* mtd)
{
if (!mtd)
return;

devfs_mk_cdev(MKDEV(MTD_CHAR_MAJOR, mtd->index*2),
S_IFCHR | S_IRUGO | S_IWUGO, "mtd/%d", mtd->index);

devfs_mk_cdev(MKDEV(MTD_CHAR_MAJOR, mtd->index*2+1),
S_IFCHR | S_IRUGO, "mtd/%dro", mtd->index);
class_device_create(mtd_class, MKDEV(MTD_CHAR_MAJOR, mtd->index*2),
NULL, "mtd%d", mtd->index);

class_device_create(mtd_class,
MKDEV(MTD_CHAR_MAJOR, mtd->index*2+1),
NULL, "mtd%dro", mtd->index);
}

static void mtd_notify_remove(struct mtd_info* mtd)
{
if (!mtd)
return;
devfs_remove("mtd/%d", mtd->index);
devfs_remove("mtd/%dro", mtd->index);

class_device_destroy(mtd_class, MKDEV(MTD_CHAR_MAJOR, mtd->index*2));
class_device_destroy(mtd_class, MKDEV(MTD_CHAR_MAJOR, mtd->index*2+1));
}

static struct mtd_notifier notifier = {
.add = mtd_notify_add,
.remove = mtd_notify_remove,
};

static inline void mtdchar_devfs_init(void)
{
devfs_mk_dir("mtd");
register_mtd_user(&notifier);
}

static inline void mtdchar_devfs_exit(void)
{
unregister_mtd_user(&notifier);
devfs_remove("mtd");
}
#else /* !DEVFS */
#define mtdchar_devfs_init() do { } while(0)
#define mtdchar_devfs_exit() do { } while(0)
#endif

/*
* We use file->private_data to store a pointer to the MTDdevice.
* Since alighment is at least 32 bits, we have 2 bits free for OTP
Expand Down Expand Up @@ -657,13 +644,22 @@ static int __init init_mtdchar(void)
return -EAGAIN;
}

mtdchar_devfs_init();
mtd_class = class_create(THIS_MODULE, "mtd");

if (IS_ERR(mtd_class)) {
printk(KERN_ERR "Error creating mtd class.\n");
unregister_chrdev(MTD_CHAR_MAJOR, "mtd");
return 1;
}

register_mtd_user(&notifier);
return 0;
}

static void __exit cleanup_mtdchar(void)
{
mtdchar_devfs_exit();
unregister_mtd_user(&notifier);
class_destroy(mtd_class);
unregister_chrdev(MTD_CHAR_MAJOR, "mtd");
}

Expand Down

0 comments on commit e860233

Please sign in to comment.