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

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

?? dma-g2.c

?? linux內(nèi)核源碼
?? C
字號(hào):
/* * arch/sh/drivers/dma/dma-g2.c * * G2 bus DMA support * * Copyright (C) 2003 - 2006  Paul Mundt * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. */#include <linux/init.h>#include <linux/kernel.h>#include <linux/module.h>#include <linux/interrupt.h>#include <asm/cacheflush.h>#include <asm/mach/sysasic.h>#include <asm/mach/dma.h>#include <asm/dma.h>struct g2_channel {	unsigned long g2_addr;		/* G2 bus address */	unsigned long root_addr;	/* Root bus (SH-4) address */	unsigned long size;		/* Size (in bytes), 32-byte aligned */	unsigned long direction;	/* Transfer direction */	unsigned long ctrl;		/* Transfer control */	unsigned long chan_enable;	/* Channel enable */	unsigned long xfer_enable;	/* Transfer enable */	unsigned long xfer_stat;	/* Transfer status */} __attribute__ ((aligned(32)));struct g2_status {	unsigned long g2_addr;	unsigned long root_addr;	unsigned long size;	unsigned long status;} __attribute__ ((aligned(16)));struct g2_dma_info {	struct g2_channel channel[G2_NR_DMA_CHANNELS];	unsigned long pad1[G2_NR_DMA_CHANNELS];	unsigned long wait_state;	unsigned long pad2[10];	unsigned long magic;	struct g2_status status[G2_NR_DMA_CHANNELS];} __attribute__ ((aligned(256)));static volatile struct g2_dma_info *g2_dma = (volatile struct g2_dma_info *)0xa05f7800;#define g2_bytes_remaining(i) \	((g2_dma->channel[i].size - \	  g2_dma->status[i].size) & 0x0fffffff)static irqreturn_t g2_dma_interrupt(int irq, void *dev_id){	int i;	for (i = 0; i < G2_NR_DMA_CHANNELS; i++) {		if (g2_dma->status[i].status & 0x20000000) {			unsigned int bytes = g2_bytes_remaining(i);			if (likely(bytes == 0)) {				struct dma_info *info = dev_id;				struct dma_channel *chan = info->channels + i;				wake_up(&chan->wait_queue);				return IRQ_HANDLED;			}		}	}	return IRQ_NONE;}static int g2_enable_dma(struct dma_channel *chan){	unsigned int chan_nr = chan->chan;	g2_dma->channel[chan_nr].chan_enable = 1;	g2_dma->channel[chan_nr].xfer_enable = 1;	return 0;}static int g2_disable_dma(struct dma_channel *chan){	unsigned int chan_nr = chan->chan;	g2_dma->channel[chan_nr].chan_enable = 0;	g2_dma->channel[chan_nr].xfer_enable = 0;	return 0;}static int g2_xfer_dma(struct dma_channel *chan){	unsigned int chan_nr = chan->chan;	if (chan->sar & 31) {		printk("g2dma: unaligned source 0x%lx\n", chan->sar);		return -EINVAL;	}	if (chan->dar & 31) {		printk("g2dma: unaligned dest 0x%lx\n", chan->dar);		return -EINVAL;	}	/* Align the count */	if (chan->count & 31)		chan->count = (chan->count + (32 - 1)) & ~(32 - 1);	/* Fixup destination */	chan->dar += 0xa0800000;	/* Fixup direction */	chan->mode = !chan->mode;	flush_icache_range((unsigned long)chan->sar, chan->count);	g2_disable_dma(chan);	g2_dma->channel[chan_nr].g2_addr   = chan->dar & 0x1fffffe0;	g2_dma->channel[chan_nr].root_addr = chan->sar & 0x1fffffe0;	g2_dma->channel[chan_nr].size	   = (chan->count & ~31) | 0x80000000;	g2_dma->channel[chan_nr].direction = chan->mode;	/*	 * bit 0 - ???	 * bit 1 - if set, generate a hardware event on transfer completion	 * bit 2 - ??? something to do with suspend?	 */	g2_dma->channel[chan_nr].ctrl	= 5; /* ?? */	g2_enable_dma(chan);	/* debug cruft */	pr_debug("count, sar, dar, mode, ctrl, chan, xfer: %ld, 0x%08lx, "		 "0x%08lx, %ld, %ld, %ld, %ld\n",		 g2_dma->channel[chan_nr].size,		 g2_dma->channel[chan_nr].root_addr,		 g2_dma->channel[chan_nr].g2_addr,		 g2_dma->channel[chan_nr].direction,		 g2_dma->channel[chan_nr].ctrl,		 g2_dma->channel[chan_nr].chan_enable,		 g2_dma->channel[chan_nr].xfer_enable);	return 0;}static int g2_get_residue(struct dma_channel *chan){	return g2_bytes_remaining(chan->chan);}static struct dma_ops g2_dma_ops = {	.xfer		= g2_xfer_dma,	.get_residue	= g2_get_residue,};static struct dma_info g2_dma_info = {	.name		= "g2_dmac",	.nr_channels	= 4,	.ops		= &g2_dma_ops,	.flags		= DMAC_CHANNELS_TEI_CAPABLE,};static int __init g2_dma_init(void){	int ret;	ret = request_irq(HW_EVENT_G2_DMA, g2_dma_interrupt, IRQF_DISABLED,			  "g2 DMA handler", &g2_dma_info);	if (unlikely(ret))		return -EINVAL;	/* Magic */	g2_dma->wait_state	= 27;	g2_dma->magic		= 0x4659404f;	ret = register_dmac(&g2_dma_info);	if (unlikely(ret != 0))		free_irq(HW_EVENT_G2_DMA, 0);	return ret;}static void __exit g2_dma_exit(void){	free_irq(HW_EVENT_G2_DMA, 0);	unregister_dmac(&g2_dma_info);}subsys_initcall(g2_dma_init);module_exit(g2_dma_exit);MODULE_AUTHOR("Paul Mundt <lethal@linux-sh.org>");MODULE_DESCRIPTION("G2 bus DMA driver");MODULE_LICENSE("GPL");

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
香蕉乱码成人久久天堂爱免费| 日日夜夜免费精品| 欧美婷婷六月丁香综合色| 免费一级片91| 亚洲美女视频一区| 欧美成人激情免费网| 一本色道综合亚洲| 国产高清在线观看免费不卡| 午夜在线成人av| 成人欧美一区二区三区视频网页| 日韩一区二区不卡| 欧美日韩精品综合在线| yourporn久久国产精品| 经典三级一区二区| 婷婷丁香激情综合| 夜夜精品视频一区二区| 亚洲视频中文字幕| 中文字幕国产一区二区| 精品久久久久久久久久久院品网| 在线不卡中文字幕播放| 一本在线高清不卡dvd| 成人av在线电影| 国产aⅴ综合色| 精品一区二区久久| 日本成人在线电影网| 亚洲午夜激情网页| 夜夜操天天操亚洲| 亚洲一区国产视频| 一区二区三区在线观看动漫| 国产精品全国免费观看高清 | 日韩欧美一二三四区| 亚洲一区影音先锋| 亚洲综合小说图片| 91麻豆蜜桃一区二区三区| 成人永久免费视频| 成人激情综合网站| 成人免费高清在线观看| 成人综合婷婷国产精品久久蜜臀| 国产精一品亚洲二区在线视频| 精品一区二区三区av| 精品一区二区三区久久久| 国产一区二区精品久久99| 国产一区二三区好的| 久久激情综合网| 国产一区二区三区| 国产成人午夜视频| 波多野结衣中文字幕一区| kk眼镜猥琐国模调教系列一区二区| 国产91富婆露脸刺激对白| 风流少妇一区二区| 99re成人在线| 欧美日韩一区在线| 欧美日韩高清不卡| 精品免费视频一区二区| 国产欧美精品一区| 亚洲视频每日更新| 午夜天堂影视香蕉久久| 美女精品自拍一二三四| 国产一区二区久久| 97精品国产露脸对白| 欧美日韩精品一区视频| 日韩美女视频在线| 国产精品视频一二| 夜夜爽夜夜爽精品视频| 六月丁香婷婷色狠狠久久| 国产精品小仙女| 色视频欧美一区二区三区| 欧美人狂配大交3d怪物一区| 精品少妇一区二区三区日产乱码| 国产欧美一区二区三区在线看蜜臀 | 免费成人结看片| 国产精品一区在线观看乱码| 不卡电影一区二区三区| 欧美日韩精品欧美日韩精品一 | 欧美精品黑人性xxxx| 日韩精品在线一区二区| 国产精品美女久久久久久| 夜夜嗨av一区二区三区四季av| 麻豆国产精品一区二区三区| 成人av资源站| 91精品国产乱码久久蜜臀| 久久久久九九视频| 亚洲一区影音先锋| 国产精品中文字幕一区二区三区| 91免费在线看| 欧美草草影院在线视频| 18欧美亚洲精品| 久久精品国产99| 99re66热这里只有精品3直播| 91麻豆精品国产91久久久资源速度 | 国产精品456露脸| 欧美日韩亚洲综合| 久久精品夜夜夜夜久久| 午夜av电影一区| 99这里都是精品| 欧美电影免费观看高清完整版在线 | 久久久综合网站| 午夜精品久久久久久不卡8050| 成人午夜激情影院| 欧美成人在线直播| 一级精品视频在线观看宜春院| 国产精品18久久久久久久网站| 欧美精品v国产精品v日韩精品 | 波多野结衣中文一区| 这里是久久伊人| 亚洲精品视频在线看| 国产91精品入口| 精品国产乱码久久久久久牛牛 | 九九**精品视频免费播放| 91精品1区2区| 1000精品久久久久久久久| 精品一区二区综合| 欧美久久久久中文字幕| 一区二区在线观看不卡| 国产99久久久国产精品潘金| 欧美一区二区三区免费大片| 亚洲影院久久精品| 一本大道久久a久久精二百| 欧美韩日一区二区三区四区| 精品一区二区在线播放| 日韩视频一区二区在线观看| 亚洲成人动漫一区| 欧美日韩在线一区二区| 一区二区三区成人| 91国偷自产一区二区三区观看 | 国产成人激情av| 2021国产精品久久精品| 久久国产剧场电影| 日韩一区二区在线看| 性做久久久久久久免费看| 精品视频资源站| 亚洲一区在线观看免费观看电影高清| 91视频精品在这里| 亚洲日本一区二区三区| 91在线视频在线| 亚洲图片欧美激情| 91麻豆精品秘密| 一区二区三区视频在线观看| 91精品91久久久中77777| 亚洲视频你懂的| 91久久精品国产91性色tv| 一区二区三区波多野结衣在线观看| 色综合久久久久久久| 亚洲国产成人av| 日韩一区二区三| 久久99久久99| 国产三级一区二区| 成人午夜av电影| 亚洲欧美一区二区三区国产精品| 一本久久综合亚洲鲁鲁五月天 | 日韩一区二区三区精品视频| 蜜乳av一区二区三区| 久久一二三国产| av电影一区二区| 亚洲激情男女视频| 欧美一区二区三区不卡| 久久99九九99精品| 国产精品第13页| 欧美三片在线视频观看| 狂野欧美性猛交blacked| 国产视频一区二区三区在线观看| 成人精品视频.| 亚洲精品成人a在线观看| 欧美日高清视频| 国内精品在线播放| 亚洲欧美日韩综合aⅴ视频| 欧美视频你懂的| 激情av综合网| 亚洲精品大片www| 欧美成人三级电影在线| 成人午夜电影网站| 天堂在线一区二区| 久久久久国产成人精品亚洲午夜 | 欧美日韩一区二区三区免费看| 欧美96一区二区免费视频| 精品福利在线导航| 色综合天天综合网国产成人综合天| 亚洲.国产.中文慕字在线| 欧美精品一区二| 91蝌蚪国产九色| 精品中文字幕一区二区| **欧美大码日韩| 日韩欧美一级二级| 日本韩国欧美一区二区三区| 九九视频精品免费| 洋洋av久久久久久久一区| 久久久久久久久岛国免费| 91搞黄在线观看| 国产成都精品91一区二区三| 香蕉成人伊视频在线观看| 亚洲国产成人一区二区三区| 这里是久久伊人| 91麻豆产精品久久久久久 | 成人在线视频一区| 视频一区二区不卡| 亚洲色图制服丝袜| 日本一区二区三区高清不卡| 在线不卡免费欧美| 97久久久精品综合88久久| 国产一区二区精品久久99|