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

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

?? smart1,2.h

?? Linux塊設備驅動源碼
?? H
字號:
/* *    Disk Array driver for Compaq SMART2 Controllers *    Copyright 1998 Compaq Computer Corporation * *    This program is free software; you can redistribute it and/or modify *    it under the terms of the GNU General Public License as published by *    the Free Software Foundation; either version 2 of the License, or *    (at your option) any later version. * *    This program is distributed in the hope that it will be useful, *    but WITHOUT ANY WARRANTY; without even the implied warranty of *    MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE, GOOD TITLE or *    NON INFRINGEMENT.  See the GNU General Public License for more details. * *    You should have received a copy of the GNU General Public License *    along with this program; if not, write to the Free Software *    Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * *    Questions/Comments/Bugfixes to iss_storagedev@hp.com * *    If you want to make changes, improve or add functionality to this *    driver, you'll probably need the Compaq Array Controller Interface *    Specificiation (Document number ECG086/1198) *//* * This file contains the controller communication implementation for * Compaq SMART-1 and SMART-2 controllers.  To the best of my knowledge, * this should support: * *  PCI: *  SMART-2/P, SMART-2DH, SMART-2SL, SMART-221, SMART-3100ES, SMART-3200 *  Integerated SMART Array Controller, SMART-4200, SMART-4250ES * *  EISA: *  SMART-2/E, SMART, IAES, IDA-2, IDA *//* * Memory mapped FIFO interface (SMART 42xx cards) */static void smart4_submit_command(ctlr_info_t *h, cmdlist_t *c){        writel(c->busaddr, h->vaddr + S42XX_REQUEST_PORT_OFFSET);}/*   *  This card is the opposite of the other cards.   *   0 turns interrupts on...  *   0x08 turns them off...  */static void smart4_intr_mask(ctlr_info_t *h, unsigned long val){	if (val) 	{ /* Turn interrupts on */		writel(0, h->vaddr + S42XX_REPLY_INTR_MASK_OFFSET);	} else /* Turn them off */	{        	writel( S42XX_INTR_OFF, 			h->vaddr + S42XX_REPLY_INTR_MASK_OFFSET);	}}/* *  For older cards FIFO Full = 0.  *  On this card 0 means there is room, anything else FIFO Full.  *  */ static unsigned long smart4_fifo_full(ctlr_info_t *h){	        return (!readl(h->vaddr + S42XX_REQUEST_PORT_OFFSET));}/* This type of controller returns -1 if the fifo is empty,  *    Not 0 like the others. *    And we need to let it know we read a value out  */ static unsigned long smart4_completed(ctlr_info_t *h){	long register_value 		= readl(h->vaddr + S42XX_REPLY_PORT_OFFSET);	/* Fifo is empty */	if( register_value == 0xffffffff)		return 0; 		/* Need to let it know we got the reply */	/* We do this by writing a 0 to the port we just read from */	writel(0, h->vaddr + S42XX_REPLY_PORT_OFFSET);	return ((unsigned long) register_value); } /* *  This hardware returns interrupt pending at a different place and  *  it does not tell us if the fifo is empty, we will have check   *  that by getting a 0 back from the comamnd_completed call.  */static unsigned long smart4_intr_pending(ctlr_info_t *h){	unsigned long register_value  = 		readl(h->vaddr + S42XX_INTR_STATUS);	if( register_value &  S42XX_INTR_PENDING) 		return  FIFO_NOT_EMPTY;		return 0 ;}static struct access_method smart4_access = {	smart4_submit_command,	smart4_intr_mask,	smart4_fifo_full,	smart4_intr_pending,	smart4_completed,};/* * Memory mapped FIFO interface (PCI SMART2 and SMART 3xxx cards) */static void smart2_submit_command(ctlr_info_t *h, cmdlist_t *c){	writel(c->busaddr, h->vaddr + COMMAND_FIFO);}static void smart2_intr_mask(ctlr_info_t *h, unsigned long val){	writel(val, h->vaddr + INTR_MASK);}static unsigned long smart2_fifo_full(ctlr_info_t *h){	return readl(h->vaddr + COMMAND_FIFO);}static unsigned long smart2_completed(ctlr_info_t *h){	return readl(h->vaddr + COMMAND_COMPLETE_FIFO);}static unsigned long smart2_intr_pending(ctlr_info_t *h){	return readl(h->vaddr + INTR_PENDING);}static struct access_method smart2_access = {	smart2_submit_command,	smart2_intr_mask,	smart2_fifo_full,	smart2_intr_pending,	smart2_completed,};/* *  IO access for SMART-2/E cards */static void smart2e_submit_command(ctlr_info_t *h, cmdlist_t *c){	outl(c->busaddr, h->io_mem_addr + COMMAND_FIFO);}static void smart2e_intr_mask(ctlr_info_t *h, unsigned long val){	outl(val, h->io_mem_addr + INTR_MASK);}static unsigned long smart2e_fifo_full(ctlr_info_t *h){	return inl(h->io_mem_addr + COMMAND_FIFO);}static unsigned long smart2e_completed(ctlr_info_t *h){	return inl(h->io_mem_addr + COMMAND_COMPLETE_FIFO);}static unsigned long smart2e_intr_pending(ctlr_info_t *h){	return inl(h->io_mem_addr + INTR_PENDING);}static struct access_method smart2e_access = {	smart2e_submit_command,	smart2e_intr_mask,	smart2e_fifo_full,	smart2e_intr_pending,	smart2e_completed,};/* *  IO access for older SMART-1 type cards */#define SMART1_SYSTEM_MASK		0xC8E#define SMART1_SYSTEM_DOORBELL		0xC8F#define SMART1_LOCAL_MASK		0xC8C#define SMART1_LOCAL_DOORBELL		0xC8D#define SMART1_INTR_MASK		0xC89#define SMART1_LISTADDR			0xC90#define SMART1_LISTLEN			0xC94#define SMART1_TAG			0xC97#define SMART1_COMPLETE_ADDR		0xC98#define SMART1_LISTSTATUS		0xC9E#define CHANNEL_BUSY			0x01#define CHANNEL_CLEAR			0x02static void smart1_submit_command(ctlr_info_t *h, cmdlist_t *c){	/*	 * This __u16 is actually a bunch of control flags on SMART	 * and below.  We want them all to be zero.	 */	c->hdr.size = 0;	outb(CHANNEL_CLEAR, h->io_mem_addr + SMART1_SYSTEM_DOORBELL);	outl(c->busaddr, h->io_mem_addr + SMART1_LISTADDR);	outw(c->size, h->io_mem_addr + SMART1_LISTLEN);	outb(CHANNEL_BUSY, h->io_mem_addr + SMART1_LOCAL_DOORBELL);}static void smart1_intr_mask(ctlr_info_t *h, unsigned long val){	if (val == 1) {		outb(0xFD, h->io_mem_addr + SMART1_SYSTEM_DOORBELL);		outb(CHANNEL_BUSY, h->io_mem_addr + SMART1_LOCAL_DOORBELL);		outb(0x01, h->io_mem_addr + SMART1_INTR_MASK);		outb(0x01, h->io_mem_addr + SMART1_SYSTEM_MASK);	} else {		outb(0, h->io_mem_addr + 0xC8E);	}}static unsigned long smart1_fifo_full(ctlr_info_t *h){	unsigned char chan;	chan = inb(h->io_mem_addr + SMART1_SYSTEM_DOORBELL) & CHANNEL_CLEAR;	return chan;}static unsigned long smart1_completed(ctlr_info_t *h){	unsigned char status;	unsigned long cmd;	if (inb(h->io_mem_addr + SMART1_SYSTEM_DOORBELL) & CHANNEL_BUSY) {		outb(CHANNEL_BUSY, h->io_mem_addr + SMART1_SYSTEM_DOORBELL);		cmd = inl(h->io_mem_addr + SMART1_COMPLETE_ADDR);		status = inb(h->io_mem_addr + SMART1_LISTSTATUS);		outb(CHANNEL_CLEAR, h->io_mem_addr + SMART1_LOCAL_DOORBELL);		/*		 * this is x86 (actually compaq x86) only, so it's ok		 */		if (cmd) ((cmdlist_t*)bus_to_virt(cmd))->req.hdr.rcode = status;	} else {		cmd = 0;	}	return cmd;}static unsigned long smart1_intr_pending(ctlr_info_t *h){	unsigned char chan;	chan = inb(h->io_mem_addr + SMART1_SYSTEM_DOORBELL) & CHANNEL_BUSY;	return chan;}static struct access_method smart1_access = {	smart1_submit_command,	smart1_intr_mask,	smart1_fifo_full,	smart1_intr_pending,	smart1_completed,};

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本不卡高清视频| 亚洲丝袜自拍清纯另类| 一本色道久久加勒比精品| 激情综合色综合久久综合| 午夜成人免费视频| 亚洲国产日韩av| 亚洲国产综合91精品麻豆| 伊人性伊人情综合网| 亚洲天堂2016| 亚洲激情一二三区| 亚洲高清中文字幕| 日韩一区精品字幕| 精品一区二区在线免费观看| 免费不卡在线视频| 激情av综合网| 成人性生交大片免费看中文 | 久久久久国产精品麻豆ai换脸| 91精品婷婷国产综合久久竹菊| 欧美日韩在线不卡| 777午夜精品视频在线播放| 51精品秘密在线观看| 欧美一区二区三区在线| 精品国产欧美一区二区| 久久精品一区二区| 亚洲精品中文字幕在线观看| 亚洲一区在线视频观看| 日本不卡高清视频| 国产91精品入口| 色成人在线视频| 91精品国产综合久久久久久久 | 免费观看一级特黄欧美大片| 日韩专区一卡二卡| 国产mv日韩mv欧美| 欧洲av一区二区嗯嗯嗯啊| 欧美日韩午夜精品| 久久影音资源网| 中文字幕亚洲视频| 偷窥少妇高潮呻吟av久久免费| 麻豆国产欧美日韩综合精品二区| 狠狠色狠狠色合久久伊人| 99精品1区2区| 精品国产欧美一区二区| 亚洲欧洲无码一区二区三区| 香蕉影视欧美成人| 国产一区二区不卡老阿姨| 在线这里只有精品| 国产无一区二区| 亚洲444eee在线观看| 国产精品一区二区在线播放| 色94色欧美sute亚洲线路一久| 欧美一区二区三区喷汁尤物| 一色屋精品亚洲香蕉网站| 蜜臀精品久久久久久蜜臀| 一本色道久久综合狠狠躁的推荐| 精品久久一区二区三区| 亚洲综合在线视频| 成人app在线| 精品欧美一区二区久久| 亚洲国产精品一区二区尤物区| 国产a视频精品免费观看| 51精品秘密在线观看| 一区二区三区免费观看| 国产mv日韩mv欧美| 精品久久久网站| 日韩国产在线观看一区| 91色在线porny| 国产嫩草影院久久久久| 激情综合色丁香一区二区| 欧美性猛交xxxxxxxx| 亚洲欧洲综合另类| 福利电影一区二区| 久久品道一品道久久精品| 午夜久久久影院| 欧美日韩国产成人在线91| 伊人一区二区三区| 91国偷自产一区二区三区观看| 日本一区二区三区电影| 国产高清在线精品| 久久精品亚洲精品国产欧美 | 欧美丰满嫩嫩电影| 亚洲国产高清不卡| 韩国v欧美v日本v亚洲v| 精品国产乱码久久久久久久 | 久久99久久99小草精品免视看| 欧美肥妇毛茸茸| 亚洲国产精品天堂| 欧美丰满少妇xxxxx高潮对白| 亚洲国产精品久久艾草纯爱| 欧美三区免费完整视频在线观看| 亚洲男帅同性gay1069| 91在线视频观看| 亚洲综合色婷婷| 欧美日韩免费观看一区二区三区| 性欧美疯狂xxxxbbbb| 欧美精品欧美精品系列| 麻豆精品新av中文字幕| 26uuu色噜噜精品一区| 福利一区福利二区| 亚洲蜜臀av乱码久久精品蜜桃| 欧美天堂亚洲电影院在线播放| 亚洲五码中文字幕| 日韩免费观看高清完整版在线观看| 麻豆精品一二三| 国产精品嫩草影院com| 色综合激情五月| 欧美aⅴ一区二区三区视频| 精品国产一区二区三区忘忧草| 成人黄页毛片网站| 亚洲午夜免费福利视频| 欧美一区二区美女| 成人av在线资源网| 婷婷中文字幕一区三区| 国产亲近乱来精品视频 | 亚洲色图都市小说| 91精品国产综合久久香蕉的特点 | 精品粉嫩超白一线天av| 成人精品一区二区三区四区| 亚洲一区二区三区国产| 精品久久久影院| 欧美亚男人的天堂| 成人高清免费观看| 亚洲成人第一页| 中文乱码免费一区二区| 欧美日本一道本| 成人av在线影院| 狠狠狠色丁香婷婷综合久久五月| 国产精品久久久久久久蜜臀| 欧美精品久久久久久久久老牛影院| 国产经典欧美精品| 日韩av一区二区三区四区| 中文字幕成人在线观看| 日韩一区二区三区av| 色网综合在线观看| 激情深爱一区二区| 五月激情丁香一区二区三区| 亚洲日本免费电影| 国产欧美精品一区二区色综合朱莉| 777色狠狠一区二区三区| 91色|porny| 国产99久久久国产精品潘金| 麻豆久久久久久| 天堂蜜桃一区二区三区| 亚洲美女区一区| 国产精品网站在线| 2024国产精品| 欧美tk丨vk视频| 91精品国产综合久久精品性色| 色哦色哦哦色天天综合| 成人美女在线视频| 国产精品亚洲第一| 国产美女一区二区| 国精品**一区二区三区在线蜜桃| 三级欧美在线一区| 天堂久久一区二区三区| 亚洲第一av色| 亚洲成年人影院| 亚洲成人av一区二区三区| 一区二区三区在线看| 亚洲色图欧洲色图婷婷| 中文字幕一区二区三区四区| 国产亚洲综合性久久久影院| 久久在线观看免费| 久久女同性恋中文字幕| 久久久久久久综合狠狠综合| 精品不卡在线视频| 久久久高清一区二区三区| 久久久久综合网| 欧美国产日韩亚洲一区| 一区二区在线免费观看| 欧美激情自拍偷拍| 亚洲欧美中日韩| 亚洲女与黑人做爰| 亚洲综合无码一区二区| 丝袜脚交一区二区| 韩国在线一区二区| 丁香五精品蜜臀久久久久99网站| a级精品国产片在线观看| 91亚洲男人天堂| 欧美久久一二区| 欧美videos大乳护士334| 国产视频一区二区在线| 自拍偷拍欧美精品| 日日欢夜夜爽一区| 国产毛片精品一区| 色婷婷综合视频在线观看| 欧美色窝79yyyycom| 日韩精品一区二| 国产精品久久久久久妇女6080| 亚洲一区二区三区影院| 久久国产精品99精品国产| gogo大胆日本视频一区| 在线播放91灌醉迷j高跟美女| 欧美成人精品高清在线播放| 国产精品久久午夜| 丝袜美腿亚洲综合| 成人激情综合网站| 欧美一级二级三级乱码| 国产精品美女久久久久久久久久久| 亚洲在线成人精品| 国产a视频精品免费观看|