Esempio n. 1
0
int __init nvramdrv_init(void)
{
    int r;

    r = register_chrdev(nvram_major, NVRAM_DEVNAME, 
			&nvramdrv_fops);
    if (r < 0) {
        printk(KERN_CRIT "nvramdrv: unable to register %s(%d)\n",
        		NVRAM_DEVNAME, nvram_major);
        return r;
    }
    if (nvram_major == 0) {
		nvram_major = r;
		printk(KERN_DEBUG "nvramdrv: got dynamic major %d\n", r);
    }

#if LINUX_VERSION_CODE > KERNEL_VERSION(3,3,0)
	 sema_init(&nvram_sem, 1);
#else
	init_MUTEX(&nvram_sem);
#endif

	down(&nvram_sem);
	init_nvram_block();
	up(&nvram_sem);

    return 0;
}
Esempio n. 2
0
int ra_nvram_init(void)
{
	int i, r = 0, ret = 0;

	printk("NVRAM: Kernel NVRAM start init.\n");
	r = register_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME,
			&ralink_nvram_fops);
	if (r < 0) {
		printk(KERN_ERR "NVRAM: unable to register character device\n");
		return r;
	}
	if (ralink_nvram_major == 0) {
		ralink_nvram_major = r;
		printk(KERN_DEBUG "NVRAM: got dynamic major %d\n", r);
	}

	sema_init(&nvram_sem, 1);

#ifdef AUTO_REBUILD_NVRAM
reinit:
#endif
	down(&nvram_sem);
	for (i = 0; i < FLASH_BLOCK_NUM; i++)
		ret=init_nvram_block(i);
#ifdef AUTO_REBUILD_NVRAM
		if (ret == NEED_REINIT) {  /* try flash cleanup */
		    goto reinit;
		}
#endif
	up(&nvram_sem);


	return 0;
}
Esempio n. 3
0
int __init ra_nvram_init(void)
{
	int i;
#ifndef  CONFIG_DEVFS_FS
	int r = 0;
#endif

#ifdef  CONFIG_DEVFS_FS
	if (devfs_register_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME,
				&ralink_nvram_fops)) {
		printk(KERN_ERR NAME ": unable to register character device\n");
		return -EIO;
	}
	devfs_handle = devfs_register(NULL, RALINK_NVRAM_DEVNAME,
			DEVFS_FL_DEFAULT, ralink_nvram_major, 0,
			S_IFCHR | S_IRUGO | S_IWUGO, &ralink_nvram_fops, NULL);
#else
	r = register_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME,
			&ralink_nvram_fops);
	if (r < 0) {
		printk(KERN_ERR "ralink_nvram: unable to register character device\n");
		return r;
	}
	if (ralink_nvram_major == 0) {
		ralink_nvram_major = r;
		printk(KERN_DEBUG "ralink_nvram: got dynamic major %d\n", r);
	}
#endif

	init_MUTEX(&nvram_sem);

	down(&nvram_sem);
	for (i = 0; i < FLASH_BLOCK_NUM; i++)
		init_nvram_block(i);
	up(&nvram_sem);

	return 0;
}