コード例 #1
0
ファイル: nvramdrv.c プロジェクト: jhbsz/cpe-1
void __exit nvramdrv_exit(void)
{
	int index;
	
	for (index = 0; index < 1; index++) {
		if (fb[index].dirty)
			nvram_commit(index);

		ra_nvram_close();
	
		fb[index].valid = 0;
		//free env
		kfree(fb[index].env.data);
	}


	unregister_chrdev(nvram_major, NVRAM_DEVNAME);
}
コード例 #2
0
ファイル: nvram.c プロジェクト: schidler/RT5350
static void ra_nvram_exit(void)
{
	int index;

	for (index = 0; index < FLASH_BLOCK_NUM; index++) {
		if (fb[index].dirty)
			nvram_commit(index);

		ra_nvram_close(index);

		fb[index].valid = 0;

		//free env
		kfree(fb[index].env.data);
	}

	unregister_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME);
}
コード例 #3
0
ファイル: nvram.c プロジェクト: schidler/RT5350
/*
 * clear flash by writing all 1's value
 */
int nvram_clear(int index)
{
	unsigned long to;
	int len;

	RANV_PRINT("--> nvram_clear %d\n", index);
	RANV_CHECK_INDEX(-1);

	ra_nvram_close(index);

	down(&nvram_sem);

	//construct all 1s env block
	len = fb[index].flash_max_len - sizeof(fb[index].env.crc);
	if (!fb[index].env.data) {
		fb[index].env.data = (char *)kmalloc(len, GFP_KERNEL);
		if (!fb[index].env.data)
			return -ENOMEM;
	}
	memset(fb[index].env.data, 0xFF, len);

	//calculate crc
	fb[index].env.crc = (unsigned long)nv_crc32(0, (unsigned char *)fb[index].env.data, len);

        //write crc to flash
	to = fb[index].flash_offset;
	len = sizeof(fb[index].env.crc);
	ra_mtd_write_nm(RALINK_NVRAM_MTDNAME, to, len, (unsigned char *)&fb[index].env.crc);

	//write all 1s data to flash
	to = to + len;
	len = fb[index].flash_max_len - len;
	ra_mtd_write_nm(RALINK_NVRAM_MTDNAME, to, len, (unsigned char *)fb[index].env.data);

	RANV_PRINT("clear flash from 0x%x for 0x%x bytes\n", (unsigned int)to, len);

	fb[index].dirty = 0;
	fb[index].valid = 1;

	up(&nvram_sem);

	return 0;
}
コード例 #4
0
ファイル: nvram.c プロジェクト: ndmsystems/linux-2.6.36
static void ra_nvram_exit(void)
{
	int index;
	
	for (index = 0; index < FLASH_BLOCK_NUM; index++) {
		if (fb[index].dirty)
			nvram_commit(index);

		ra_nvram_close(index);
	
		fb[index].valid = 0;
		//free env
		kfree(fb[index].env.data);
	}

#ifdef  CONFIG_DEVFS_FS
	devfs_unregister_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME);
	devfs_unregister(devfs_handle);
#else
	unregister_chrdev(ralink_nvram_major, RALINK_NVRAM_DEVNAME);
#endif

}