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

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

?? pci.h

?? ARM 嵌入式 系統 設計與實例開發 實驗教材 二源碼
?? H
字號:
/* * BK Id: SCCS/s.pci.h 1.16 10/15/01 22:51:33 paulus */#ifndef __PPC_PCI_H#define __PPC_PCI_H#ifdef __KERNEL__/* Values for the `which' argument to sys_pciconfig_iobase syscall.  */#define IOBASE_BRIDGE_NUMBER	0#define IOBASE_MEMORY		1#define IOBASE_IO		2#define IOBASE_ISA_IO		3#define IOBASE_ISA_MEM		4extern int pcibios_assign_all_busses(void);#define PCIBIOS_MIN_IO		0x1000#define PCIBIOS_MIN_MEM		0x10000000extern inline void pcibios_set_master(struct pci_dev *dev){	/* No special bus mastering setup handling */}extern inline void pcibios_penalize_isa_irq(int irq){	/* We don't do dynamic PCI IRQ allocation */}extern unsigned long pci_resource_to_bus(struct pci_dev *pdev, struct resource *res);/* * The PCI bus bridge can translate addresses issued by the processor(s) * into a different address on the PCI bus.  On 32-bit cpus, we assume * this mapping is 1-1, but on 64-bit systems it often isn't. *  * Obsolete ! Drivers should now use pci_resource_to_bus */extern unsigned long phys_to_bus(unsigned long pa);extern unsigned long pci_phys_to_bus(unsigned long pa, int busnr);extern unsigned long pci_bus_to_phys(unsigned int ba, int busnr);    /* Dynamic DMA Mapping stuff, stolen from i386 * 	++ajoshi */#include <linux/types.h>#include <linux/slab.h>#include <linux/string.h>#include <asm/scatterlist.h>#include <asm/io.h>struct pci_dev;/* The PCI address space does equal the physical memory * address space.  The networking and block device layers use * this boolean for bounce buffer decisions. */#define PCI_DMA_BUS_IS_PHYS	(1)	/* Allocate and map kernel buffer using consistent mode DMA for a device. * hwdev should be valid struct pci_dev pointer for PCI devices, * NULL for PCI-like buses (ISA, EISA). * Returns non-NULL cpu-view pointer to the buffer if successful and * sets *dma_addrp to the pci side dma address as well, else *dma_addrp * is undefined. */extern void *pci_alloc_consistent(struct pci_dev *hwdev, size_t size,				  dma_addr_t *dma_handle);/* Free and unmap a consistent DMA buffer. * cpu_addr is what was returned from pci_alloc_consistent, * size must be the same as what as passed into pci_alloc_consistent, * and likewise dma_addr must be the same as what *dma_addrp was set to. * * References to the memory and mappings associated with cpu_addr/dma_addr * past this call are illegal. */extern void pci_free_consistent(struct pci_dev *hwdev, size_t size,				void *vaddr, dma_addr_t dma_handle);/* Map a single buffer of the indicated size for DMA in streaming mode. * The 32-bit bus address to use is returned. * * Once the device is given the dma address, the device owns this memory * until either pci_unmap_single or pci_dma_sync_single is performed. */static inline dma_addr_t pci_map_single(struct pci_dev *hwdev, void *ptr,					size_t size, int direction){	if (direction == PCI_DMA_NONE)		BUG();	return virt_to_bus(ptr);}static inline void pci_unmap_single(struct pci_dev *hwdev, dma_addr_t dma_addr,				    size_t size, int direction){	if (direction == PCI_DMA_NONE)		BUG();	/* nothing to do */}/* pci_unmap_{page,single} is a nop so... */#define DECLARE_PCI_UNMAP_ADDR(ADDR_NAME)#define DECLARE_PCI_UNMAP_LEN(LEN_NAME)#define pci_unmap_addr(PTR, ADDR_NAME)		(0)#define pci_unmap_addr_set(PTR, ADDR_NAME, VAL)	do { } while (0)#define pci_unmap_len(PTR, LEN_NAME)		(0)#define pci_unmap_len_set(PTR, LEN_NAME, VAL)	do { } while (0)/* * pci_{map,unmap}_single_page maps a kernel page to a dma_addr_t. identical * to pci_map_single, but takes a struct page instead of a virtual address */static inline dma_addr_t pci_map_page(struct pci_dev *hwdev, struct page *page,				      unsigned long offset, size_t size, int direction){	if (direction == PCI_DMA_NONE)		BUG();	return (page - mem_map) * PAGE_SIZE + PCI_DRAM_OFFSET + offset;}static inline void pci_unmap_page(struct pci_dev *hwdev, dma_addr_t dma_address,				  size_t size, int direction){	if (direction == PCI_DMA_NONE)		BUG();	/* Nothing to do */}/* Map a set of buffers described by scatterlist in streaming * mode for DMA.  This is the scather-gather version of the * above pci_map_single interface.  Here the scatter gather list * elements are each tagged with the appropriate dma address * and length.  They are obtained via sg_dma_{address,length}(SG). * * NOTE: An implementation may be able to use a smaller number of *       DMA address/length pairs than there are SG table elements. *       (for example via virtual mapping capabilities) *       The routine returns the number of addr/length pairs actually *       used, at most nents. * * Device ownership issues as mentioned above for pci_map_single are * the same here. */static inline int pci_map_sg(struct pci_dev *hwdev, struct scatterlist *sg,			     int nents, int direction){	int i;	if (direction == PCI_DMA_NONE)		BUG();	/*	 * temporary 2.4 hack	 */	for (i = 0; i < nents; i++) {		if (sg[i].address && sg[i].page)			BUG();		else if (!sg[i].address && !sg[i].page)			BUG();		if (sg[i].address)			sg[i].dma_address = virt_to_bus(sg[i].address);		else			sg[i].dma_address = page_to_bus(sg[i].page) + sg[i].offset;	}	return nents;}/* Unmap a set of streaming mode DMA translations. * Again, cpu read rules concerning calls here are the same as for * pci_unmap_single() above. */static inline void pci_unmap_sg(struct pci_dev *hwdev, struct scatterlist *sg,				int nents, int direction){	if (direction == PCI_DMA_NONE)		BUG();	/* nothing to do */}/* Make physical memory consistent for a single * streaming mode DMA translation after a transfer. * * If you perform a pci_map_single() but wish to interrogate the * buffer using the cpu, yet do not wish to teardown the PCI dma * mapping, you must call this function before doing so.  At the * next point you give the PCI dma address back to the card, the * device again owns the buffer. */static inline void pci_dma_sync_single(struct pci_dev *hwdev,				       dma_addr_t dma_handle,				       size_t size, int direction){	if (direction == PCI_DMA_NONE)		BUG();	/* nothing to do */}/* Make physical memory consistent for a set of streaming * mode DMA translations after a transfer. * * The same as pci_dma_sync_single but for a scatter-gather list, * same rules and usage. */static inline void pci_dma_sync_sg(struct pci_dev *hwdev,				   struct scatterlist *sg,				   int nelems, int direction){	if (direction == PCI_DMA_NONE)		BUG();	/* nothing to do */}/* Return whether the given PCI device DMA address mask can * be supported properly.  For example, if your device can * only drive the low 24-bits during PCI bus mastering, then * you would pass 0x00ffffff as the mask to this function. */static inline int pci_dma_supported(struct pci_dev *hwdev, u64 mask){	return 1;}/* * At present there are very few 32-bit PPC machines that can have * memory above the 4GB point, and we don't support that. */#define pci_dac_dma_supported(pci_dev, mask)	(0)static __inline__ dma64_addr_tpci_dac_page_to_dma(struct pci_dev *pdev, struct page *page, unsigned long offset, int direction){	return (dma64_addr_t) page_to_bus(page) + offset;}static __inline__ struct page *pci_dac_dma_to_page(struct pci_dev *pdev, dma64_addr_t dma_addr){	return mem_map + (unsigned long)(dma_addr >> PAGE_SHIFT);}static __inline__ unsigned longpci_dac_dma_to_offset(struct pci_dev *pdev, dma64_addr_t dma_addr){	return (dma_addr & ~PAGE_MASK);}static __inline__ voidpci_dac_dma_sync_single(struct pci_dev *pdev, dma64_addr_t dma_addr, size_t len, int direction){	/* Nothing to do. */}/* These macros should be used after a pci_map_sg call has been done * to get bus addresses of each of the SG entries and their lengths. * You should only work with the number of sg entries pci_map_sg * returns. */#define sg_dma_address(sg)	((sg)->dma_address)#define sg_dma_len(sg)		((sg)->length)/* Return the index of the PCI controller for device PDEV. */extern int pci_controller_num(struct pci_dev *pdev);/* Map a range of PCI memory or I/O space for a device into user space */int pci_mmap_page_range(struct pci_dev *pdev, struct vm_area_struct *vma,			enum pci_mmap_state mmap_state, int write_combine);/* Tell drivers/pci/proc.c that we have pci_mmap_page_range() */#define HAVE_PCI_MMAP	1#endif	/* __KERNEL__ */#endif /* __PPC_PCI_H */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品私房写真福利视频| 美女任你摸久久 | 日本成人中文字幕| 粉嫩欧美一区二区三区高清影视| 在线观看91精品国产入口| 日韩精品在线一区| 亚洲第一电影网| 99国产精品久| 久久精品亚洲一区二区三区浴池 | 午夜欧美一区二区三区在线播放| 国产麻豆精品在线| 欧美一区二区三区色| 亚洲乱码国产乱码精品精小说 | 色综合中文字幕国产 | 国产精品毛片久久久久久| 丝袜美腿高跟呻吟高潮一区| av午夜一区麻豆| 久久久精品免费观看| 免费在线看一区| 欧美日韩中文精品| 中文字幕日韩欧美一区二区三区| 国产精品69久久久久水密桃| 日韩免费观看高清完整版| 五月天精品一区二区三区| 在线亚洲精品福利网址导航| 一区精品在线播放| 99热在这里有精品免费| 国产精品免费视频网站| 成人永久免费视频| 国产亚洲精品中文字幕| 国产在线精品视频| 久久天天做天天爱综合色| 老汉av免费一区二区三区| 欧美日韩精品专区| 亚洲成人动漫在线免费观看| 色av成人天堂桃色av| 一区二区三区中文字幕| 色屁屁一区二区| 夜夜夜精品看看| 欧美日韩在线播| 日韩精品乱码免费| 日韩欧美在线123| 国产在线视频一区二区| 久久九九久久九九| 成人性视频免费网站| 亚洲视频在线观看三级| 91久久精品一区二区二区| 亚洲va欧美va人人爽| 欧美一区二区三区影视| 久久精品国产成人一区二区三区| 精品国产91亚洲一区二区三区婷婷| 强制捆绑调教一区二区| 国产亚洲一区二区三区在线观看| 成人av第一页| 亚洲国产美女搞黄色| 日韩精品一区二区三区视频播放 | 亚洲成a天堂v人片| 日韩精品中文字幕在线不卡尤物| 国产精品一级黄| 日韩一区有码在线| 欧美区在线观看| 国产精品亚洲成人| 亚洲色图欧美在线| 欧美一二三区在线观看| 成人一二三区视频| 亚洲v日本v欧美v久久精品| 日韩一区二区免费视频| 大尺度一区二区| 亚洲成人免费视频| 国产欧美一区二区精品性色| 色婷婷av一区二区三区软件| 免费成人av在线播放| 亚洲色图丝袜美腿| 日韩一级片在线观看| 91女人视频在线观看| 久久99精品久久久久婷婷| 自拍偷拍国产亚洲| 欧美精品一区男女天堂| 色综合久久66| 国产精品亚洲第一| 日本伊人色综合网| 国产精品午夜久久| 日韩欧美在线一区二区三区| 99久久精品免费| 久久电影网站中文字幕| 一区二区三区在线不卡| 国产日产精品一区| 91精品国产综合久久精品麻豆| 日韩欧美中文字幕制服| 大胆亚洲人体视频| 精品午夜久久福利影院| 亚洲永久精品国产| 欧美精彩视频一区二区三区| 91精品国产综合久久蜜臀| 99精品久久久久久| 国产精品18久久久久久久久| 日本欧美久久久久免费播放网| 亚洲视频资源在线| 国产欧美精品区一区二区三区| 日韩一区二区影院| 欧美精品欧美精品系列| 色欲综合视频天天天| 成人免费看视频| 国产乱码精品一区二区三区五月婷| 亚洲chinese男男1069| 综合在线观看色| 欧美激情在线免费观看| 国产亚洲一区二区三区四区| 久久亚洲综合av| 欧美videos中文字幕| 欧美精品第1页| 欧美日韩在线电影| 欧美视频一区二区三区在线观看 | 欧美在线不卡视频| 在线观看一区日韩| 91国偷自产一区二区使用方法| 99精品国产热久久91蜜凸| 成人精品国产免费网站| 成人午夜大片免费观看| 成人免费毛片片v| 丁香一区二区三区| 成人app下载| 91麻豆免费在线观看| 一本一道久久a久久精品综合蜜臀| 99精品久久只有精品| 91网站在线播放| 欧美三级资源在线| 欧美一区二区视频观看视频| 日韩一区国产二区欧美三区| 日韩欧美视频在线| 久久精品亚洲一区二区三区浴池| 国产日产欧产精品推荐色| 综合激情成人伊人| 一区二区三区免费在线观看| 亚洲一区二区三区三| 日韩电影在线一区二区| 国产麻豆精品久久一二三| 国产传媒日韩欧美成人| 99精品久久久久久| 欧美一区二区三区在线视频 | 成人欧美一区二区三区黑人麻豆 | 日韩中文字幕不卡| 国产一区二区在线观看免费| 国产成人自拍高清视频在线免费播放| 成人一级视频在线观看| 91高清视频在线| 欧美变态tickling挠脚心| 中文字幕国产一区| 亚洲国产日韩在线一区模特| 久久99精品久久久久久国产越南| 国产成人一区二区精品非洲| 色拍拍在线精品视频8848| 欧美一级高清片| 国产精品久久久久久久岛一牛影视| 亚洲一区在线视频| 国产成人免费9x9x人网站视频| 91黄色激情网站| 国产亚洲福利社区一区| 一区二区三区成人| 国产福利精品导航| 欧美高清激情brazzers| 国产欧美精品一区| 蜜臀va亚洲va欧美va天堂| 成人精品亚洲人成在线| 91精品欧美综合在线观看最新| 国产精品久久久久久久岛一牛影视| 午夜精品久久久久久久久久久 | 中文字幕日本不卡| 激情久久五月天| 欧美群妇大交群的观看方式| 国产视频在线观看一区二区三区 | 亚洲欧美日韩在线不卡| 激情欧美一区二区三区在线观看| 91免费视频观看| 国产无人区一区二区三区| 日欧美一区二区| 在线一区二区三区做爰视频网站| 国产色综合久久| 美国一区二区三区在线播放| 色菇凉天天综合网| 国产精品久久久久久久久搜平片| 久久99热这里只有精品| 欧美日韩电影在线播放| 亚洲精选一二三| 99免费精品视频| 国产视频一区在线观看| 韩国女主播成人在线观看| 91精品国产91久久久久久一区二区 | 色综合久久久久久久久久久| 国产精品色噜噜| 豆国产96在线|亚洲| 久久综合一区二区| 极品尤物av久久免费看| 日韩欧美国产一二三区| 日韩激情一区二区| 欧美性一二三区| 亚洲国产成人av好男人在线观看| 欧美综合视频在线观看| 亚洲综合无码一区二区| 日本韩国一区二区三区|