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

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

?? dio.h

?? linux 內核源代碼
?? H
字號:
/* header file for DIO boards for the HP300 architecture. * Maybe this should handle DIO-II later? * The general structure of this is vaguely based on how * the Amiga port handles Zorro boards. * Copyright (C) Peter Maydell 05/1998 <pmaydell@chiark.greenend.org.uk> * Converted to driver model Jochen Friedrich <jochen@scram.de> * * The board IDs are from the NetBSD kernel, which for once provided * helpful comments... * * This goes with drivers/dio/dio.c */#ifndef _LINUX_DIO_H#define _LINUX_DIO_H/* The DIO boards in a system are distinguished by 'select codes' which  * range from 0-63 (DIO) and 132-255 (DIO-II).  * The DIO board with select code sc is located at physical address  *     0x600000 + sc * 0x10000 * So DIO cards cover [0x600000-0x800000); the areas [0x200000-0x400000) and * [0x800000-0x1000000) are for additional space required by things * like framebuffers. [0x400000-0x600000) is for miscellaneous internal I/O. * On Linux, this is currently all mapped into the virtual address space * at 0xf0000000 on bootup. * DIO-II boards are at 0x1000000 + (sc - 132) * 0x400000 * which is address range [0x1000000-0x20000000) -- too big to map completely, * so currently we just don't handle DIO-II boards.  It wouldn't be hard to  * do with ioremap() though. */#include <linux/device.h>#ifdef __KERNEL__#include <asm/hp300hw.h>typedef __u16 dio_id;    /*     *  DIO devices     */struct dio_dev {	struct dio_bus *bus;	dio_id id;	int scode;	struct dio_driver *driver;	/* which driver has allocated this device */	struct device dev;		/* Generic device interface */	u8 ipl;	char name[64];	struct resource resource;};#define to_dio_dev(n) container_of(n, struct dio_dev, dev)    /*     *  DIO bus     */struct dio_bus {	struct list_head devices;           /* list of devices on this bus */	unsigned int num_resources;         /* number of resources */	struct resource resources[2];       /* address space routed to this bus */	struct device dev;	char name[10];};extern struct dio_bus dio_bus;      /* Single DIO bus */extern struct bus_type dio_bus_type;    /*     *  DIO device IDs     */struct dio_device_id {	dio_id id;                    /* Device ID or DIO_WILDCARD */	unsigned long driver_data;    /* Data private to the driver */};    /*     *  DIO device drivers     */struct dio_driver {	struct list_head node;	char *name;	const struct dio_device_id *id_table;     /* NULL if wants all devices */	int (*probe)(struct dio_dev *z, const struct dio_device_id *id);/* New device inserted */	void (*remove)(struct dio_dev *z);        /* Device removed (NULL if not a hot-plug capable driver) */	struct device_driver driver;};#define to_dio_driver(drv)    container_of(drv, struct dio_driver, driver)/* DIO/DIO-II boards all have the following 8bit registers. * These are offsets from the base of the device. */#define DIO_IDOFF     0x01             /* primary device ID */#define DIO_IPLOFF    0x03             /* interrupt priority level */#define DIO_SECIDOFF  0x15             /* secondary device ID */#define DIOII_SIZEOFF 0x101            /* device size, DIO-II only */#define DIO_VIRADDRBASE 0xf0000000UL   /* vir addr where IOspace is mapped */#define DIO_BASE                0x600000        /* start of DIO space */#define DIO_END                 0x1000000       /* end of DIO space */#define DIO_DEVSIZE             0x10000         /* size of a DIO device */#define DIOII_BASE              0x01000000      /* start of DIO-II space */#define DIOII_END               0x20000000      /* end of DIO-II space */#define DIOII_DEVSIZE           0x00400000      /* size of a DIO-II device *//* Highest valid select code. If we add DIO-II support this should become * 256 for everything except HP320, which only has DIO. */#define DIO_SCMAX (hp300_model == HP_320 ? 32 : 256)#define DIOII_SCBASE 132 /* lowest DIO-II select code */#define DIO_SCINHOLE(scode) (((scode) >= 32) && ((scode) < DIOII_SCBASE))#define DIO_ISDIOII(scode) ((scode) >= 132 && (scode) < 256)/* macros to read device IDs, given base address */#define DIO_ID(baseaddr) in_8((baseaddr) + DIO_IDOFF)#define DIO_SECID(baseaddr) in_8((baseaddr) + DIO_SECIDOFF)/* extract the interrupt level */#define DIO_IPL(baseaddr) (((in_8((baseaddr) + DIO_IPLOFF) >> 4) & 0x03) + 3)/* find the size of a DIO-II board's address space. * DIO boards are all fixed length. */#define DIOII_SIZE(baseaddr) ((in_8((baseaddr) + DIOII_SIZEOFF) + 1) * 0x100000)/* general purpose macro for both DIO and DIO-II */#define DIO_SIZE(scode, base) (DIO_ISDIOII((scode)) ? DIOII_SIZE((base)) : DIO_DEVSIZE)/* The hardware has primary and secondary IDs; we encode these in a single * int as PRIMARY ID & (SECONDARY ID << 8). * In practice this is only important for framebuffers, * and everybody else just sets ID fields equal to the DIO_ID_FOO value. */#define DIO_ENCODE_ID(pr,sec) ((((int)sec & 0xff) << 8) | ((int)pr & 0xff))/* macro to determine whether a given primary ID requires a secondary ID byte */#define DIO_NEEDSSECID(id) ((id) == DIO_ID_FBUFFER)#define DIO_WILDCARD 0xff/* Now a whole slew of macros giving device IDs and descriptive strings: */#define DIO_ID_DCA0     0x02 /* 98644A serial */#define DIO_DESC_DCA0 "98644A DCA0 serial"#define DIO_ID_DCA0REM  0x82 /* 98644A serial */#define DIO_DESC_DCA0REM "98644A DCA0REM serial"#define DIO_ID_DCA1     0x42 /* 98644A serial */#define DIO_DESC_DCA1 "98644A DCA1 serial"#define DIO_ID_DCA1REM  0xc2 /* 98644A serial */#define DIO_DESC_DCA1REM "98644A DCA1REM serial"#define DIO_ID_DCM      0x05 /* 98642A serial MUX */#define DIO_DESC_DCM "98642A DCM serial MUX"#define DIO_ID_DCMREM   0x85 /* 98642A serial MUX */#define DIO_DESC_DCMREM "98642A DCMREM serial MUX"#define DIO_ID_LAN      0x15 /* 98643A LAN */#define DIO_DESC_LAN "98643A LANCE ethernet"#define DIO_ID_FHPIB    0x08 /* 98625A/98625B fast HP-IB */#define DIO_DESC_FHPIB "98625A/98625B fast HPIB"#define DIO_ID_NHPIB    0x01 /* 98624A HP-IB (normal ie slow) */#define DIO_DESC_NHPIB "98624A HPIB"#define DIO_ID_SCSI0    0x07 /* 98265A SCSI */#define DIO_DESC_SCSI0 "98265A SCSI0"#define DIO_ID_SCSI1    0x27 /* ditto */#define DIO_DESC_SCSI1 "98265A SCSI1"#define DIO_ID_SCSI2    0x47 /* ditto */#define DIO_DESC_SCSI2 "98265A SCSI2"#define DIO_ID_SCSI3    0x67 /* ditto */#define DIO_DESC_SCSI3 "98265A SCSI3"#define DIO_ID_FBUFFER  0x39 /* framebuffer: flavour is distinguished by secondary ID */#define DIO_DESC_FBUFFER "bitmapped display"/* the NetBSD kernel source is a bit unsure as to what these next IDs actually do :-> */#define DIO_ID_MISC0    0x03 /* 98622A */#define DIO_DESC_MISC0 "98622A"#define DIO_ID_MISC1    0x04 /* 98623A */#define DIO_DESC_MISC1 "98623A"#define DIO_ID_PARALLEL 0x06 /* internal parallel */#define DIO_DESC_PARALLEL "internal parallel"#define DIO_ID_MISC2    0x09 /* 98287A keyboard */#define DIO_DESC_MISC2 "98287A keyboard"#define DIO_ID_MISC3    0x0a /* HP98635A FP accelerator */#define DIO_DESC_MISC3 "HP98635A FP accelerator"#define DIO_ID_MISC4    0x0b /* timer */#define DIO_DESC_MISC4 "timer"#define DIO_ID_MISC5    0x12 /* 98640A */#define DIO_DESC_MISC5 "98640A"#define DIO_ID_MISC6    0x16 /* 98659A */#define DIO_DESC_MISC6 "98659A"#define DIO_ID_MISC7    0x19 /* 237 display */#define DIO_DESC_MISC7 "237 display"#define DIO_ID_MISC8    0x1a /* quad-wide card */#define DIO_DESC_MISC8 "quad-wide card"#define DIO_ID_MISC9    0x1b /* 98253A */#define DIO_DESC_MISC9 "98253A"#define DIO_ID_MISC10   0x1c /* 98627A */#define DIO_DESC_MISC10 "98253A"#define DIO_ID_MISC11   0x1d /* 98633A */#define DIO_DESC_MISC11 "98633A"#define DIO_ID_MISC12   0x1e /* 98259A */#define DIO_DESC_MISC12 "98259A"#define DIO_ID_MISC13   0x1f /* 8741 */#define DIO_DESC_MISC13 "8741"#define DIO_ID_VME      0x31 /* 98577A VME adapter */#define DIO_DESC_VME "98577A VME adapter"#define DIO_ID_DCL      0x34 /* 98628A serial */#define DIO_DESC_DCL "98628A DCL serial"#define DIO_ID_DCLREM   0xb4 /* 98628A serial */#define DIO_DESC_DCLREM "98628A DCLREM serial"/* These are the secondary IDs for the framebuffers */#define DIO_ID2_GATORBOX    0x01 /* 98700/98710 "gatorbox" */#define DIO_DESC2_GATORBOX       "98700/98710 \"gatorbox\" display"#define DIO_ID2_TOPCAT      0x02 /* 98544/98545/98547 "topcat" */#define DIO_DESC2_TOPCAT         "98544/98545/98547 \"topcat\" display"#define DIO_ID2_RENAISSANCE 0x04 /* 98720/98721 "renaissance" */#define DIO_DESC2_RENAISSANCE    "98720/98721 \"renaissance\" display"#define DIO_ID2_LRCATSEYE   0x05 /* lowres "catseye" */#define DIO_DESC2_LRCATSEYE      "low-res catseye display"#define DIO_ID2_HRCCATSEYE  0x06 /* highres colour "catseye" */#define DIO_DESC2_HRCCATSEYE     "high-res color catseye display"#define DIO_ID2_HRMCATSEYE  0x07 /* highres mono "catseye" */#define DIO_DESC2_HRMCATSEYE     "high-res mono catseye display"#define DIO_ID2_DAVINCI     0x08 /* 98730/98731 "davinci" */#define DIO_DESC2_DAVINCI        "98730/98731 \"davinci\" display"#define DIO_ID2_XXXCATSEYE  0x09 /* "catseye" */#define DIO_DESC2_XXXCATSEYE     "catseye display"#define DIO_ID2_HYPERION    0x0e /* A1096A "hyperion" */#define DIO_DESC2_HYPERION       "A1096A \"hyperion\" display"#define DIO_ID2_XGENESIS    0x0b /* "x-genesis"; no NetBSD support */#define DIO_DESC2_XGENESIS       "\"x-genesis\" display"#define DIO_ID2_TIGER       0x0c /* "tiger"; no NetBSD support */#define DIO_DESC2_TIGER          "\"tiger\" display"#define DIO_ID2_YGENESIS    0x0d /* "y-genesis"; no NetBSD support */#define DIO_DESC2_YGENESIS       "\"y-genesis\" display"/* if you add new IDs then you should tell dio.c about them so it can * identify them... */extern int dio_find(int deviceid);extern unsigned long dio_scodetophysaddr(int scode);extern void dio_create_sysfs_dev_files(struct dio_dev *);/* New-style probing */extern int dio_register_driver(struct dio_driver *);extern void dio_unregister_driver(struct dio_driver *);extern const struct dio_device_id *dio_match_device(const struct dio_device_id *ids, const struct dio_dev *z);static inline struct dio_driver *dio_dev_driver(const struct dio_dev *d){    return d->driver;}#define dio_resource_start(d) ((d)->resource.start)#define dio_resource_end(d)   ((d)->resource.end)#define dio_resource_len(d)   ((d)->resource.end-(d)->resource.start+1)#define dio_resource_flags(d) ((d)->resource.flags)#define dio_request_device(d, name) \    request_mem_region(dio_resource_start(d), dio_resource_len(d), name)#define dio_release_device(d) \    release_mem_region(dio_resource_start(d), dio_resource_len(d))/* Similar to the helpers above, these manipulate per-dio_dev * driver-specific data.  They are really just a wrapper around * the generic device structure functions of these calls. */static inline void *dio_get_drvdata (struct dio_dev *d){	return dev_get_drvdata(&d->dev);}static inline void dio_set_drvdata (struct dio_dev *d, void *data){	dev_set_drvdata(&d->dev, data);}#endif /* __KERNEL__ */#endif /* ndef _LINUX_DIO_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲国产日韩综合久久精品| 日本三级亚洲精品| 国产精品一区二区无线| 日韩三级在线观看| 久久精品视频网| 精品无码三级在线观看视频| 制服丝袜日韩国产| 日韩精品午夜视频| 日韩网站在线看片你懂的| 日韩中文字幕区一区有砖一区| 国产高清不卡二三区| 91精品国产91热久久久做人人 | 欧美女孩性生活视频| 亚洲色图欧洲色图婷婷| 一本大道久久a久久综合婷婷 | 欧美一区二区三区免费视频 | 欧美日韩精品一区二区| 亚洲综合在线观看视频| 欧美午夜精品免费| 无码av免费一区二区三区试看| 欧美曰成人黄网| 五月婷婷色综合| 色又黄又爽网站www久久| 日本不卡一区二区| 国产成a人亚洲精| 亚洲天堂av老司机| 欧美日韩一区不卡| 国产乱人伦偷精品视频不卡| 最新热久久免费视频| 欧美年轻男男videosbes| 国产精品一区二区三区乱码| 亚洲精选视频免费看| 日韩欧美一级在线播放| hitomi一区二区三区精品| 日韩精品一卡二卡三卡四卡无卡| 精品国产精品一区二区夜夜嗨| 91蝌蚪国产九色| 麻豆91精品视频| 亚洲美女免费视频| 久久久久久久网| 欧洲精品中文字幕| 成人毛片在线观看| 另类小说视频一区二区| 亚洲激情在线播放| 国产欧美一二三区| 日韩女优av电影| 欧洲在线/亚洲| 成人a区在线观看| 捆绑调教美女网站视频一区| 一区二区三区欧美视频| 久久免费视频色| 91精品国产91久久久久久一区二区 | 精品国产一区二区三区av性色| 91尤物视频在线观看| 狠狠色丁香婷综合久久| 调教+趴+乳夹+国产+精品| 国产精品成人一区二区艾草| 精品sm捆绑视频| 3d成人动漫网站| 在线看国产一区二区| 99久久伊人精品| 国产精品中文字幕一区二区三区| 日日摸夜夜添夜夜添精品视频 | 99久久精品99国产精品| 国产一区亚洲一区| 奇米影视一区二区三区| 丝袜诱惑亚洲看片 | 日韩精品电影在线| 亚洲午夜日本在线观看| 亚洲蜜臀av乱码久久精品蜜桃| 欧美激情一区二区三区在线| 久久综合给合久久狠狠狠97色69| 宅男噜噜噜66一区二区66| 欧美三级日韩在线| 91久久精品国产91性色tv| 色偷偷久久一区二区三区| 色婷婷久久综合| 色综合天天综合狠狠| 91尤物视频在线观看| a美女胸又www黄视频久久| 成人美女在线观看| www.亚洲色图.com| 91香蕉视频污| 欧美性欧美巨大黑白大战| 欧美色精品在线视频| 欧美日韩欧美一区二区| 欧美精品第1页| 欧美一区二区福利视频| 精品精品国产高清a毛片牛牛| 精品国产污网站| 亚洲国产精品av| 一区二区三区精品| 亚洲大片在线观看| 免费美女久久99| 国产乱国产乱300精品| www.欧美色图| 欧美熟乱第一页| 日韩精品一区在线观看| 国产午夜精品理论片a级大结局| 国产精品天天摸av网| 亚洲老妇xxxxxx| 日韩va欧美va亚洲va久久| 国内精品国产成人| 成人av在线资源网站| 色琪琪一区二区三区亚洲区| 制服丝袜激情欧洲亚洲| 久久久久久久精| 亚洲一区在线视频| 久热成人在线视频| 北条麻妃一区二区三区| 欧美人动与zoxxxx乱| 国产亚洲女人久久久久毛片| 国产精品久久久久久久久晋中| 亚洲午夜久久久久久久久电影院| 日韩不卡在线观看日韩不卡视频| 丰满亚洲少妇av| 欧美午夜一区二区| 国产清纯美女被跳蛋高潮一区二区久久w | 中文字幕不卡一区| 午夜视频在线观看一区二区三区| 蜜臀久久99精品久久久画质超高清| 国产精品一区二区久久不卡| 91黄视频在线观看| 国产亚洲精品中文字幕| 亚洲一级二级三级在线免费观看| 久久电影网站中文字幕| 99re视频这里只有精品| 久久亚洲私人国产精品va媚药| 一区二区三区四区在线| 国精产品一区一区三区mba视频 | 久久综合视频网| 亚洲午夜私人影院| 成人成人成人在线视频| 日韩精品中文字幕在线不卡尤物| 悠悠色在线精品| 成人免费高清在线观看| 日韩精品一区在线| 亚洲成人综合网站| 99久久国产综合精品女不卡| 久久先锋影音av| 奇米精品一区二区三区在线观看| 日本韩国精品在线| 欧美韩国日本一区| 久久疯狂做爰流白浆xx| 欧美高清精品3d| 亚洲精品日产精品乱码不卡| 国产成人在线观看| 欧美成人一区二区三区| 亚洲成人免费影院| 一本一本久久a久久精品综合麻豆| 久久网这里都是精品| 日本不卡视频一二三区| 欧美图区在线视频| 一区二区国产视频| 波波电影院一区二区三区| 国产日韩三级在线| 九九精品视频在线看| 欧美一级高清大全免费观看| 一区二区久久久久久| 91免费国产视频网站| 自拍偷拍欧美精品| 99精品在线免费| 亚洲欧美综合色| 成人动漫av在线| 亚洲欧美色一区| 91美女精品福利| 亚洲一区二区五区| 91国在线观看| 亚洲小少妇裸体bbw| 欧美色图在线观看| 五月天激情综合| 在线综合视频播放| 麻豆国产精品一区二区三区| 日韩精品一区二区三区在线 | 欧美精品高清视频| 免费成人在线播放| 久久尤物电影视频在线观看| 国产麻豆精品视频| 国产精品成人网| 日本久久精品电影| 亚洲va欧美va天堂v国产综合| 欧美日韩大陆在线| 亚洲.国产.中文慕字在线| 91麻豆精品国产综合久久久久久 | 亚洲一级二级在线| 欧美一区三区四区| 久久av资源站| 中文在线资源观看网站视频免费不卡| bt欧美亚洲午夜电影天堂| 一区二区三区在线视频观看| 欧美精品在欧美一区二区少妇| 日韩va亚洲va欧美va久久| 欧美精品一区二区三区四区| 成人午夜在线播放| 亚洲综合色在线| 精品少妇一区二区三区在线播放| 国产成人精品影院| 亚洲男同性恋视频| 日韩视频在线你懂得| 成人精品视频一区二区三区尤物|