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

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

?? dma-isa.c

?? 該文件是rt_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一区二区三区免费野_久草精品视频
亚洲精品国产成人久久av盗摄| 色婷婷久久久久swag精品| 日本韩国视频一区二区| 日韩免费性生活视频播放| 亚洲天天做日日做天天谢日日欢| 丝袜美腿亚洲一区| 91一区二区在线| 久久蜜桃一区二区| 秋霞午夜鲁丝一区二区老狼| 色婷婷精品大视频在线蜜桃视频| 久久精品网站免费观看| 日韩极品在线观看| 色欧美88888久久久久久影院| 精品国产sm最大网站免费看| 午夜精品久久久久久久久久久| av在线这里只有精品| 精品国产自在久精品国产| 亚洲gay无套男同| 91免费国产在线观看| 亚洲国产精品成人综合 | 精品处破学生在线二十三| 亚洲国产精品一区二区www| av在线不卡网| 欧美国产日韩a欧美在线观看| 久色婷婷小香蕉久久| 欧美精品日韩精品| 一区二区三区精品视频| av成人免费在线| 中文字幕的久久| 国产伦理精品不卡| 久久影院午夜论| 国内久久精品视频| 2024国产精品| 国模套图日韩精品一区二区| 欧美电视剧在线观看完整版| 男女激情视频一区| 欧美一区二区三区人| 日韩中文字幕91| 欧美一区二区三区在线电影| 日日摸夜夜添夜夜添精品视频| 欧美性生交片4| 一区二区三区免费观看| 在线观看一区不卡| 一区二区三区不卡在线观看| 91成人网在线| 亚洲成人综合网站| 欧美日韩国产片| 日韩激情一二三区| 日韩美女在线视频| 国内成人精品2018免费看| 久久免费精品国产久精品久久久久| 韩国av一区二区三区四区| 国产午夜亚洲精品午夜鲁丝片 | 亚洲国产人成综合网站| 国产精品视频看| 夜夜精品视频一区二区| 在线免费观看日韩欧美| 亚洲国产一区二区在线播放| 欧美日韩夫妻久久| 免费不卡在线观看| 精品国产一二三| 国产盗摄女厕一区二区三区 | 欧美日韩视频在线观看一区二区三区 | 在线亚洲高清视频| 亚洲成av人片| 欧美一级片在线看| 国产综合成人久久大片91| 国产亚洲成av人在线观看导航| 成人免费视频网站在线观看| 亚洲激情五月婷婷| 欧美精品在线一区二区三区| 久久国产尿小便嘘嘘| 国产欧美精品一区二区色综合朱莉| 成人av在线网站| 一区二区三区四区五区视频在线观看| 欧美三级电影在线看| 青青草成人在线观看| 久久午夜色播影院免费高清| 波多野结衣中文一区| 亚洲国产成人精品视频| 日韩欧美在线一区二区三区| 国产精品一区二区三区四区| 中文字幕日本乱码精品影院| 91国产福利在线| 男女性色大片免费观看一区二区 | 91精品国产综合久久精品性色| 久久99精品久久久久久国产越南 | 精品国产制服丝袜高跟| 99免费精品在线观看| 亚洲成人一区二区| 久久免费午夜影院| 色婷婷综合五月| 美腿丝袜亚洲色图| 中文字幕一区av| 91精品国产乱| av一二三不卡影片| 日韩经典一区二区| 国产精品第一页第二页第三页| 欧美日本在线看| 成人一区二区视频| 日韩主播视频在线| 国产精品久久毛片av大全日韩| 欧美日本在线播放| gogogo免费视频观看亚洲一| 日韩1区2区3区| 国产精品久久久久久久第一福利| 777精品伊人久久久久大香线蕉| 国产精品456| 日韩精品一卡二卡三卡四卡无卡| 国产欧美日韩在线| 欧美一级欧美一级在线播放| 99久久精品免费观看| 日产精品久久久久久久性色| 亚洲欧洲精品一区二区三区| 精品国一区二区三区| 欧美三级欧美一级| 波多野结衣中文字幕一区| 九九精品一区二区| 亚洲第一福利一区| 国产精品蜜臀在线观看| 日韩你懂的电影在线观看| 在线视频国产一区| 9i在线看片成人免费| 黑人巨大精品欧美一区| 亚洲高清久久久| 国产精品国产自产拍高清av王其| 精品国产一区二区精华| 欧美日本一区二区三区四区| 91视频在线看| 国产69精品久久久久毛片| 精品一区二区精品| 日韩综合在线视频| 亚洲综合区在线| 日韩伦理电影网| 中文子幕无线码一区tr| 欧美精品一区视频| 日韩欧美视频一区| 欧美肥妇毛茸茸| 欧美午夜在线观看| 色综合婷婷久久| 欧美成人免费网站| 欧美猛男gaygay网站| 欧洲精品一区二区| 色香色香欲天天天影视综合网| 成人在线视频首页| 国产盗摄女厕一区二区三区| 韩国三级在线一区| 精品亚洲成av人在线观看| 日本在线不卡视频| 日韩制服丝袜av| 偷窥国产亚洲免费视频| 亚洲一区二区三区精品在线| 一区二区久久久| 亚洲一区在线电影| 亚洲国产另类av| 天天综合色天天综合| 亚洲成av人片| 日韩精品91亚洲二区在线观看| 污片在线观看一区二区| 香蕉成人啪国产精品视频综合网| 亚洲资源中文字幕| 一区二区三区国产精品| 亚洲黄色免费电影| 亚洲国产精品久久艾草纯爱| 亚洲大片精品永久免费| 日韩黄色免费网站| 亚洲第一福利一区| 日本网站在线观看一区二区三区 | 亚洲一区二区偷拍精品| 夜夜精品视频一区二区| 亚洲午夜电影在线观看| 香蕉成人伊视频在线观看| 日本欧美加勒比视频| 免费xxxx性欧美18vr| 国产一区二区电影| 成人ar影院免费观看视频| 国产成人av电影在线| 99国产麻豆精品| 欧美在线|欧美| 91精品久久久久久蜜臀| 欧美tk—视频vk| 国产欧美日韩卡一| 中文字幕在线不卡一区| 艳妇臀荡乳欲伦亚洲一区| 婷婷成人激情在线网| 久久国产精品72免费观看| 国产精品亚洲成人| 91在线国内视频| 欧美日产在线观看| 欧美精品一区二区三区久久久| 久久亚洲精品国产精品紫薇| 中文在线免费一区三区高中清不卡| 亚洲天堂久久久久久久| 亚洲成人免费视频| 久久成人羞羞网站| 不卡的电影网站| 欧美日韩激情一区二区三区| 精品国产一区二区三区久久影院 | 精品福利在线导航| 国产精品区一区二区三区|