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

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

?? ide-cs.c

?? 底層驅動開發
?? C
?? 第 1 頁 / 共 2 頁
字號:
/*======================================================================    A driver for PCMCIA IDE/ATA disk cards    ide-cs.c 1.3 2002/10/26 05:45:31    The contents of this file are subject to the Mozilla Public    License Version 1.1 (the "License"); you may not use this file    except in compliance with the License. You may obtain a copy of    the License at http://www.mozilla.org/MPL/    Software distributed under the License is distributed on an "AS    IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or    implied. See the License for the specific language governing    rights and limitations under the License.    The initial developer of the original code is David A. Hinds    <dahinds@users.sourceforge.net>.  Portions created by David A. Hinds    are Copyright (C) 1999 David A. Hinds.  All Rights Reserved.    Alternatively, the contents of this file may be used under the    terms of the GNU General Public License version 2 (the "GPL"), in    which case the provisions of the GPL are applicable instead of the    above.  If you wish to allow the use of your version of this file    only under the terms of the GPL and not to allow others to use    your version of this file under the MPL, indicate your decision    by deleting the provisions above and replace them with the notice    and other provisions required by the GPL.  If you do not delete    the provisions above, a recipient may use your version of this    file under either the MPL or the GPL.    ======================================================================*/#include <linux/module.h>#include <linux/kernel.h>#include <linux/init.h>#include <linux/sched.h>#include <linux/ptrace.h>#include <linux/slab.h>#include <linux/string.h>#include <linux/timer.h>#include <linux/ioport.h>#include <linux/ide.h>#include <linux/hdreg.h>#include <linux/major.h>#include <linux/delay.h>#include <asm/io.h>#include <asm/system.h>#include <pcmcia/cs_types.h>#include <pcmcia/cs.h>#include <pcmcia/cistpl.h>#include <pcmcia/ds.h>#include <pcmcia/cisreg.h>#include <pcmcia/ciscode.h>/*====================================================================*//* Module parameters */MODULE_AUTHOR("David Hinds <dahinds@users.sourceforge.net>");MODULE_DESCRIPTION("PCMCIA ATA/IDE card driver");MODULE_LICENSE("Dual MPL/GPL");#define INT_MODULE_PARM(n, v) static int n = v; module_param(n, int, 0)#ifdef PCMCIA_DEBUGINT_MODULE_PARM(pc_debug, PCMCIA_DEBUG);#define DEBUG(n, args...) if (pc_debug>(n)) printk(KERN_DEBUG args)static char *version ="ide-cs.c 1.3 2002/10/26 05:45:31 (David Hinds)";#else#define DEBUG(n, args...)#endif/*====================================================================*/static const char ide_major[] = {    IDE0_MAJOR, IDE1_MAJOR, IDE2_MAJOR, IDE3_MAJOR,    IDE4_MAJOR, IDE5_MAJOR};typedef struct ide_info_t {    dev_link_t	link;    int		ndev;    dev_node_t	node;    int		hd;} ide_info_t;static void ide_release(dev_link_t *);static int ide_event(event_t event, int priority,		     event_callback_args_t *args);static dev_info_t dev_info = "ide-cs";static dev_link_t *ide_attach(void);static void ide_detach(dev_link_t *);static dev_link_t *dev_list = NULL;/*======================================================================    ide_attach() creates an "instance" of the driver, allocating    local data structures for one device.  The device is registered    with Card Services.======================================================================*/static dev_link_t *ide_attach(void){    ide_info_t *info;    dev_link_t *link;    client_reg_t client_reg;    int ret;        DEBUG(0, "ide_attach()\n");    /* Create new ide device */    info = kmalloc(sizeof(*info), GFP_KERNEL);    if (!info) return NULL;    memset(info, 0, sizeof(*info));    link = &info->link; link->priv = info;    link->io.Attributes1 = IO_DATA_PATH_WIDTH_AUTO;    link->io.Attributes2 = IO_DATA_PATH_WIDTH_8;    link->io.IOAddrLines = 3;    link->irq.Attributes = IRQ_TYPE_EXCLUSIVE;    link->irq.IRQInfo1 = IRQ_LEVEL_ID;    link->conf.Attributes = CONF_ENABLE_IRQ;    link->conf.Vcc = 50;    link->conf.IntType = INT_MEMORY_AND_IO;        /* Register with Card Services */    link->next = dev_list;    dev_list = link;    client_reg.dev_info = &dev_info;    client_reg.Version = 0x0210;    client_reg.event_callback_args.client_data = link;    ret = pcmcia_register_client(&link->handle, &client_reg);    if (ret != CS_SUCCESS) {	cs_error(link->handle, RegisterClient, ret);	ide_detach(link);	return NULL;    }        return link;} /* ide_attach *//*======================================================================    This deletes a driver "instance".  The device is de-registered    with Card Services.  If it has been released, all local data    structures are freed.  Otherwise, the structures will be freed    when the device is released.======================================================================*/static void ide_detach(dev_link_t *link){    dev_link_t **linkp;    int ret;    DEBUG(0, "ide_detach(0x%p)\n", link);        /* Locate device structure */    for (linkp = &dev_list; *linkp; linkp = &(*linkp)->next)	if (*linkp == link) break;    if (*linkp == NULL)	return;    if (link->state & DEV_CONFIG)	ide_release(link);        if (link->handle) {	ret = pcmcia_deregister_client(link->handle);	if (ret != CS_SUCCESS)	    cs_error(link->handle, DeregisterClient, ret);    }        /* Unlink, free device structure */    *linkp = link->next;    kfree(link->priv);    } /* ide_detach */static int idecs_register(unsigned long io, unsigned long ctl, unsigned long irq){    hw_regs_t hw;    memset(&hw, 0, sizeof(hw));    ide_init_hwif_ports(&hw, io, ctl, NULL);    hw.irq = irq;    hw.chipset = ide_pci;    return ide_register_hw_with_fixup(&hw, NULL, ide_undecoded_slave);}/*======================================================================    ide_config() is scheduled to run after a CARD_INSERTION event    is received, to configure the PCMCIA socket, and to make the    ide device available to the system.======================================================================*/#define CS_CHECK(fn, ret) \do { last_fn = (fn); if ((last_ret = (ret)) != 0) goto cs_failed; } while (0)static void ide_config(dev_link_t *link){    client_handle_t handle = link->handle;    ide_info_t *info = link->priv;    tuple_t tuple;    struct {	u_short		buf[128];	cisparse_t	parse;	config_info_t	conf;	cistpl_cftable_entry_t dflt;    } *stk = NULL;    cistpl_cftable_entry_t *cfg;    int i, pass, last_ret = 0, last_fn = 0, hd, is_kme = 0;    unsigned long io_base, ctl_base;    DEBUG(0, "ide_config(0x%p)\n", link);    stk = kmalloc(sizeof(*stk), GFP_KERNEL);    if (!stk) goto err_mem;    memset(stk, 0, sizeof(*stk));    cfg = &stk->parse.cftable_entry;    tuple.TupleData = (cisdata_t *)&stk->buf;    tuple.TupleOffset = 0;    tuple.TupleDataMax = 255;    tuple.Attributes = 0;    tuple.DesiredTuple = CISTPL_CONFIG;    CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));    CS_CHECK(GetTupleData, pcmcia_get_tuple_data(handle, &tuple));    CS_CHECK(ParseTuple, pcmcia_parse_tuple(handle, &tuple, &stk->parse));    link->conf.ConfigBase = stk->parse.config.base;    link->conf.Present = stk->parse.config.rmask[0];    tuple.DesiredTuple = CISTPL_MANFID;    if (!pcmcia_get_first_tuple(handle, &tuple) &&	!pcmcia_get_tuple_data(handle, &tuple) &&	!pcmcia_parse_tuple(handle, &tuple, &stk->parse))	is_kme = ((stk->parse.manfid.manf == MANFID_KME) &&		  ((stk->parse.manfid.card == PRODID_KME_KXLC005_A) ||		   (stk->parse.manfid.card == PRODID_KME_KXLC005_B)));    /* Configure card */    link->state |= DEV_CONFIG;    /* Not sure if this is right... look up the current Vcc */    CS_CHECK(GetConfigurationInfo, pcmcia_get_configuration_info(handle, &stk->conf));    link->conf.Vcc = stk->conf.Vcc;    pass = io_base = ctl_base = 0;    tuple.DesiredTuple = CISTPL_CFTABLE_ENTRY;    tuple.Attributes = 0;    CS_CHECK(GetFirstTuple, pcmcia_get_first_tuple(handle, &tuple));    while (1) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本视频在线一区| 欧美精品一区视频| 久久国内精品自在自线400部| 国产一区在线观看视频| 欧美在线观看禁18| 国产一区二区免费视频| 一区二区三区精品视频| 精品国产乱码久久久久久久久| 本田岬高潮一区二区三区| 奇米精品一区二区三区在线观看一| 欧美国产综合一区二区| 26uuu国产在线精品一区二区| 91麻豆免费看片| 国产一区二区久久| 亚洲女同女同女同女同女同69| 精品国产乱码久久久久久图片| 在线免费观看一区| 国产一区二区三区香蕉| 亚洲欧美中日韩| 日本一区二区久久| 精品久久久久久久人人人人传媒| 91久久精品午夜一区二区| 国产一区二区按摩在线观看| 亚洲一线二线三线久久久| 国产清纯白嫩初高生在线观看91 | 日本视频免费一区| 亚洲人精品午夜| 国产日产欧美一区二区三区| 精品久久久久久久一区二区蜜臀| 欧美日韩高清一区二区三区| 色88888久久久久久影院野外| 国产.欧美.日韩| 视频在线在亚洲| 中文字幕电影一区| 久久亚区不卡日本| 欧美成人r级一区二区三区| av电影一区二区| 成人av在线资源| 99re热视频这里只精品| 成人激情午夜影院| 成人激情文学综合网| 久久精品国产亚洲a| 久久99热国产| 久久成人麻豆午夜电影| 精品影院一区二区久久久| 极品少妇一区二区| 狠狠v欧美v日韩v亚洲ⅴ| 久久99精品久久久| 国产综合久久久久久鬼色| 欧美一级片免费看| 国产精品毛片大码女人| 久久久久国产精品人| 欧美一区二区在线看| 91精品国产综合久久久久久漫画 | 日韩欧美一区二区在线视频| 欧美三级日本三级少妇99| 99久久精品99国产精品| 欧美午夜精品免费| 久久激情综合网| 成人欧美一区二区三区| 日本一区二区三级电影在线观看| 久久夜色精品国产欧美乱极品| 日韩免费一区二区三区在线播放| 在线亚洲精品福利网址导航| 欧美日本视频在线| 欧美一区二区三区人| 欧美三日本三级三级在线播放| 欧美日韩一区二区三区不卡| 欧美日韩久久不卡| 精品国产自在久精品国产| 日韩欧美国产一区二区三区| 日韩美一区二区三区| 久久精子c满五个校花| 欧美国产一区二区在线观看| 日韩免费观看高清完整版| 国产精品国产三级国产三级人妇| 国产精品第13页| 亚洲一区免费视频| 日本在线不卡视频一二三区| 国产99精品视频| 91福利视频久久久久| 欧美日韩一卡二卡三卡 | 欧美日韩精品一区二区在线播放| 欧美精品久久久久久久多人混战| 日韩精品资源二区在线| 中文字幕一区二区视频| 日韩成人dvd| 日韩av一二三| 不卡av在线免费观看| 9191成人精品久久| 欧美大白屁股肥臀xxxxxx| 日本一区二区三区高清不卡| 亚洲综合色视频| 国产精品自在在线| 欧美无砖专区一中文字| 日韩一区二区在线看片| 国产精品伦一区二区三级视频| 亚洲综合久久久| 国产精选一区二区三区| 91网站视频在线观看| 亚洲第一搞黄网站| 大胆欧美人体老妇| 在线成人av影院| 亚洲色图一区二区| 免费欧美高清视频| heyzo一本久久综合| 欧美网站一区二区| 国产精品国产三级国产专播品爱网| 午夜不卡在线视频| av一区二区三区| 精品免费视频一区二区| 成人欧美一区二区三区白人| 捆绑变态av一区二区三区| 91免费在线播放| 国产欧美一区二区精品性色超碰| 亚洲国产精品一区二区www| 国产精品88av| 欧美一级免费观看| 一区二区三区欧美在线观看| 国产一区二区视频在线播放| 91黄色免费观看| 亚洲激情校园春色| 亚洲h在线观看| 欧洲精品中文字幕| 亚洲精品国产第一综合99久久| av电影在线观看一区| 国产精品丝袜久久久久久app| 国产成人精品一区二| 国产精品天干天干在观线| 成人性生交大合| 中文乱码免费一区二区| 白白色 亚洲乱淫| 国产精品国产三级国产三级人妇| 丰满少妇久久久久久久| 国产精品久久久久久久浪潮网站 | 91精品国产黑色紧身裤美女| 久久亚洲精品国产精品紫薇| 国产一区亚洲一区| 国产性做久久久久久| 成人一二三区视频| 中文字幕视频一区| 在线免费观看一区| 日韩主播视频在线| 精品国产一区久久| 粉嫩aⅴ一区二区三区四区| 中文字幕一区二区视频| 日本二三区不卡| 天堂影院一区二区| 精品久久国产老人久久综合| 国产精品自拍三区| 亚洲欧洲成人精品av97| 精品视频在线看| 老色鬼精品视频在线观看播放| 久久综合久久99| 99re在线精品| 日韩国产精品大片| 精品国产伦一区二区三区观看体验| 国产黄色成人av| 一区二区在线免费| 日韩女优av电影在线观看| 风间由美一区二区三区在线观看| 亚洲男人的天堂在线观看| 欧美日韩一二三| 精品亚洲成av人在线观看| 1024国产精品| 欧美一区二区免费| 波多野结衣亚洲一区| 亚洲成人免费看| 久久精品人人做| 欧洲av一区二区嗯嗯嗯啊| 蜜桃av一区二区| 国产精品无人区| 欧美日本在线播放| 高清久久久久久| 天天色天天操综合| 中文字幕不卡的av| 正在播放亚洲一区| jlzzjlzz亚洲日本少妇| 日本美女一区二区三区视频| 国产精品久久久久久户外露出 | 成人一级视频在线观看| 午夜国产不卡在线观看视频| 久久精品夜色噜噜亚洲aⅴ| 在线播放91灌醉迷j高跟美女 | 一本到高清视频免费精品| 亚洲成av人片在www色猫咪| 国产日产欧美精品一区二区三区| 欧美日韩国产一级片| 成人av网站在线观看免费| 强制捆绑调教一区二区| 亚洲欧美日韩国产综合| 久久一区二区三区国产精品| 欧美剧情片在线观看| eeuss鲁片一区二区三区| 经典三级视频一区| 午夜欧美大尺度福利影院在线看| 国产精品乱码一区二三区小蝌蚪| 日韩一区二区麻豆国产| 欧美日韩一级黄| 色一情一伦一子一伦一区|