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

? 歡迎來(lái)到蟲(chóng)蟲(chóng)下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲(chóng)蟲(chóng)下載站

?? xtalk.c

?? 根據(jù)添加了fs2410平臺(tái)的arch目錄
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
/* $Id$ * * This file is subject to the terms and conditions of the GNU General Public * License.  See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 1992 - 1997, 2000 Silicon Graphics, Inc. * Copyright (C) 2000 by Colin Ngam */#include <linux/types.h>#include <linux/slab.h>#include <asm/sn/sgi.h>#include <asm/sn/iobus.h>#include <asm/sn/iograph.h>#include <asm/sn/invent.h>#include <asm/sn/hcl.h>#include <asm/sn/labelcl.h>#include <asm/sn/hcl_util.h>#include <asm/sn/xtalk/xtalk.h>#include <asm/sn/xtalk/xswitch.h>#include <asm/sn/xtalk/xwidget.h>#include <asm/sn/xtalk/xtalk_private.h>/* * Implement crosstalk provider operations.  The xtalk* layer provides a * platform-independent interface for crosstalk devices.  This layer * switches among the possible implementations of a crosstalk adapter. * * On platforms with only one possible xtalk provider, macros can be * set up at the top that cause the table lookups and indirections to * completely disappear. */#define	NEW(ptr)	(ptr = kmalloc(sizeof (*(ptr)), GFP_KERNEL))#define	DEL(ptr)	(kfree(ptr))char                    widget_info_fingerprint[] = "widget_info";cdl_p                   xtalk_registry = NULL;#include <asm/sn/agent.h>#define	DEV_FUNC(dev,func)	hub_##func#define	CAST_PIOMAP(x)		((hub_piomap_t)(x))#define	CAST_DMAMAP(x)		((hub_dmamap_t)(x))#define	CAST_INTR(x)		((hub_intr_t)(x))/* ===================================================================== *            Function Table of Contents */xtalk_piomap_t          xtalk_piomap_alloc(devfs_handle_t, device_desc_t, iopaddr_t, size_t, size_t, unsigned);void                    xtalk_piomap_free(xtalk_piomap_t);caddr_t                 xtalk_piomap_addr(xtalk_piomap_t, iopaddr_t, size_t);void                    xtalk_piomap_done(xtalk_piomap_t);caddr_t                 xtalk_piotrans_addr(devfs_handle_t, device_desc_t, iopaddr_t, size_t, unsigned);caddr_t                 xtalk_pio_addr(devfs_handle_t, device_desc_t, iopaddr_t, size_t, xtalk_piomap_t *, unsigned);void                    xtalk_set_early_piotrans_addr(xtalk_early_piotrans_addr_f *);caddr_t                 xtalk_early_piotrans_addr(xwidget_part_num_t, xwidget_mfg_num_t, int, iopaddr_t, size_t, unsigned);static caddr_t          null_xtalk_early_piotrans_addr(xwidget_part_num_t, xwidget_mfg_num_t, int, iopaddr_t, size_t, unsigned);xtalk_dmamap_t          xtalk_dmamap_alloc(devfs_handle_t, device_desc_t, size_t, unsigned);void                    xtalk_dmamap_free(xtalk_dmamap_t);iopaddr_t               xtalk_dmamap_addr(xtalk_dmamap_t, paddr_t, size_t);alenlist_t              xtalk_dmamap_list(xtalk_dmamap_t, alenlist_t, unsigned);void                    xtalk_dmamap_done(xtalk_dmamap_t);iopaddr_t               xtalk_dmatrans_addr(devfs_handle_t, device_desc_t, paddr_t, size_t, unsigned);alenlist_t              xtalk_dmatrans_list(devfs_handle_t, device_desc_t, alenlist_t, unsigned);void			xtalk_dmamap_drain(xtalk_dmamap_t);void			xtalk_dmaaddr_drain(devfs_handle_t, iopaddr_t, size_t);void			xtalk_dmalist_drain(devfs_handle_t, alenlist_t);xtalk_intr_t            xtalk_intr_alloc(devfs_handle_t, device_desc_t, devfs_handle_t);xtalk_intr_t            xtalk_intr_alloc_nothd(devfs_handle_t, device_desc_t, devfs_handle_t);void                    xtalk_intr_free(xtalk_intr_t);int                     xtalk_intr_connect(xtalk_intr_t, intr_func_t, intr_arg_t, xtalk_intr_setfunc_t, void *, void *);void                    xtalk_intr_disconnect(xtalk_intr_t);devfs_handle_t            xtalk_intr_cpu_get(xtalk_intr_t);int                     xtalk_error_handler(devfs_handle_t, int, ioerror_mode_t, ioerror_t *);int                     xtalk_error_devenable(devfs_handle_t, int, int);void                    xtalk_provider_startup(devfs_handle_t);void                    xtalk_provider_shutdown(devfs_handle_t);devfs_handle_t            xtalk_intr_dev_get(xtalk_intr_t);xwidgetnum_t            xtalk_intr_target_get(xtalk_intr_t);xtalk_intr_vector_t     xtalk_intr_vector_get(xtalk_intr_t);iopaddr_t               xtalk_intr_addr_get(struct xtalk_intr_s *);void                   *xtalk_intr_sfarg_get(xtalk_intr_t);devfs_handle_t            xtalk_pio_dev_get(xtalk_piomap_t);xwidgetnum_t            xtalk_pio_target_get(xtalk_piomap_t);iopaddr_t               xtalk_pio_xtalk_addr_get(xtalk_piomap_t);ulong                   xtalk_pio_mapsz_get(xtalk_piomap_t);caddr_t                 xtalk_pio_kvaddr_get(xtalk_piomap_t);devfs_handle_t            xtalk_dma_dev_get(xtalk_dmamap_t);xwidgetnum_t            xtalk_dma_target_get(xtalk_dmamap_t);xwidget_info_t          xwidget_info_chk(devfs_handle_t);xwidget_info_t          xwidget_info_get(devfs_handle_t);void                    xwidget_info_set(devfs_handle_t, xwidget_info_t);devfs_handle_t            xwidget_info_dev_get(xwidget_info_t);xwidgetnum_t            xwidget_info_id_get(xwidget_info_t);devfs_handle_t            xwidget_info_master_get(xwidget_info_t);xwidgetnum_t            xwidget_info_masterid_get(xwidget_info_t);xwidget_part_num_t      xwidget_info_part_num_get(xwidget_info_t);xwidget_mfg_num_t       xwidget_info_mfg_num_get(xwidget_info_t);char 			*xwidget_info_name_get(xwidget_info_t);void                    xtalk_init(void);void                    xtalk_provider_register(devfs_handle_t, xtalk_provider_t *);void                    xtalk_provider_unregister(devfs_handle_t);xtalk_provider_t       *xtalk_provider_fns_get(devfs_handle_t);int                     xwidget_driver_register(xwidget_part_num_t, 						xwidget_mfg_num_t, 						char *, unsigned);void                    xwidget_driver_unregister(char *);int                     xwidget_register(xwidget_hwid_t, devfs_handle_t, 					 xwidgetnum_t, devfs_handle_t, 					 xwidgetnum_t, async_attach_t);int			xwidget_unregister(devfs_handle_t);void                    xwidget_error_register(devfs_handle_t, error_handler_f *,					       error_handler_arg_t);void                    xwidget_reset(devfs_handle_t);char			*xwidget_name_get(devfs_handle_t);#if !defined(DEV_FUNC)/* * There is more than one possible provider * for this platform. We need to examine the * master vertex of the current vertex for * a provider function structure, and indirect * through the appropriately named member. */#define	DEV_FUNC(dev,func)	xwidget_to_provider_fns(dev)->func#define	CAST_PIOMAP(x)		((xtalk_piomap_t)(x))#define	CAST_DMAMAP(x)		((xtalk_dmamap_t)(x))#define	CAST_INTR(x)		((xtalk_intr_t)(x))static xtalk_provider_t *xwidget_to_provider_fns(devfs_handle_t xconn){    xwidget_info_t          widget_info;    xtalk_provider_t       *provider_fns;    widget_info = xwidget_info_get(xconn);    ASSERT(widget_info != NULL);    provider_fns = xwidget_info_pops_get(widget_info);    ASSERT(provider_fns != NULL);    return (provider_fns);}#endif/* * Many functions are not passed their vertex * information directly; rather, they must * dive through a resource map. These macros * are available to coordinate this detail. */#define	PIOMAP_FUNC(map,func)	DEV_FUNC(map->xp_dev,func)#define	DMAMAP_FUNC(map,func)	DEV_FUNC(map->xd_dev,func)#define	INTR_FUNC(intr,func)	DEV_FUNC(intr_hdl->xi_dev,func)/* ===================================================================== *                    PIO MANAGEMENT * *      For mapping system virtual address space to *      xtalk space on a specified widget */xtalk_piomap_txtalk_piomap_alloc(devfs_handle_t dev,	/* set up mapping for this device */		   device_desc_t dev_desc,	/* device descriptor */		   iopaddr_t xtalk_addr,	/* map for this xtalk_addr range */		   size_t byte_count,		   size_t byte_count_max,	/* maximum size of a mapping */		   unsigned flags){				/* defined in sys/pio.h */    return (xtalk_piomap_t) DEV_FUNC(dev, piomap_alloc)	(dev, dev_desc, xtalk_addr, byte_count, byte_count_max, flags);}voidxtalk_piomap_free(xtalk_piomap_t xtalk_piomap){    PIOMAP_FUNC(xtalk_piomap, piomap_free)	(CAST_PIOMAP(xtalk_piomap));}caddr_txtalk_piomap_addr(xtalk_piomap_t xtalk_piomap,	/* mapping resources */		  iopaddr_t xtalk_addr,		/* map for this xtalk address */		  size_t byte_count){				/* map this many bytes */    return PIOMAP_FUNC(xtalk_piomap, piomap_addr)	(CAST_PIOMAP(xtalk_piomap), xtalk_addr, byte_count);}voidxtalk_piomap_done(xtalk_piomap_t xtalk_piomap){    PIOMAP_FUNC(xtalk_piomap, piomap_done)	(CAST_PIOMAP(xtalk_piomap));}caddr_txtalk_piotrans_addr(devfs_handle_t dev,	/* translate for this device */		    device_desc_t dev_desc,	/* device descriptor */		    iopaddr_t xtalk_addr,	/* Crosstalk address */		    size_t byte_count,	/* map this many bytes */		    unsigned flags){				/* (currently unused) */    return DEV_FUNC(dev, piotrans_addr)	(dev, dev_desc, xtalk_addr, byte_count, flags);}caddr_txtalk_pio_addr(devfs_handle_t dev,	/* translate for this device */	       device_desc_t dev_desc,	/* device descriptor */	       iopaddr_t addr,		/* starting address (or offset in window) */	       size_t byte_count,	/* map this many bytes */	       xtalk_piomap_t *mapp,	/* where to return the map pointer */	       unsigned flags){					/* PIO flags */    xtalk_piomap_t          map = 0;    caddr_t                 res;    if (mapp)	*mapp = 0;			/* record "no map used" */    res = xtalk_piotrans_addr	(dev, dev_desc, addr, byte_count, flags);    if (res)	return res;			/* xtalk_piotrans worked */    map = xtalk_piomap_alloc	(dev, dev_desc, addr, byte_count, byte_count, flags);    if (!map)	return res;			/* xtalk_piomap_alloc failed */    res = xtalk_piomap_addr	(map, addr, byte_count);    if (!res) {	xtalk_piomap_free(map);	return res;			/* xtalk_piomap_addr failed */    }    if (mapp)	*mapp = map;			/* pass back map used */    return res;				/* xtalk_piomap_addr succeeded */}/* ===================================================================== *            EARLY PIOTRANS SUPPORT * *      There are places where drivers (mgras, for instance) *      need to get PIO translations before the infrastructure *      is extended to them (setting up textports, for *      instance). These drivers should call *      xtalk_early_piotrans_addr with their xtalk ID *      information, a sequence number (so we can use the second *      mgras for instance), and the usual piotrans parameters. * *      Machine specific code should provide an implementation *      of early_piotrans_addr, and present a pointer to this *      function to xtalk_set_early_piotrans_addr so it can be *      used by clients without the clients having to know what *      platform or what xtalk provider is in use. */static xtalk_early_piotrans_addr_f null_xtalk_early_piotrans_addr;xtalk_early_piotrans_addr_f *impl_early_piotrans_addr = null_xtalk_early_piotrans_addr;/* xtalk_set_early_piotrans_addr: * specify the early_piotrans_addr implementation function. */voidxtalk_set_early_piotrans_addr(xtalk_early_piotrans_addr_f *impl){    impl_early_piotrans_addr = impl;}/* xtalk_early_piotrans_addr: * figure out a PIO address for the "nth" crosstalk widget that * matches the specified part and mfgr number. Returns NULL if * there is no such widget, or if the requested mapping can not * be constructed. * Limitations on which crosstalk slots (and busses) are * checked, and definitions of the ordering of the search across * the crosstalk slots, are defined by the platform. */caddr_txtalk_early_piotrans_addr(xwidget_part_num_t part_num,			  xwidget_mfg_num_t mfg_num,			  int which,			  iopaddr_t xtalk_addr,			  size_t byte_count,			  unsigned flags){    return impl_early_piotrans_addr	(part_num, mfg_num, which, xtalk_addr, byte_count, flags);}/* null_xtalk_early_piotrans_addr: * used as the early_piotrans_addr implementation until and * unless a real implementation is provided. In DEBUG kernels, * we want to know who is calling before the implementation is * registered; in non-DEBUG kernels, return NULL representing * lack of mapping support. *//*ARGSUSED */static caddr_tnull_xtalk_early_piotrans_addr(xwidget_part_num_t part_num,			       xwidget_mfg_num_t mfg_num,			       int which,			       iopaddr_t xtalk_addr,			       size_t byte_count,			       unsigned flags){#if DEBUG    PRINT_PANIC("null_xtalk_early_piotrans_addr");#endif    return NULL;}/* ===================================================================== *                    DMA MANAGEMENT * *      For mapping from crosstalk space to system *      physical space. */xtalk_dmamap_txtalk_dmamap_alloc(devfs_handle_t dev,	/* set up mappings for this device */		   device_desc_t dev_desc,	/* device descriptor */		   size_t byte_count_max,	/* max size of a mapping */		   unsigned flags){				/* defined in dma.h */    return (xtalk_dmamap_t) DEV_FUNC(dev, dmamap_alloc)	(dev, dev_desc, byte_count_max, flags);}voidxtalk_dmamap_free(xtalk_dmamap_t xtalk_dmamap){    DMAMAP_FUNC(xtalk_dmamap, dmamap_free)	(CAST_DMAMAP(xtalk_dmamap));}iopaddr_txtalk_dmamap_addr(xtalk_dmamap_t xtalk_dmamap,	/* use these mapping resources */		  paddr_t paddr,	/* map for this address */		  size_t byte_count){				/* map this many bytes */    return DMAMAP_FUNC(xtalk_dmamap, dmamap_addr)	(CAST_DMAMAP(xtalk_dmamap), paddr, byte_count);}alenlist_txtalk_dmamap_list(xtalk_dmamap_t xtalk_dmamap,	/* use these mapping resources */		  alenlist_t alenlist,	/* map this Address/Length List */		  unsigned flags){    return DMAMAP_FUNC(xtalk_dmamap, dmamap_list)	(CAST_DMAMAP(xtalk_dmamap), alenlist, flags);}voidxtalk_dmamap_done(xtalk_dmamap_t xtalk_dmamap){    DMAMAP_FUNC(xtalk_dmamap, dmamap_done)	(CAST_DMAMAP(xtalk_dmamap));}

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
大陆成人av片| 亚洲免费在线观看视频| 日韩精品中文字幕一区二区三区| 日韩一区二区三区电影在线观看| 性做久久久久久免费观看| 欧美日韩一区二区三区高清| 三级不卡在线观看| 精品乱人伦小说| www.一区二区| 老司机精品视频线观看86| 日韩一区二区三区在线| 亚洲欧美日韩人成在线播放| 91福利视频网站| 国产一区二区主播在线| 亚洲黄色免费网站| 国产乱色国产精品免费视频| 国产一区二区免费视频| 国产一级精品在线| 日韩一区在线播放| 成人av片在线观看| 精彩视频一区二区三区| 亚洲图片欧美一区| 国产精品久久久久久久蜜臀| 日韩精品自拍偷拍| 欧美无砖砖区免费| 91性感美女视频| 宅男在线国产精品| 久久99精品久久只有精品| 《视频一区视频二区| 国产精品国产馆在线真实露脸| 717成人午夜免费福利电影| 久久久精品国产99久久精品芒果 | 久久久久久9999| 久久久久国色av免费看影院| **欧美大码日韩| 亚洲r级在线视频| 国产一区91精品张津瑜| 在线免费观看不卡av| 成人午夜看片网址| 亚洲欧洲三级电影| 毛片不卡一区二区| 日本电影亚洲天堂一区| 精品国产亚洲一区二区三区在线观看| 国产欧美日韩激情| 亚洲超碰精品一区二区| 久久综合九色综合97婷婷女人 | 欧美疯狂做受xxxx富婆| 日韩免费一区二区| 日韩精品一二三四| 色哟哟日韩精品| 中文字幕av资源一区| 精品一区二区免费在线观看| 欧美色老头old∨ideo| 亚洲欧美另类在线| 一本大道久久精品懂色aⅴ| 中文字幕av一区 二区| 国产精品一区2区| 久久精品日产第一区二区三区高清版| 国产精品久久777777| 国产制服丝袜一区| 精品视频在线免费| 水野朝阳av一区二区三区| 91麻豆6部合集magnet| 亚洲色图在线播放| 欧洲av一区二区嗯嗯嗯啊| 国产精品久久久久影院色老大| 性做久久久久久| 国产高清不卡二三区| 欧美视频在线一区二区三区| 国产午夜精品在线观看| 亚洲v精品v日韩v欧美v专区| youjizz国产精品| 亚洲欧洲日韩在线| 99re视频精品| 日韩一级完整毛片| 国产精品成人午夜| 成人免费看的视频| 国产精品国产自产拍高清av| 成人av电影在线观看| 久久精品男人的天堂| 免费视频一区二区| 2020国产精品自拍| 欧美日本韩国一区| 91福利在线导航| a在线欧美一区| 91一区二区在线观看| 国产91在线|亚洲| 国产98色在线|日韩| 国产一区二区不卡老阿姨| 中文字幕欧美日韩一区| 粉嫩13p一区二区三区| 亚洲欧洲av另类| 亚洲午夜精品在线| 久久精品国产亚洲高清剧情介绍| 欧美在线不卡一区| 精品一区二区免费| 亚洲欧洲精品天堂一级| 欧美性xxxxxx少妇| 久国产精品韩国三级视频| 欧美国产欧美亚州国产日韩mv天天看完整| 国产福利一区二区三区视频 | 国产精品69毛片高清亚洲| 亚洲色图一区二区三区| 欧美高清dvd| av网站一区二区三区| 亚洲一区影音先锋| 国产亲近乱来精品视频| 欧美性色综合网| 成人激情动漫在线观看| 男女激情视频一区| 亚洲九九爱视频| 亚洲欧美在线观看| 日韩精品一区二区三区在线| 欧美丰满少妇xxxxx高潮对白| 北岛玲一区二区三区四区| 国产一区二三区| 99天天综合性| 欧美综合一区二区| 在线亚洲一区观看| 久久亚洲精精品中文字幕早川悠里| 欧美视频一区二| 欧美精品一区二区久久久| 国产丝袜在线精品| 最近中文字幕一区二区三区| 中文字幕一区二区不卡| 亚洲一区二区三区四区在线| 日韩精品亚洲专区| 精彩视频一区二区| 91美女精品福利| 欧美伦理影视网| 精品国产一区二区三区不卡| 国产成人精品三级麻豆| 国模大尺度一区二区三区| 高清视频一区二区| 99re视频这里只有精品| 欧美日韩精品一区二区天天拍小说 | 青青草一区二区三区| 免费在线观看精品| 国产福利不卡视频| 色综合天天性综合| 欧美一级专区免费大片| 欧美丝袜丝交足nylons图片| 中文字幕亚洲成人| 91玉足脚交白嫩脚丫在线播放| 亚洲成人7777| 成人一区二区三区中文字幕| 日韩欧美成人一区| 久久精品亚洲国产奇米99| 日本不卡中文字幕| 91精品国产手机| 日韩高清欧美激情| 日韩欧美中文一区二区| 日韩国产精品久久久| 日韩一区二区三区视频| 奇米777欧美一区二区| 日韩欧美国产综合一区 | 久久超碰97中文字幕| 国产在线播放一区三区四| 1区2区3区欧美| 国产精品你懂的在线| 久久精品一区蜜桃臀影院| 五月天视频一区| 欧美精品三级日韩久久| 午夜欧美2019年伦理| 91麻豆精东视频| 日韩理论在线观看| 一本到三区不卡视频| 亚洲一区二区三区在线| 久久99热这里只有精品| 欧美精品一区二区三区蜜臀 | 国产精品入口麻豆九色| 国产传媒欧美日韩成人| 国产女人18毛片水真多成人如厕| 亚洲天堂免费看| 欧美日韩精品系列| 精品在线观看免费| 国产欧美日韩综合精品一区二区| 国产在线不卡一卡二卡三卡四卡| 亚洲精品在线网站| 色综合天天综合给合国产| 午夜精品一区二区三区三上悠亚| 欧美一二三四区在线| 国产米奇在线777精品观看| 国产精品青草综合久久久久99| 国产麻豆91精品| 亚洲六月丁香色婷婷综合久久| 69av一区二区三区| 不卡区在线中文字幕| 日韩福利视频导航| 亚洲美女精品一区| 久久久亚洲午夜电影| 欧美日韩情趣电影| av在线播放成人| 久久成人麻豆午夜电影| 亚洲国产一区视频| 亚洲精品在线免费观看视频| 欧美日韩成人一区二区| av在线不卡免费看| av亚洲精华国产精华精华| 玖玖九九国产精品|