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

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

?? dma.c

?? MIZI Research, Inc.發布的嵌入式Linux內核源碼
?? C
字號:
/* *  linux/arch/arm/kernel/dma.c * *  Copyright (C) 1995-2000 Russell King * * 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. * *  Front-end to the DMA handling.  This handles the allocation/freeing *  of DMA channels, and provides a unified interface to the machines *  DMA facilities. */#include <linux/module.h>#include <linux/slab.h>#include <linux/sched.h>#include <linux/mman.h>#include <linux/init.h>#include <linux/spinlock.h>#include <asm/dma.h>#include <asm/mach/dma.h>spinlock_t dma_spin_lock = SPIN_LOCK_UNLOCKED;#if MAX_DMA_CHANNELS > 0static dma_t dma_chan[MAX_DMA_CHANNELS];/* * Get dma list for /proc/dma */int get_dma_list(char *buf){	dma_t *dma;	char *p = buf;	int i;	for (i = 0, dma = dma_chan; i < MAX_DMA_CHANNELS; i++, dma++)		if (dma->lock)			p += sprintf(p, "%2d: %14s %s\n", i,				     dma->d_ops->type, dma->device_id);	return p - buf;}/* * Request DMA channel * * On certain platforms, we have to allocate an interrupt as well... */int request_dma(dmach_t channel, const char *device_id){	dma_t *dma = dma_chan + channel;	int ret;	if (channel >= MAX_DMA_CHANNELS || !dma->d_ops)		goto bad_dma;	if (xchg(&dma->lock, 1) != 0)		goto busy;	dma->device_id = device_id;	dma->active    = 0;	dma->invalid   = 1;	ret = 0;	if (dma->d_ops->request)		ret = dma->d_ops->request(channel, dma);	if (ret)		xchg(&dma->lock, 0);	return ret;bad_dma:	printk(KERN_ERR "dma: trying to allocate DMA%d\n", channel);	return -EINVAL;busy:	return -EBUSY;}/* * Free DMA channel * * On certain platforms, we have to free interrupt as well... */void free_dma(dmach_t channel){	dma_t *dma = dma_chan + channel;	if (channel >= MAX_DMA_CHANNELS || !dma->d_ops)		goto bad_dma;	if (dma->active) {		printk(KERN_ERR "dma%d: freeing active DMA\n", channel);		dma->d_ops->disable(channel, dma);		dma->active = 0;	}	if (xchg(&dma->lock, 0) != 0) {		if (dma->d_ops->free)			dma->d_ops->free(channel, dma);		return;	}	printk(KERN_ERR "dma%d: trying to free free DMA\n", channel);	return;bad_dma:	printk(KERN_ERR "dma: trying to free DMA%d\n", channel);}/* Set DMA Scatter-Gather list */void set_dma_sg (dmach_t channel, struct scatterlist *sg, int nr_sg){	dma_t *dma = dma_chan + channel;	dma->sg = sg;	dma->sgcount = nr_sg;	dma->using_sg = 1;	dma->invalid = 1;}/* Set DMA address * * Copy address to the structure, and set the invalid bit */void set_dma_addr (dmach_t channel, unsigned long physaddr){	dma_t *dma = dma_chan + channel;	if (dma->active)		printk(KERN_ERR "dma%d: altering DMA address while "		       "DMA active\n", channel);	dma->sg = &dma->buf;	dma->sgcount = 1;	dma->buf.address = bus_to_virt(physaddr);	dma->using_sg = 0;	dma->invalid = 1;}/* Set DMA byte count * * Copy address to the structure, and set the invalid bit */void set_dma_count (dmach_t channel, unsigned long count){	dma_t *dma = dma_chan + channel;	if (dma->active)		printk(KERN_ERR "dma%d: altering DMA count while "		       "DMA active\n", channel);	dma->sg = &dma->buf;	dma->sgcount = 1;	dma->buf.length = count;	dma->using_sg = 0;	dma->invalid = 1;}/* Set DMA direction mode */void set_dma_mode (dmach_t channel, dmamode_t mode){	dma_t *dma = dma_chan + channel;	if (dma->active)		printk(KERN_ERR "dma%d: altering DMA mode while "		       "DMA active\n", channel);	dma->dma_mode = mode;	dma->invalid = 1;}/* Enable DMA channel */void enable_dma (dmach_t channel){	dma_t *dma = dma_chan + channel;	if (!dma->lock)		goto free_dma;	if (dma->active == 0) {		dma->active = 1;		dma->d_ops->enable(channel, dma);	}	return;free_dma:	printk(KERN_ERR "dma%d: trying to enable free DMA\n", channel);	BUG();}/* Disable DMA channel */void disable_dma (dmach_t channel){	dma_t *dma = dma_chan + channel;	if (!dma->lock)		goto free_dma;	if (dma->active == 1) {		dma->active = 0;		dma->d_ops->disable(channel, dma);	}	return;free_dma:	printk(KERN_ERR "dma%d: trying to disable free DMA\n", channel);	BUG();}void set_dma_page(dmach_t channel, char pagenr){	printk(KERN_ERR "dma%d: trying to set_dma_page\n", channel);}void set_dma_speed(dmach_t channel, int cycle_ns){	dma_t *dma = dma_chan + channel;	int ret = 0;	if (dma->d_ops->setspeed)		ret = dma->d_ops->setspeed(channel, dma, cycle_ns);	dma->speed = ret;}int get_dma_residue(dmach_t channel){	dma_t *dma = dma_chan + channel;	int ret = 0;	if (dma->d_ops->residue)		ret = dma->d_ops->residue(channel, dma);	return ret;}void __init init_dma(void){	arch_dma_init(dma_chan);}#elseint request_dma(dmach_t channel, const char *device_id){	return -EINVAL;}int get_dma_residue(dmach_t channel){	return 0;}#define GLOBAL_ALIAS(_a,_b) asm (".set " #_a "," #_b "; .globl " #_a)GLOBAL_ALIAS(disable_dma, get_dma_residue);GLOBAL_ALIAS(enable_dma, get_dma_residue);GLOBAL_ALIAS(free_dma, get_dma_residue);GLOBAL_ALIAS(get_dma_list, get_dma_residue);GLOBAL_ALIAS(set_dma_mode, get_dma_residue);GLOBAL_ALIAS(set_dma_page, get_dma_residue);GLOBAL_ALIAS(set_dma_count, get_dma_residue);GLOBAL_ALIAS(set_dma_addr, get_dma_residue);GLOBAL_ALIAS(set_dma_sg, get_dma_residue);GLOBAL_ALIAS(set_dma_speed, get_dma_residue);GLOBAL_ALIAS(init_dma, get_dma_residue);#endifEXPORT_SYMBOL(request_dma);EXPORT_SYMBOL(free_dma);EXPORT_SYMBOL(enable_dma);EXPORT_SYMBOL(disable_dma);EXPORT_SYMBOL(set_dma_addr);EXPORT_SYMBOL(set_dma_count);EXPORT_SYMBOL(set_dma_mode);EXPORT_SYMBOL(set_dma_page);EXPORT_SYMBOL(get_dma_residue);EXPORT_SYMBOL(set_dma_sg);EXPORT_SYMBOL(set_dma_speed);

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
99天天综合性| 久久久国产综合精品女国产盗摄| 亚洲一区二区三区中文字幕| 欧美日本一区二区在线观看| 韩国视频一区二区| 亚洲男人天堂一区| 精品国产不卡一区二区三区| 日本二三区不卡| 国产曰批免费观看久久久| 97久久精品人人澡人人爽| 欧美一区二区在线观看| 午夜a成v人精品| 国产精品久久久久久久岛一牛影视 | 亚洲国产成人porn| 久久久一区二区三区捆绑**| 欧美日韩国产综合一区二区三区| 不卡在线观看av| 精品亚洲成a人| 日韩精品欧美精品| 夜夜嗨av一区二区三区网页 | 欧美男男青年gay1069videost| 成人激情文学综合网| 久久99精品国产麻豆婷婷洗澡| 一片黄亚洲嫩模| 亚洲视频一区在线观看| 国产午夜精品美女毛片视频| 制服视频三区第一页精品| 色中色一区二区| 成人一区在线看| 国产成人在线视频网站| 免费不卡在线观看| 日韩制服丝袜av| 午夜在线电影亚洲一区| 亚洲成人黄色小说| 亚洲一区自拍偷拍| 一区二区三区在线观看动漫| 1024亚洲合集| ●精品国产综合乱码久久久久 | 亚洲日本va在线观看| 国产精品女同互慰在线看| 久久嫩草精品久久久精品一| 精品久久久久久久久久久久包黑料| 欧美人狂配大交3d怪物一区| 在线一区二区三区四区| 91猫先生在线| 欧美在线观看一区二区| 欧美午夜电影在线播放| 欧美日韩三级在线| 91麻豆精品国产自产在线| 7777女厕盗摄久久久| 欧美一区永久视频免费观看| 欧美一级夜夜爽| 久久香蕉国产线看观看99| 久久午夜色播影院免费高清| 国产亚洲精品精华液| 国产欧美1区2区3区| 国产精品女主播在线观看| 亚洲人成网站色在线观看| 亚洲综合一二三区| 三级不卡在线观看| 国产麻豆欧美日韩一区| 成人黄色777网| 在线观看欧美黄色| 欧美一区二区三区在线电影| 亚洲精品一区在线观看| 国产欧美视频在线观看| 亚洲男人的天堂在线观看| 亚洲成人在线网站| 国产在线国偷精品产拍免费yy| 国产福利精品一区| 在线观看亚洲精品视频| 51精品久久久久久久蜜臀| 久久综合丝袜日本网| 综合久久国产九一剧情麻豆| 亚洲一区av在线| 久久se精品一区二区| 成人黄色一级视频| 日韩一区二区三区高清免费看看| 国产欧美日本一区视频| 亚洲一区二区欧美日韩| 国产一区二区在线看| 色综合久久综合网97色综合| 91精品啪在线观看国产60岁| 欧美极品美女视频| 亚洲成av人综合在线观看| 国产精品99久久久久久久vr| 在线免费观看视频一区| 亚洲精品在线电影| 午夜久久福利影院| 国产成人在线免费观看| 欧美日韩第一区日日骚| 国产日产欧美一区| 亚洲动漫第一页| 国产69精品久久777的优势| 欧美日韩视频不卡| 自拍偷拍欧美激情| 韩国av一区二区| 在线免费不卡电影| 欧美国产精品v| 喷白浆一区二区| 91福利在线播放| 久久精品免费在线观看| 午夜精品久久久久久久99樱桃| 成人激情免费视频| 久久人人97超碰com| 午夜精品久久一牛影视| 99久久国产综合精品麻豆| 欧美va亚洲va| 午夜精品在线看| 欧美亚洲综合网| 亚洲婷婷综合色高清在线| 韩国三级在线一区| 欧美精品久久一区| 一区二区三区在线不卡| 99麻豆久久久国产精品免费 | 国产黄人亚洲片| 欧美一区二区成人| 亚洲大片一区二区三区| jlzzjlzz欧美大全| 国产欧美日韩亚州综合| 毛片基地黄久久久久久天堂| 欧美午夜不卡视频| 一区二区国产视频| 99久久精品国产毛片| 国产午夜精品美女毛片视频| 国产综合一区二区| 国产精品456| 日韩精品欧美精品| 亚洲欧美日本韩国| 久久日一线二线三线suv| 日韩av一区二区三区| 色偷偷久久一区二区三区| 国产精品高潮久久久久无| 国产精品99精品久久免费| 精品国产第一区二区三区观看体验| 日本亚洲最大的色成网站www| 欧美人狂配大交3d怪物一区| 日韩专区在线视频| 91精品视频网| 极品尤物av久久免费看| 久久综合久久99| 国产麻豆成人传媒免费观看| 久久久久亚洲综合| 国产高清在线精品| 中文一区二区在线观看| 波多野洁衣一区| 日韩久久一区二区| 欧美性受xxxx黑人xyx性爽| 亚洲国产日韩在线一区模特 | 久久网站最新地址| 国产精品亚洲专一区二区三区| 久久夜色精品国产噜噜av| 国产盗摄女厕一区二区三区| 国产欧美一区二区精品仙草咪| 99热这里都是精品| 亚洲bdsm女犯bdsm网站| 91精品国产全国免费观看| 国内国产精品久久| 国产精品美女久久福利网站| 91亚洲精品久久久蜜桃网站 | 亚洲欧洲中文日韩久久av乱码| 91亚洲资源网| 日本免费在线视频不卡一不卡二| 欧美成人三级电影在线| 国产成人福利片| 一区二区三区.www| 日韩一区二区三免费高清| 精品亚洲aⅴ乱码一区二区三区| 欧美极品美女视频| 欧美日韩激情在线| 精品伊人久久久久7777人| 国产精品乱码人人做人人爱| 欧美曰成人黄网| 久久99热这里只有精品| 最新日韩av在线| 欧美日本高清视频在线观看| 国产一二三精品| 亚洲精品久久久蜜桃| 精品999久久久| 欧亚一区二区三区| 国产伦精品一区二区三区免费迷| 亚洲男同1069视频| 久久综合色天天久久综合图片| 91视频在线观看| 久久成人精品无人区| 亚洲免费视频成人| 精品国产99国产精品| 在线观看区一区二| 福利视频网站一区二区三区| 五月综合激情网| 国产精品看片你懂得| 欧美美女bb生活片| eeuss影院一区二区三区| 日本aⅴ亚洲精品中文乱码| 国产精品情趣视频| 精品国产麻豆免费人成网站| 91黄色免费版| 不卡的av在线| 久久99国产精品久久99| 性欧美大战久久久久久久久|