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

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? s3c2410mci.c

?? s3c2410驅(qū)動(dòng) 包含需要的全部文件。速度很快
?? C
?? 第 1 頁(yè) / 共 2 頁(yè)
字號(hào):
		}		if(mrq->data->flags & MMC_DATA_READ) {			sdi_dcon |= S3C2410_SDIDCON_RXAFTERCMD;			sdi_dcon |= S3C2410_SDIDCON_XFER_RXSTART;		}		s3c2410sdi_dma_setup(host, mrq->data->flags & MMC_DATA_WRITE ? S3C2410_DMASRC_MEM : S3C2410_DMASRC_HW);	/* see DMA-API.txt */		dma_len = dma_map_sg(&pdev->dev, mrq->data->sg, \				mrq->data->sg_len, \				mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);		DBG(PFX "dma_len: 0x%08x\n",dma_len);		/* start DMA */		s3c2410_dma_enqueue(host->dma, (void *) host,			sg_dma_address(&mrq->data->sg[0]),			(mrq->data->blocks << mrq->data->blksz_bits) );		}	host->mrq = mrq;	init_completion(&host->complete_request);	init_completion(&host->complete_dma);	//Clear command and data status registers	writel(0xFFFFFFFF, host->base + S3C2410_SDICMDSTAT);	writel(0xFFFFFFFF, host->base + S3C2410_SDIDSTA);	// Setup SDI controller	writel(sdi_bsize,host->base + S3C2410_SDIBSIZE);	writel(sdi_timer,host->base + S3C2410_SDITIMER);	writel(sdi_imsk,host->base + S3C2410_SDIIMSK);	// Setup SDI command argument and data control	writel(sdi_carg, host->base + S3C2410_SDICMDARG);	writel(sdi_dcon, host->base + S3C2410_SDIDCON);	// This initiates transfer	writel(sdi_ccon, host->base + S3C2410_SDICMDCON);	// Wait for transfer to complete	wait_for_completion(&host->complete_request);	DBG("[CMD] request complete.\n");	if(mrq->data) {		wait_for_completion(&host->complete_dma);		DBG("[DAT] DMA complete.\n");	}		//Cleanup controller	writel(0, host->base + S3C2410_SDICMDARG);	writel(0, host->base + S3C2410_SDIDCON);	writel(0, host->base + S3C2410_SDICMDCON);	writel(0, host->base + S3C2410_SDIIMSK);	// Read response	mrq->cmd->resp[0] = readl(host->base + S3C2410_SDIRSP0);	mrq->cmd->resp[1] = readl(host->base + S3C2410_SDIRSP1);	mrq->cmd->resp[2] = readl(host->base + S3C2410_SDIRSP2);	mrq->cmd->resp[3] = readl(host->base + S3C2410_SDIRSP3);	host->mrq = NULL;	DBG(PFX "mrq->cmd->resp[0]: 0x%08x\n",mrq->cmd->resp[0]);	DBG(PFX "mrq->cmd->resp[1]: 0x%08x\n",mrq->cmd->resp[1]);	DBG(PFX "mrq->cmd->resp[2]: 0x%08x\n",mrq->cmd->resp[2]);	DBG(PFX "mrq->cmd->resp[3]: 0x%08x\n",mrq->cmd->resp[3]);	// If we have no data transfer we are finished here	if (!mrq->data) goto request_done;	// Calulate the amout of bytes transfer, but only if there was	// no error		dma_unmap_sg(&pdev->dev,mrq->data->sg,dma_len,\	mrq->data->flags & MMC_DATA_READ ? DMA_FROM_DEVICE : DMA_TO_DEVICE);	if(mrq->data->error == MMC_ERR_NONE) {		mrq->data->bytes_xfered = (mrq->data->blocks << mrq->data->blksz_bits);		if(mrq->data->flags & MMC_DATA_READ);	} else {		mrq->data->bytes_xfered = 0;	}	// If we had an error while transfering data we flush the	// DMA channel to clear out any garbage	if(mrq->data->error != MMC_ERR_NONE) {		s3c2410_dma_ctrl(host->dma, S3C2410_DMAOP_FLUSH);		DBG(PFX "flushing DMA.\n");			}	// Issue stop command	if(mrq->data->stop) mmc_wait_for_cmd(mmc, mrq->data->stop, 3);request_done:	mrq->done(mrq);}static void s3c2410sdi_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) {	struct s3c2410sdi_host *host = mmc_priv(mmc);	u32 sdi_psc, sdi_con;	//Set power	sdi_con = readl(host->base + S3C2410_SDICON);	DBG(PFX "s3c2410sdi_set_ios\n");		DBG(PFX "S3C2410_SDICON :%08x\n",sdi_con);			switch(ios->power_mode) {		case MMC_POWER_ON:		case MMC_POWER_UP:			//s3c2410_gpio_setpin(S3C2410_GPA17, 1); // card power on			s3c2410_gpio_cfgpin(S3C2410_GPE5, S3C2410_GPE5_SDCLK);			s3c2410_gpio_cfgpin(S3C2410_GPE6, S3C2410_GPE6_SDCMD);			s3c2410_gpio_cfgpin(S3C2410_GPE7, S3C2410_GPE7_SDDAT0);			s3c2410_gpio_cfgpin(S3C2410_GPE8, S3C2410_GPE8_SDDAT1);			s3c2410_gpio_cfgpin(S3C2410_GPE9, S3C2410_GPE9_SDDAT2);			s3c2410_gpio_cfgpin(S3C2410_GPE10, S3C2410_GPE10_SDDAT3);			if (host->pdata->set_power)							(host->pdata->set_power)(1);						sdi_con|= S3C2410_SDICON_FIFORESET;			break;		case MMC_POWER_OFF:		default:			if (host->pdata->set_power)				(host->pdata->set_power)(0);			break;	}	//Set clock	for(sdi_psc=0;sdi_psc<255;sdi_psc++) {		if( (clk_get_rate(host->clk) / (2*(sdi_psc+1))) <= ios->clock) break;	}	if(sdi_psc > 255) sdi_psc = 255;	//sdi_psc =1;	writel(sdi_psc, host->base + S3C2410_SDIPRE);	//Set CLOCK_ENABLE	if(ios->clock) 	sdi_con |= S3C2410_SDICON_CLOCKTYPE;	else		sdi_con &=~S3C2410_SDICON_CLOCKTYPE;	writel(sdi_con, host->base + S3C2410_SDICON);	DBG(PFX "S3C2410_SDICON :%08x\n",readl(host->base + S3C2410_SDICON));			DBG(PFX "S3C2410_SDICON :%08x\n",readl(host->base + S3C2410_SDIPRE));			host->bus_width = ios->bus_width;}static struct mmc_host_ops s3c2410sdi_ops = {	.request	= s3c2410sdi_request,	.set_ios	= s3c2410sdi_set_ios,};static void s3c2410_mmc_def_setpower(unsigned int to){	//s3c2410_gpio_cfgpin(S3C2410_GPA17, S3C2410_GPA17_OUT);	//s3c2410_gpio_setpin(S3C2410_GPA17, to);}static struct s3c24xx_mmc_platdata s3c2410_mmc_defplat = {	.gpio_detect	= S3C2410_GPG10,	.set_power	= s3c2410_mmc_def_setpower,	.f_max		= 3000000,	.ocr_avail	= MMC_VDD_32_33,};static int s3c2410sdi_probe(struct device *dev){	struct platform_device	*pdev = to_platform_device(dev);	struct mmc_host 	*mmc;	s3c24xx_mmc_pdata_t	*pdata;	struct s3c2410sdi_host 	*host;	int ret;	mmc = mmc_alloc_host(sizeof(struct s3c2410sdi_host), dev);	if (!mmc) {		ret = -ENOMEM;		goto probe_out;	}	host = mmc_priv(mmc);	spin_lock_init( &host->complete_lock );	host->complete_what 	= COMPLETION_NONE;	host->mmc 		= mmc;	host->dma		= S3C2410SDI_DMA;		pdata = dev->platform_data;		if (!pdata) {			dev->platform_data = &s3c2410_mmc_defplat;			pdata = &s3c2410_mmc_defplat;		}	host->pdata = pdata;	host->irq_cd = s3c2410_gpio_getirq(pdata->gpio_detect);	printk("host->irq_cd=%d\n",host->irq_cd);	s3c2410_gpio_cfgpin(pdata->gpio_detect, S3C2410_GPG10_EINT18);	host->mem = platform_get_resource(pdev, IORESOURCE_MEM, 0);	if (!host->mem) {		printk(KERN_INFO PFX "failed to get io memory region resouce.\n");		ret = -ENOENT;		goto probe_free_host;	}	host->mem = request_mem_region(host->mem->start,		RESSIZE(host->mem), pdev->name);	if (!host->mem) {		printk(KERN_INFO PFX "failed to request io memory region.\n");		ret = -ENOENT;		goto probe_free_host;	}	host->base = ioremap(host->mem->start, RESSIZE(host->mem));	if (host->base == 0) {		printk(KERN_INFO PFX "failed to ioremap() io memory region.\n");		ret = -EINVAL;		goto probe_free_mem_region;	}	host->irq = platform_get_irq(pdev, 0);	if (host->irq == 0) {		printk(KERN_INFO PFX "failed to get interrupt resouce.\n");		ret = -EINVAL;		goto probe_iounmap;	}	if(request_irq(host->irq, s3c2410sdi_irq, 0, DRIVER_NAME, host)) {		printk(KERN_INFO PFX "failed to request sdi interrupt.\n");		ret = -ENOENT;		goto probe_iounmap;	}	//s3c2410_gpio_cfgpin(S3C2410_GPG10, S3C2410_GPG10_EINT18); //GPG10 for sd detect;	set_irq_type(host->irq_cd, IRQT_BOTHEDGE);	if(request_irq(host->irq_cd, s3c2410sdi_irq_cd, 0, DRIVER_NAME, host)) {		printk(KERN_WARNING PFX "failed to request card detect interrupt.\n" );		ret = -ENOENT;		goto probe_free_irq;	}	if(s3c2410_dma_request(S3C2410SDI_DMA, &s3c2410sdi_dma_client, NULL)) {		printk(KERN_WARNING PFX "unable to get DMA channel.\n" );		ret = -EBUSY;		goto probe_free_irq_cd;	}	host->clk = clk_get(dev, "sdi");	if (IS_ERR(host->clk)) {		printk(KERN_INFO PFX "failed to find clock source.\n");		ret = PTR_ERR(host->clk);		host->clk = NULL;		goto probe_free_host;	}	if((ret = clk_use(host->clk))) {		printk(KERN_INFO PFX "failed to use clock source.\n");		goto clk_unuse;	}	if((ret = clk_enable(host->clk))) {		printk(KERN_INFO PFX "failed to enable clock source.\n");		goto clk_free;	}	mmc->ops 	= &s3c2410sdi_ops;	mmc->ocr_avail	= MMC_VDD_32_33;	mmc->f_min 	= clk_get_rate(host->clk) / 512;	mmc->f_max 	= clk_get_rate(host->clk) / 2;	mmc->caps = MMC_CAP_4_BIT_DATA;	//HACK: There seems to be a hardware bug in TomTom GO.	if(mmc->f_max>3000000) mmc->f_max=3000000;	/*	 * Since we only have a 16-bit data length register, we must	 * ensure that we don't exceed 2^16-1 bytes in a single request.	 * Choose 64 (512-byte) sectors as the limit.	 */	mmc->max_sectors = 64;	/*	 * Set the maximum segment size.  Since we aren't doing DMA	 * (yet) we are only limited by the data length register.	 */	mmc->max_seg_size = mmc->max_sectors << 9;	printk(KERN_INFO PFX "probe: mapped sdi_base=%p irq=%u irq_cd=%u dma=%u.\n", 		host->base, host->irq, host->irq_cd, host->dma);//	if (host->pdata && host->pdata->init)//		host->pdata->init(dev, s3c2410sdi_irq_cd, mmc);		if((ret = mmc_add_host(mmc))) {		printk(KERN_INFO PFX "failed to add mmc host.\n");		goto clk_disable;	}	dev_set_drvdata(dev, mmc);	printk(KERN_INFO PFX "initialisation done.\n");	return 0;	 clk_disable:	clk_disable(host->clk); clk_unuse:	clk_unuse(host->clk); clk_free:	clk_put(host->clk); probe_free_irq_cd: 	free_irq(host->irq_cd, host); probe_free_irq: 	free_irq(host->irq, host); probe_iounmap:	iounmap(host->base); probe_free_mem_region:	release_mem_region(host->mem->start, RESSIZE(host->mem)); probe_free_host:	mmc_free_host(mmc); probe_out:	return ret;}static int s3c2410sdi_remove(struct device *dev){	struct mmc_host 	*mmc  = dev_get_drvdata(dev);	struct s3c2410sdi_host 	*host = mmc_priv(mmc);	mmc_remove_host(mmc);	clk_disable(host->clk);	clk_unuse(host->clk);	clk_put(host->clk); 	free_irq(host->irq_cd, host); 	free_irq(host->irq, host);	iounmap(host->base);	release_mem_region(host->mem->start, RESSIZE(host->mem));	mmc_free_host(mmc);	return 0;}static struct device_driver s3c2410sdi_driver ={        .name           = "s3c2410-sdi",        .bus            = &platform_bus_type,        .probe          = s3c2410sdi_probe,        .remove         = s3c2410sdi_remove,};static int __init s3c2410sdi_init(void){	return driver_register(&s3c2410sdi_driver);}static void __exit s3c2410sdi_exit(void){	driver_unregister(&s3c2410sdi_driver);}module_init(s3c2410sdi_init);module_exit(s3c2410sdi_exit);MODULE_DESCRIPTION("Samsung S3C2410 Multimedia Card Interface driver");MODULE_LICENSE("GPL");

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲综合免费观看高清完整版在线| 亚洲欧洲中文日韩久久av乱码| 国产精品午夜免费| 同产精品九九九| jlzzjlzz亚洲日本少妇| 欧美一区午夜视频在线观看| 中文字幕一区二| 久99久精品视频免费观看| 在线免费精品视频| 亚洲欧洲精品天堂一级| 国产麻豆成人传媒免费观看| 4438x亚洲最大成人网| 亚洲欧美在线视频| 成人午夜视频网站| 26uuu国产电影一区二区| 日韩成人精品在线| 欧美精品第1页| 亚洲123区在线观看| 色94色欧美sute亚洲线路一ni| 国产免费久久精品| 国产大陆精品国产| 久久久亚洲午夜电影| 麻豆精品一区二区av白丝在线| 欧美三级韩国三级日本一级| 美女精品一区二区| 视频在线观看一区| 欧美电影一区二区三区| 午夜伦理一区二区| 欧美美女视频在线观看| 肉色丝袜一区二区| 91精品久久久久久蜜臀| 日本欧美大码aⅴ在线播放| 欧美日韩综合在线| 亚洲h精品动漫在线观看| 久久色在线观看| 日韩精品一区二区三区在线观看 | 免费成人结看片| 精品国产乱码久久| 精品精品欲导航| 欧美电影免费观看高清完整版在线观看 | 欧美精品久久99久久在免费线| 中文字幕不卡在线播放| 成人黄色在线视频| 亚洲精品国久久99热| 91成人免费电影| 香港成人在线视频| 欧美变态tickling挠脚心| 久久精品国产色蜜蜜麻豆| 久久久99精品久久| 91在线观看免费视频| 亚洲一区二区三区爽爽爽爽爽| 在线播放中文字幕一区| 久久电影网站中文字幕| 国产精品久久久久久久浪潮网站 | 亚洲精品高清视频在线观看| 欧美三片在线视频观看| 蜜桃精品视频在线观看| 国产欧美日韩精品在线| 色综合色综合色综合| 奇米影视7777精品一区二区| 欧美精品一区二区三区蜜臀| 不卡欧美aaaaa| 偷拍与自拍一区| 国产日产精品1区| 欧美午夜电影网| 国产精品资源在线看| 伊人性伊人情综合网| 欧美mv日韩mv| 在线观看亚洲一区| 国产麻豆精品在线| 午夜精品久久久久久久99樱桃 | 精品国产一区二区三区久久久蜜月| 国产精品资源在线观看| 一卡二卡欧美日韩| 国产亚洲欧美一级| 欧美久久久影院| av不卡免费在线观看| 久久精品av麻豆的观看方式| 亚洲日穴在线视频| 久久久久久久久久久久电影| 欧美视频三区在线播放| 成人深夜在线观看| 美女国产一区二区| 亚洲国产毛片aaaaa无费看| 国产肉丝袜一区二区| 91精品福利在线一区二区三区| 色综合夜色一区| 粉嫩av一区二区三区在线播放| 日韩和欧美的一区| 亚洲欧美激情插| 国产精品成人免费| 欧美电影一区二区三区| 成人福利视频在线| 美国十次综合导航| 日韩不卡一区二区| 洋洋av久久久久久久一区| 日韩电影在线一区二区| 国产午夜亚洲精品午夜鲁丝片 | 欧美va在线播放| 欧美日韩国产不卡| 91福利资源站| 在线看一区二区| 91麻豆国产香蕉久久精品| 国产aⅴ综合色| 成人亚洲一区二区一| 国产精品自在在线| 高清在线成人网| 国产精品自在在线| 粉嫩av一区二区三区粉嫩 | 另类小说欧美激情| 蜜臀久久99精品久久久久久9| 午夜精品福利一区二区蜜股av| 一区二区在线观看视频| 亚洲日本成人在线观看| 1000部国产精品成人观看| 国产精品九色蝌蚪自拍| 国产精品卡一卡二| 亚洲欧美一区二区视频| 亚洲精品ww久久久久久p站| 亚洲另类中文字| 亚洲国产精品一区二区久久| 亚洲午夜久久久久久久久电影网| 亚洲黄色尤物视频| 午夜电影网一区| 日本特黄久久久高潮| 美女视频黄 久久| 国产盗摄女厕一区二区三区 | 久草在线在线精品观看| 国产一本一道久久香蕉| 成人一区在线观看| 色综合天天性综合| 欧美精品18+| 精品久久久久久综合日本欧美| 久久久午夜电影| 国产精品视频第一区| 亚洲最大成人网4388xx| 日韩国产在线一| 国产精品18久久久久久vr| av激情亚洲男人天堂| 欧美性色综合网| 精品国产3级a| 一区二区三区鲁丝不卡| 男人的天堂亚洲一区| 成人黄色软件下载| 欧美高清视频在线高清观看mv色露露十八| 日韩一级二级三级| 国产精品麻豆网站| 日韩成人午夜电影| www.久久久久久久久| 欧美疯狂做受xxxx富婆| 久久久国产午夜精品| 一级中文字幕一区二区| 极品少妇一区二区| 欧美在线视频日韩| 久久嫩草精品久久久精品一| 亚洲美女淫视频| 国产一区二区三区电影在线观看| 91蜜桃在线观看| 久久精品视频免费观看| 亚洲123区在线观看| 国产99久久久国产精品潘金网站| 欧美最猛黑人xxxxx猛交| 久久午夜电影网| 日日摸夜夜添夜夜添国产精品| 粗大黑人巨茎大战欧美成人| 91精选在线观看| 亚洲人成影院在线观看| 国产一区二区导航在线播放| 欧美午夜不卡视频| 综合亚洲深深色噜噜狠狠网站| 精品一区二区三区视频| 欧美日韩一区久久| 1区2区3区精品视频| 国产一区二区在线电影| 欧美一区二区三区日韩视频| 亚洲精品美腿丝袜| 丁香婷婷综合激情五月色| 日韩一级片在线观看| 99国产精品久久| 国产成人精品免费一区二区| 欧美一二三区精品| 亚洲已满18点击进入久久| 不卡视频免费播放| 国产欧美一区二区三区在线看蜜臀 | 秋霞影院一区二区| 色综合久久99| 国产精品卡一卡二| 成人福利电影精品一区二区在线观看| 日韩视频一区二区三区| 天天操天天干天天综合网| 欧美亚洲精品一区| 一卡二卡三卡日韩欧美| 欧美综合一区二区| 一区二区三区毛片| 欧美日韩三级在线| 天天综合日日夜夜精品| 51精品秘密在线观看| 视频在线观看一区二区三区| 51精品国自产在线| 奇米综合一区二区三区精品视频|