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

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

?? dma-isa.c

?? MIZI Research, Inc.發布的嵌入式Linux內核源碼
?? C
字號:
/* *  linux/arch/arm/kernel/dma-isa.c * *  Copyright (C) 1999-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. * *  ISA DMA primitives *  Taken from various sources, including: *   linux/include/asm/dma.h: Defines for using and allocating dma channels. *     Written by Hennus Bergman, 1992. *     High DMA channel support & info by Hannu Savolainen and John Boyd, *     Nov. 1992. *   arch/arm/kernel/dma-ebsa285.c *   Copyright (C) 1998 Phil Blundell */#include <linux/sched.h>#include <linux/ioport.h>#include <linux/init.h>#include <linux/pci.h>#include <asm/dma.h>#include <asm/io.h>#include <asm/mach/dma.h>#define ISA_DMA_MODE_READ	0x44#define ISA_DMA_MODE_WRITE	0x48#define ISA_DMA_MODE_CASCADE	0xc0#define ISA_DMA_AUTOINIT	0x10#define ISA_DMA_MASK		0#define ISA_DMA_MODE		1#define ISA_DMA_CLRFF		2#define ISA_DMA_PGHI		3#define ISA_DMA_PGLO		4#define ISA_DMA_ADDR		5#define ISA_DMA_COUNT		6static unsigned int isa_dma_port[8][7] = {	/* MASK   MODE   CLRFF  PAGE_HI PAGE_LO ADDR COUNT */	{  0x0a,  0x0b,  0x0c,  0x487,  0x087,  0x00, 0x01 },	{  0x0a,  0x0b,  0x0c,  0x483,  0x083,  0x02, 0x03 },	{  0x0a,  0x0b,  0x0c,  0x481,  0x081,  0x04, 0x05 },	{  0x0a,  0x0b,  0x0c,  0x482,  0x082,  0x06, 0x07 },	{  0xd4,  0xd6,  0xd8,  0x000,  0x000,  0xc0, 0xc2 },	{  0xd4,  0xd6,  0xd8,  0x48b,  0x08b,  0xc4, 0xc6 },	{  0xd4,  0xd6,  0xd8,  0x489,  0x089,  0xc8, 0xca },	{  0xd4,  0xd6,  0xd8,  0x48a,  0x08a,  0xcc, 0xce }};static int isa_get_dma_residue(dmach_t channel, dma_t *dma){	unsigned int io_port = isa_dma_port[channel][ISA_DMA_COUNT];	int count;	count = 1 + inb(io_port);	count |= inb(io_port) << 8;	return channel < 4 ? count : (count << 1);}static void isa_enable_dma(dmach_t channel, dma_t *dma){	if (dma->invalid) {		unsigned long address, length;		unsigned int mode, direction;		mode = channel & 3;		switch (dma->dma_mode & DMA_MODE_MASK) {		case DMA_MODE_READ:			mode |= ISA_DMA_MODE_READ;			direction = PCI_DMA_FROMDEVICE;			break;		case DMA_MODE_WRITE:			mode |= ISA_DMA_MODE_WRITE;			direction = PCI_DMA_TODEVICE;			break;		case DMA_MODE_CASCADE:			mode |= ISA_DMA_MODE_CASCADE;			direction = PCI_DMA_BIDIRECTIONAL;			break;		default:			break;		}		if (!dma->using_sg) {			/*			 * Cope with ISA-style drivers which expect cache			 * coherence.			 */			dma->buf.dma_address = pci_map_single(NULL,				dma->buf.address, dma->buf.length,				direction);		}		address = dma->buf.dma_address;		length  = dma->buf.length - 1;		outb(address >> 16, isa_dma_port[channel][ISA_DMA_PGLO]);		outb(address >> 24, isa_dma_port[channel][ISA_DMA_PGHI]);		if (channel >= 4) {			address >>= 1;			length >>= 1;		}		outb(0, isa_dma_port[channel][ISA_DMA_CLRFF]);		outb(address, isa_dma_port[channel][ISA_DMA_ADDR]);		outb(address >> 8, isa_dma_port[channel][ISA_DMA_ADDR]);		outb(length, isa_dma_port[channel][ISA_DMA_COUNT]);		outb(length >> 8, isa_dma_port[channel][ISA_DMA_COUNT]);		if (dma->dma_mode & DMA_AUTOINIT)			mode |= ISA_DMA_AUTOINIT;		outb(mode, isa_dma_port[channel][ISA_DMA_MODE]);		dma->invalid = 0;	}	outb(channel & 3, isa_dma_port[channel][ISA_DMA_MASK]);}static void isa_disable_dma(dmach_t channel, dma_t *dma){	outb(channel | 4, isa_dma_port[channel][ISA_DMA_MASK]);}static struct dma_ops isa_dma_ops = {	type:		"ISA",	enable:		isa_enable_dma,	disable:	isa_disable_dma,	residue:	isa_get_dma_residue,};static struct resource dma_resources[] = {	{ "dma1",		0x0000, 0x000f },	{ "dma low page", 	0x0080, 0x008f },	{ "dma2",		0x00c0, 0x00df },	{ "dma high page",	0x0480, 0x048f }};void __init isa_init_dma(dma_t *dma){	/*	 * Try to autodetect presence of an ISA DMA controller.	 * We do some minimal initialisation, and check that	 * channel 0's DMA address registers are writeable.	 */	outb(0xff, 0x0d);	outb(0xff, 0xda);	/*	 * Write high and low address, and then read them back	 * in the same order.	 */	outb(0x55, 0x00);	outb(0xaa, 0x00);	if (inb(0) == 0x55 && inb(0) == 0xaa) {		int channel, i;		for (channel = 0; channel < 8; channel++) {			dma[channel].d_ops = &isa_dma_ops;			isa_disable_dma(channel, NULL);		}		outb(0x40, 0x0b);		outb(0x41, 0x0b);		outb(0x42, 0x0b);		outb(0x43, 0x0b);		outb(0xc0, 0xd6);		outb(0x41, 0xd6);		outb(0x42, 0xd6);		outb(0x43, 0xd6);		outb(0, 0xd4);		outb(0x10, 0x08);		outb(0x10, 0xd0);		/*		 * Is this correct?  According to my documentation, it		 * doesn't appear to be.  It should be:		 *  outb(0x3f, 0x40b); outb(0x3f, 0x4d6);		 */		outb(0x30, 0x40b);		outb(0x31, 0x40b);		outb(0x32, 0x40b);		outb(0x33, 0x40b);		outb(0x31, 0x4d6);		outb(0x32, 0x4d6);		outb(0x33, 0x4d6);		request_dma(DMA_ISA_CASCADE, "cascade");		for (i = 0; i < sizeof(dma_resources) / sizeof(dma_resources[0]); i++)			request_resource(&ioport_resource, dma_resources + i);	}}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
美女视频网站黄色亚洲| 亚洲精选视频在线| 欧美三区免费完整视频在线观看| 国产精品一区二区久久精品爱涩| 久久99久久精品| 激情六月婷婷久久| 国产精品自在欧美一区| 国产伦精品一区二区三区免费迷 | 国产精品一卡二卡在线观看| 麻豆精品视频在线观看| 精品综合久久久久久8888| 蜜桃精品在线观看| 国产不卡视频在线播放| gogo大胆日本视频一区| 日本道色综合久久| 日韩丝袜美女视频| 久久久久久久一区| 国产精品久久久久aaaa樱花| 亚洲精品五月天| 污片在线观看一区二区| 国产激情91久久精品导航| www.成人网.com| 欧美猛男男办公室激情| 欧美mv和日韩mv国产网站| 日本一区二区三区免费乱视频| 日韩理论在线观看| 日韩激情在线观看| 粉嫩一区二区三区性色av| 91在线观看免费视频| 717成人午夜免费福利电影| 精品福利一区二区三区免费视频| 国产精品女人毛片| 日本成人中文字幕在线视频| 国产成人精品aa毛片| 欧美日韩不卡在线| 国产精品久久久久久久久搜平片| 丝袜亚洲另类丝袜在线| 国产专区综合网| 欧美日本一区二区在线观看| 久久免费视频一区| 亚洲mv在线观看| 成人免费毛片a| 欧美一卡二卡在线| 亚洲精品国久久99热| 国产一区二区伦理| 欧美精品三级在线观看| 亚洲成人激情社区| 国产精品原创巨作av| 欧美日韩和欧美的一区二区| 欧美韩国日本综合| 日韩黄色免费电影| 日本高清不卡视频| 国产精品久久久久久福利一牛影视| 日韩中文字幕麻豆| 在线观看免费亚洲| 中文字幕中文乱码欧美一区二区| 久久精品国产亚洲高清剧情介绍| 在线亚洲欧美专区二区| 中文字幕免费不卡| 国产剧情av麻豆香蕉精品| 91精品国产色综合久久不卡电影| 一区二区在线观看视频在线观看| 成人免费毛片高清视频| 国产女同互慰高潮91漫画| 狠狠色狠狠色合久久伊人| 欧美一区二区视频在线观看2020 | 制服丝袜成人动漫| 夜夜亚洲天天久久| 日本黄色一区二区| 亚洲美女免费视频| 色天天综合久久久久综合片| **性色生活片久久毛片| 91麻豆国产香蕉久久精品| 国产精品乱码一区二区三区软件 | 国产成人免费高清| 2020日本不卡一区二区视频| 色婷婷久久一区二区三区麻豆| 国产午夜亚洲精品理论片色戒| 久久99精品国产.久久久久久| 欧美一级高清片| 九一九一国产精品| 26uuuu精品一区二区| 国产伦精一区二区三区| 欧美高清在线精品一区| 99视频一区二区| 亚洲精品第1页| 欧美精品tushy高清| 久久国产生活片100| 国产婷婷色一区二区三区 | 91麻豆精品国产91久久久更新时间| 亚洲综合一区二区三区| 欧美男男青年gay1069videost| 欧美aa在线视频| 国产亚洲视频系列| 91美女精品福利| 亚洲成人动漫在线观看| 精品国产成人系列| 成人国产在线观看| 亚洲v中文字幕| 精品国产免费久久| 北条麻妃一区二区三区| 亚洲妇女屁股眼交7| 337p日本欧洲亚洲大胆精品 | 久久www免费人成看片高清| 久久综合久色欧美综合狠狠| 成人免费看视频| 午夜视频久久久久久| 国产性色一区二区| 欧美日韩一区在线观看| 国产一区二三区好的| 亚洲欧洲综合另类在线| 精品免费国产一区二区三区四区| www.日韩在线| 男女男精品网站| 精品一区二区三区免费观看| 亚洲欧美偷拍三级| 精品欧美乱码久久久久久1区2区| 99久久久久久99| 久久国内精品自在自线400部| 亚洲三级久久久| 久久综合狠狠综合久久综合88| 色婷婷av一区二区三区软件| 国产一区激情在线| 婷婷激情综合网| 亚洲男女毛片无遮挡| 国产亚洲欧美色| 91麻豆精品国产自产在线| 99久久精品费精品国产一区二区| 久久99久久久久| 亚洲一二三四在线| 国产精品久久国产精麻豆99网站| 日韩一区二区中文字幕| 欧美私人免费视频| 波多野结衣中文一区| 国产另类ts人妖一区二区| 视频一区视频二区中文| 亚洲综合无码一区二区| 国产精品久久久久久久久久免费看| 日韩三级中文字幕| 91精品国产高清一区二区三区| 色先锋资源久久综合| av动漫一区二区| av在线播放一区二区三区| 国产在线不卡一卡二卡三卡四卡| 日本亚洲天堂网| 偷窥国产亚洲免费视频| 午夜视频在线观看一区| 亚洲成人免费电影| 亚洲成人av一区二区三区| 夜色激情一区二区| 中文字幕制服丝袜一区二区三区| 国产精品萝li| 国产精品理论在线观看| 中文字幕一区二区三区四区| 午夜激情综合网| 天天操天天色综合| 免费看欧美女人艹b| 麻豆精品一区二区三区| 极品美女销魂一区二区三区免费| 久久99热这里只有精品| 国产自产v一区二区三区c| 国产成人欧美日韩在线电影| eeuss鲁片一区二区三区在线观看 eeuss鲁片一区二区三区在线看 | 国产日韩视频一区二区三区| 久久婷婷国产综合精品青草| 中文字幕精品一区二区精品绿巨人| 久久久精品欧美丰满| 国产精品久久免费看| 亚洲欧美区自拍先锋| 亚洲成人在线网站| 久久精品国产一区二区三| 国产成人在线色| 91啦中文在线观看| 欧美日韩精品一区二区天天拍小说| 欧美日韩你懂的| 欧美精品一区二区三| 国产精品久久久久久户外露出| 亚洲国产综合色| 黑人精品欧美一区二区蜜桃| 国产69精品久久久久毛片| 色婷婷av一区| 久久综合九色欧美综合狠狠| 亚洲欧美另类久久久精品| 日韩av网站在线观看| 国产成人a级片| 欧美天堂一区二区三区| 久久夜色精品国产噜噜av| 亚洲美女电影在线| 激情六月婷婷久久| 91福利国产成人精品照片| 精品国产乱码久久| 一区二区三区在线免费观看| 极品尤物av久久免费看| 色吊一区二区三区| 精品国产成人在线影院| 亚洲午夜成aⅴ人片| 国产成人亚洲精品狼色在线| 欧美另类videos死尸| 欧美高清一级片在线观看| 美女视频网站久久|