亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? edb7312.c

?? 根據(jù)fs2410移植過后的mtd驅動源碼
?? C
字號:
/* *  drivers/mtd/nand/edb7312.c * *  Copyright (C) 2002 Marius Gr鰃er (mag@sysgo.de) * *  Derived from drivers/mtd/nand/autcpu12.c *       Copyright (c) 2001 Thomas Gleixner (gleixner@autronix.de) * * $Id: edb7312.c,v 1.12 2005/11/07 11:14:30 gleixner Exp $ * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * *  Overview: *   This is a device driver for the NAND flash device found on the *   CLEP7312 board which utilizes the Toshiba TC58V64AFT part. This is *   a 64Mibit (8MiB x 8 bits) NAND flash device. */#include <linux/slab.h>#include <linux/module.h>#include <linux/init.h>#include <linux/mtd/mtd.h>#include <linux/mtd/nand.h>#include <linux/mtd/partitions.h>#include <asm/io.h>#include <asm/arch/hardware.h> /* for CLPS7111_VIRT_BASE */#include <asm/sizes.h>#include <asm/hardware/clps7111.h>/* * MTD structure for EDB7312 board */static struct mtd_info *ep7312_mtd = NULL;/* * Values specific to the EDB7312 board (used with EP7312 processor) */#define EP7312_FIO_PBASE 0x10000000	/* Phys address of flash */#define EP7312_PXDR	0x0001	/*				 * IO offset to Port B data register				 * where the CLE, ALE and NCE pins				 * are wired to.				 */#define EP7312_PXDDR	0x0041	/*				 * IO offset to Port B data direction				 * register so we can control the IO				 * lines.				 *//* * Module stuff */static unsigned long ep7312_fio_pbase = EP7312_FIO_PBASE;static void __iomem * ep7312_pxdr = (void __iomem *) EP7312_PXDR;static void __iomem * ep7312_pxddr = (void __iomem *) EP7312_PXDDR;#ifdef CONFIG_MTD_PARTITIONS/* * Define static partitions for flash device */static struct mtd_partition partition_info[] = {	{ .name = "EP7312 Nand Flash",		  .offset = 0,		  .size = 8*1024*1024 }};#define NUM_PARTITIONS 1#endif/* *	hardware specific access to control-lines */static void ep7312_hwcontrol(struct mtd_info *mtd, int cmd){	switch(cmd) {	case NAND_CTL_SETCLE:		clps_writeb(clps_readb(ep7312_pxdr) | 0x10, ep7312_pxdr);		break;	case NAND_CTL_CLRCLE:		clps_writeb(clps_readb(ep7312_pxdr) & ~0x10, ep7312_pxdr);		break;	case NAND_CTL_SETALE:		clps_writeb(clps_readb(ep7312_pxdr) | 0x20, ep7312_pxdr);		break;	case NAND_CTL_CLRALE:		clps_writeb(clps_readb(ep7312_pxdr) & ~0x20, ep7312_pxdr);		break;	case NAND_CTL_SETNCE:		clps_writeb((clps_readb(ep7312_pxdr) | 0x80) & ~0x40, ep7312_pxdr);		break;	case NAND_CTL_CLRNCE:		clps_writeb((clps_readb(ep7312_pxdr) | 0x80) | 0x40, ep7312_pxdr);		break;	}}/* *	read device ready pin */static int ep7312_device_ready(struct mtd_info *mtd){	return 1;}#ifdef CONFIG_MTD_PARTITIONSconst char *part_probes[] = { "cmdlinepart", NULL };#endif/* * Main initialization routine */static int __init ep7312_init (void){	struct nand_chip *this;	const char *part_type = 0;	int mtd_parts_nb = 0;	struct mtd_partition *mtd_parts = 0;	void __iomem * ep7312_fio_base;	/* Allocate memory for MTD device structure and private data */	ep7312_mtd = kmalloc(sizeof(struct mtd_info) +			     sizeof(struct nand_chip),			     GFP_KERNEL);	if (!ep7312_mtd) {		printk("Unable to allocate EDB7312 NAND MTD device structure.\n");		return -ENOMEM;	}	/* map physical adress */	ep7312_fio_base = ioremap(ep7312_fio_pbase, SZ_1K);	if(!ep7312_fio_base) {		printk("ioremap EDB7312 NAND flash failed\n");		kfree(ep7312_mtd);		return -EIO;	}	/* Get pointer to private data */	this = (struct nand_chip *) (&ep7312_mtd[1]);	/* Initialize structures */	memset((char *) ep7312_mtd, 0, sizeof(struct mtd_info));	memset((char *) this, 0, sizeof(struct nand_chip));	/* Link the private data with the MTD structure */	ep7312_mtd->priv = this;	/*	 * Set GPIO Port B control register so that the pins are configured	 * to be outputs for controlling the NAND flash.	 */	clps_writeb(0xf0, ep7312_pxddr);	/* insert callbacks */	this->IO_ADDR_R = ep7312_fio_base;	this->IO_ADDR_W = ep7312_fio_base;	this->hwcontrol = ep7312_hwcontrol;	this->dev_ready = ep7312_device_ready;	/* 15 us command delay time */	this->chip_delay = 15;	/* Scan to find existence of the device */	if (nand_scan (ep7312_mtd, 1)) {		iounmap((void *)ep7312_fio_base);		kfree (ep7312_mtd);		return -ENXIO;	}#ifdef CONFIG_MTD_PARTITIONS	ep7312_mtd->name = "edb7312-nand";	mtd_parts_nb = parse_mtd_partitions(ep7312_mtd, part_probes,					    &mtd_parts, 0);	if (mtd_parts_nb > 0)		part_type = "command line";	else		mtd_parts_nb = 0;#endif	if (mtd_parts_nb == 0) {		mtd_parts = partition_info;		mtd_parts_nb = NUM_PARTITIONS;		part_type = "static";	}	/* Register the partitions */	printk(KERN_NOTICE "Using %s partition definition\n", part_type);	add_mtd_partitions(ep7312_mtd, mtd_parts, mtd_parts_nb);	/* Return happy */	return 0;}module_init(ep7312_init);/* * Clean up routine */static void __exit ep7312_cleanup (void){	struct nand_chip *this = (struct nand_chip *) &ep7312_mtd[1];	/* Release resources, unregister device */	nand_release (ap7312_mtd);	/* Free internal data buffer */	kfree (this->data_buf);	/* Free the MTD device structure */	kfree (ep7312_mtd);}module_exit(ep7312_cleanup);MODULE_LICENSE("GPL");MODULE_AUTHOR("Marius Groeger <mag@sysgo.de>");MODULE_DESCRIPTION("MTD map driver for Cogent EDB7312 board");

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大尺度一区二区| 日本不卡在线视频| 91啪亚洲精品| 亚洲自拍偷拍av| 欧美精品视频www在线观看| 午夜不卡av免费| 日韩视频免费直播| 国产精品99久久久久久宅男| 中文字幕av一区二区三区高 | 欧美成人艳星乳罩| 国产在线视频一区二区| 国产精品黄色在线观看| 欧美亚洲精品一区| 激情图区综合网| 18欧美乱大交hd1984| 欧美视频一区二区三区四区 | 国产精品乱码久久久久久| 91小宝寻花一区二区三区| 五月天中文字幕一区二区| 26uuu色噜噜精品一区| www.亚洲在线| 青娱乐精品在线视频| 中文在线一区二区| 欧美日韩dvd在线观看| 国产美女久久久久| 亚洲图片欧美一区| 国产午夜精品久久久久久久| 欧美在线观看18| 狠狠色丁香久久婷婷综合_中 | 久久综合色8888| 91久久精品国产91性色tv| 日日噜噜夜夜狠狠视频欧美人 | 国产伦精品一区二区三区在线观看| 国产欧美日韩亚州综合| 欧美日韩视频在线第一区| 国产高清成人在线| 午夜精品爽啪视频| 中文字幕亚洲一区二区va在线| 欧美日韩精品免费观看视频| 国产69精品久久777的优势| 亚洲成人av电影| 亚洲日本青草视频在线怡红院| 91精品国产综合久久香蕉麻豆| 99久久久国产精品| 国产精品99久久久久久久vr| 丝袜美腿高跟呻吟高潮一区| 国产精品超碰97尤物18| 精品粉嫩aⅴ一区二区三区四区| 欧美三级在线看| 99综合电影在线视频| 国产经典欧美精品| 美女爽到高潮91| 亚洲电影在线免费观看| 亚洲人成网站色在线观看| 国产亚洲欧美激情| 久久香蕉国产线看观看99| 欧美一区二区三级| 欧美日本韩国一区二区三区视频| 99在线精品一区二区三区| 国产成人免费9x9x人网站视频| 久久99国产精品免费| 热久久国产精品| 国产精品毛片高清在线完整版| 久久久99精品久久| 风间由美中文字幕在线看视频国产欧美| 不卡免费追剧大全电视剧网站| 亚洲影视资源网| 亚洲另类春色校园小说| **网站欧美大片在线观看| 日本一区二区在线不卡| 久久精品夜色噜噜亚洲a∨| 精品国产91九色蝌蚪| 久久夜色精品国产噜噜av| 欧美大片在线观看一区二区| 6080日韩午夜伦伦午夜伦| 在线不卡免费欧美| 91麻豆精品国产| 日韩一级欧美一级| 精品国产乱码久久久久久图片| 日韩欧美国产三级电影视频| 日韩精品一区二区三区四区| 欧美精品一区二区在线播放| 精品少妇一区二区三区视频免付费 | 精品蜜桃在线看| 精品第一国产综合精品aⅴ| 国产色一区二区| 精品福利在线导航| 精品粉嫩aⅴ一区二区三区四区| 国产在线播放一区三区四| 亚洲欧美另类图片小说| 一区二区三区蜜桃网| 一区二区三区不卡在线观看 | 成人晚上爱看视频| 国产一区二区视频在线| 国产精华液一区二区三区| 国产91精品一区二区麻豆网站| av在线一区二区三区| 欧美最新大片在线看| 在线91免费看| 国产欧美日韩精品一区| 亚洲在线免费播放| 久久国产尿小便嘘嘘| 丁香天五香天堂综合| 欧美四级电影网| 精品日本一线二线三线不卡| 国产精品蜜臀av| 日本va欧美va欧美va精品| 91小视频在线| 国产成人精品免费一区二区| 91网站最新地址| 91精品国产品国语在线不卡| 国产日韩欧美综合一区| 一级中文字幕一区二区| 蜜乳av一区二区| 99久久久精品| 欧美成人精品3d动漫h| 国产精品天天摸av网| 亚洲一区二区在线观看视频| 精品在线观看免费| 色999日韩国产欧美一区二区| 日韩精品一区在线观看| 成人免费一区二区三区视频| 日韩va欧美va亚洲va久久| 成人黄色国产精品网站大全在线免费观看| 欧美视频一区在线观看| 国产日韩精品一区二区浪潮av | 亚洲国产另类av| 国产精品亚洲第一| 欧美高清性hdvideosex| 亚洲欧洲av另类| 免费黄网站欧美| 欧美主播一区二区三区美女| 国产偷国产偷精品高清尤物 | 日韩国产在线观看一区| 国产午夜精品久久久久久免费视| 亚洲乱码国产乱码精品精小说| 久久精品国产免费| 欧美三级三级三级| 欧美国产日韩精品免费观看| 男人操女人的视频在线观看欧美 | 国产综合色视频| 欧美日韩亚洲另类| 中文字幕亚洲一区二区av在线| 国产专区欧美精品| 日韩一区二区三| 亚洲福利视频一区二区| 91在线精品一区二区| 久久久激情视频| 激情综合色播激情啊| 日韩欧美一二三| 男女视频一区二区| 欧美日韩的一区二区| 一二三区精品福利视频| 91小视频免费观看| 亚洲视频在线一区二区| 成人性生交大片免费看中文| 久久久久久久综合色一本| 久久99国产精品免费| 日韩欧美国产高清| 久久精品噜噜噜成人av农村| 日韩一区二区三区免费看| 日本特黄久久久高潮| 欧美一区二区三区在| 日韩高清一级片| 日韩午夜在线观看| 日本欧美一区二区三区| 欧美一区二区三区在| 蜜桃视频一区二区三区| 欧美一级高清片在线观看| 麻豆国产欧美一区二区三区| 欧美电影免费观看高清完整版在 | 麻豆精品在线观看| 在线播放中文一区| 日韩av中文字幕一区二区三区| 3d动漫精品啪啪| 国产综合久久久久久久久久久久| 久久久蜜桃精品| 成人黄色在线视频| 亚洲人成7777| 欧美群妇大交群中文字幕| 免费欧美日韩国产三级电影| 26uuu精品一区二区在线观看| 国模大尺度一区二区三区| 日本一区二区三区在线不卡| 色综合视频在线观看| 天天av天天翘天天综合网| 日韩视频免费观看高清完整版在线观看| 日本中文字幕一区二区有限公司| 久久综合久色欧美综合狠狠| 成人白浆超碰人人人人| 亚洲精品国产品国语在线app| 在线视频观看一区| 另类欧美日韩国产在线| 国产三级精品在线| a4yy欧美一区二区三区| 亚洲123区在线观看| 久久网站热最新地址| 91蜜桃传媒精品久久久一区二区| 日韩精品免费专区| 欧美国产一区二区|