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

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

?? pci.c

?? 根據(jù)添加了fs2410平臺(tái)的arch目錄
?? C
?? 第 1 頁(yè) / 共 3 頁(yè)
字號(hào):
	base = base << 21;	return base;}/* * pci1GetMemory0Size - Return PCI1 Memory 0 Bar Size. * Inputs: N/A * Returns: PCI1 Memory 0 Bar Size. */static unsigned int pci1GetMemory0Size(void){	unsigned int top, base, size;	GT_READ(GT_PCI1M1LD_OFS, &base);	base = base << 21;	GT_READ(GT_PCI1M1HD_OFS, &top);	top = (top << 21);	size = ((top - base) & 0xfffffff);	size = size | 0x1fffff;	return (size + 1);}/* * pci1GetMemory1Base - Return PCI1 Memory 1 Base Address. * Inputs: N/A * Returns: PCI1 Memory 1 Base Address. */static unsigned int pci1GetMemory1Base(void){	unsigned int base;	GT_READ(GT_PCI1M1LD_OFS, &base);	base = base << 21;	return base;}/* * pci1GetMemory1Size - Return PCI1 Memory 1 Bar Size. * Inputs: N/A * Returns: PCI1 Memory 1 Bar Size. */static unsigned int pci1GetMemory1Size(void){	unsigned int top, base, size;	GT_READ(GT_PCI1M1LD_OFS, &base);	base = base << 21;	GT_READ(GT_PCI1M1HD_OFS, &top);	top = (top << 21);	size = ((top - base) & 0xfffffff);	size = size | 0x1fffff;	return (size + 1);}/* * pci_range_ck - * * Check if the pci device that are trying to access does really exists * on the evaluation board.   * * Inputs : * bus - bus number (0 for PCI 0 ; 1 for PCI 1) * dev - number of device on the specific pci bus * * Outpus : * 0 - if OK , 1 - if failure */static __inline__ int pci_range_ck(unsigned char bus, unsigned char dev){	/*	 * We don't even pretend to handle other busses than bus 0 correctly.	 * Accessing device 31 crashes the CP7000 for some reason.	 */	if ((bus == 0) && (dev != 31))		return 0;	return -1;}/* * pciXReadConfigReg  - Read from a PCI configuration register *                    - Make sure the GT is configured as a master before  *                      reading from another device on the PCI. *                   - The function takes care of Big/Little endian conversion. * INPUTS:   regOffset: The register offset as it apears in the GT spec (or PCI *                        spec) *           pciDevNum: The device number needs to be addressed.                 * RETURNS: data , if the data == 0xffffffff check the master abort bit in the  *                 cause register to make sure the data is valid * *  Configuration Address 0xCF8: * *       31 30    24 23  16 15  11 10     8 7      2  0     <=bit Number *  |congif|Reserved|  Bus |Device|Function|Register|00| *  |Enable|        |Number|Number| Number | Number |  |    <=field Name * */static unsigned int pci0ReadConfigReg(int offset, struct pci_dev *device){	unsigned int DataForRegCf8;	unsigned int data;	DataForRegCf8 = ((PCI_SLOT(device->devfn) << 11) |			 (PCI_FUNC(device->devfn) << 8) |			 (offset & ~0x3)) | 0x80000000;	GT_WRITE(GT_PCI0_CFGADDR_OFS, DataForRegCf8);	/*	 * The casual observer might wonder why the READ is duplicated here,	 * rather than immediately following the WRITE, and just have the swap	 * in the "if".  That's because there is a latency problem with trying	 * to read immediately after setting up the address register.  The "if"	 * check gives enough time for the address to stabilize, so the READ	 * can work.	 */	if (PCI_SLOT(device->devfn) == SELF) {	/* This board */		GT_READ(GT_PCI0_CFGDATA_OFS, &data);		return data;	} else { /* The PCI is working in LE Mode so swap the Data. */		GT_READ(GT_PCI0_CFGDATA_OFS, &data);		return cpu_to_le32(data);	}}static unsigned int pci1ReadConfigReg(int offset, struct pci_dev *device){	unsigned int DataForRegCf8;	unsigned int data;	DataForRegCf8 = ((PCI_SLOT(device->devfn) << 11) |			 (PCI_FUNC(device->devfn) << 8) |			 (offset & ~0x3)) | 0x80000000;	/*	 * The casual observer might wonder why the READ is duplicated here,	 * rather than immediately following the WRITE, and just have the	 * swap in the "if".  That's because there is a latency problem	 * with trying to read immediately after setting up the address	 * register.  The "if" check gives enough time for the address	 * to stabilize, so the READ can work.	 */	if (PCI_SLOT(device->devfn) == SELF) {	/* This board */		/* when configurating our own PCI 1 L-unit the access is through  		   the PCI 0 interface with reg number = reg number + 0x80 */		DataForRegCf8 |= 0x80;		GT_WRITE(GT_PCI0_CFGADDR_OFS, DataForRegCf8);	} else {		/* The PCI is working in LE Mode so swap the Data. */		GT_WRITE(GT_PCI1_CFGADDR_OFS, DataForRegCf8);	}	if (PCI_SLOT(device->devfn) == SELF) {	/* This board */		GT_READ(GT_PCI0_CFGDATA_OFS, &data);		return data;	} else {		GT_READ(GT_PCI1_CFGDATA_OFS, &data);		return cpu_to_le32(data);	}}/* * pciXWriteConfigReg - Write to a PCI configuration register *                    - Make sure the GT is configured as a master before  *                      writingto another device on the PCI. *                    - The function takes care of Big/Little endian conversion. * Inputs:   unsigned int regOffset: The register offset as it apears in the *           GT spec  *                   (or any other PCI device spec) *           pciDevNum: The device number needs to be addressed.                 * *  Configuration Address 0xCF8: * *       31 30    24 23  16 15  11 10     8 7      2  0     <=bit Number *  |congif|Reserved|  Bus |Device|Function|Register|00| *  |Enable|        |Number|Number| Number | Number |  |    <=field Name * */static void pci0WriteConfigReg(unsigned int offset,			       struct pci_dev *device, unsigned int data){	unsigned int DataForRegCf8;	DataForRegCf8 = ((PCI_SLOT(device->devfn) << 11) |			 (PCI_FUNC(device->devfn) << 8) |			 (offset & ~0x3)) | 0x80000000;	GT_WRITE(GT_PCI0_CFGADDR_OFS, DataForRegCf8);	if (PCI_SLOT(device->devfn) == SELF) {	/* This board */		GT_WRITE(GT_PCI0_CFGDATA_OFS, data);	} else {		/* configuration Transaction over the pci. */		/* The PCI is working in LE Mode so swap the Data. */		GT_WRITE(GT_PCI0_CFGDATA_OFS, le32_to_cpu(data));	}}static void pci1WriteConfigReg(unsigned int offset,			       struct pci_dev *device, unsigned int data){	unsigned int DataForRegCf8;	DataForRegCf8 = ((PCI_SLOT(device->devfn) << 11) |			 (PCI_FUNC(device->devfn) << 8) |			 (offset & ~0x3)) | 0x80000000;	/*	 * There is a latency problem	 * with trying to read immediately after setting up the address	 * register.  The "if" check gives enough time for the address	 * to stabilize, so the WRITE can work.	 */	if (PCI_SLOT(device->devfn) == SELF) {	/* This board */		/*		 * when configurating our own PCI 1 L-unit the access is through		 * the PCI 0 interface with reg number = reg number + 0x80		 */		DataForRegCf8 |= 0x80;		GT_WRITE(GT_PCI0_CFGADDR_OFS, DataForRegCf8);	} else {	/* configuration Transaction over the pci. */		/* The PCI is working in LE Mode so swap the Data. */		GT_WRITE(GT_PCI1_CFGADDR_OFS, DataForRegCf8);	}	if (PCI_SLOT(device->devfn) == SELF) {	/* This board */		GT_WRITE(GT_PCI0_CFGDATA_OFS, data);	} else {		/* configuration Transaction over the pci. */		GT_WRITE(GT_PCI1_CFGADDR_OFS, le32_to_cpu(data));	}}/* * galileo_pcibios_(read/write)_config_(dword/word/byte) - * * reads/write a dword/word/byte register from the configuration space * of a device. * * Inputs : * bus - bus number * dev - device number * offset - register offset in the configuration space * val - value to be written / read * * Outputs : * PCIBIOS_SUCCESSFUL when operation was succesfull * PCIBIOS_DEVICE_NOT_FOUND when the bus or dev is errorneous * PCIBIOS_BAD_REGISTER_NUMBER when accessing non aligned */static int galileo_pcibios_read_config_dword(struct pci_dev *device,					     int offset, u32 * val){	int dev, bus;	bus = device->bus->number;	dev = PCI_SLOT(device->devfn);	if (pci_range_ck(bus, dev)) {		*val = 0xffffffff;		return PCIBIOS_DEVICE_NOT_FOUND;	}	if (offset & 0x3)		return PCIBIOS_BAD_REGISTER_NUMBER;	if (bus == 0)		*val = pci0ReadConfigReg(offset, device);	/*  This is so that the upper PCI layer will get the correct return value if	   we're not attached to anything.  */	if ((offset == 0) && (*val == 0xffffffff)) {		return PCIBIOS_DEVICE_NOT_FOUND;	}	return PCIBIOS_SUCCESSFUL;}static int galileo_pcibios_read_config_word(struct pci_dev *device,					    int offset, u16 * val){	int dev, bus;	bus = device->bus->number;	dev = PCI_SLOT(device->devfn);	if (pci_range_ck(bus, dev)) {		*val = 0xffff;		return PCIBIOS_DEVICE_NOT_FOUND;	}	if (offset & 0x1)		return PCIBIOS_BAD_REGISTER_NUMBER;	if (bus == 0)		*val =		    (unsigned short) (pci0ReadConfigReg(offset, device) >>				      ((offset & ~0x3) * 8));	return PCIBIOS_SUCCESSFUL;}static int galileo_pcibios_read_config_byte(struct pci_dev *device,					    int offset, u8 * val){	int dev, bus;	bus = device->bus->number;	dev = PCI_SLOT(device->devfn);	if (pci_range_ck(bus, dev)) {		*val = 0xff;		return PCIBIOS_DEVICE_NOT_FOUND;	}	if (bus == 0)		*val =		    (unsigned char) (pci0ReadConfigReg(offset, device) >>				     ((offset & ~0x3) * 8));	/*	 *  This is so that the upper PCI layer will get the correct return	 * value if we're not attached to anything.	 */	if ((offset == 0xe) && (*val == 0xff)) {		u32 MasterAbort;		GT_READ(GT_INTRCAUSE_OFS, &MasterAbort);		if (MasterAbort & 0x40000) {			GT_WRITE(GT_INTRCAUSE_OFS,				 (MasterAbort & 0xfffbffff));			return PCIBIOS_DEVICE_NOT_FOUND;		}	}	return PCIBIOS_SUCCESSFUL;}static int galileo_pcibios_write_config_dword(struct pci_dev *device,					      int offset, u32 val){	int dev, bus;	bus = device->bus->number;	dev = PCI_SLOT(device->devfn);	if (pci_range_ck(bus, dev))		return PCIBIOS_DEVICE_NOT_FOUND;	if (offset & 0x3)		return PCIBIOS_BAD_REGISTER_NUMBER;	if (bus == 0)		pci0WriteConfigReg(offset, device, val);//  if (bus == 1) pci1WriteConfigReg (offset,device,val);	return PCIBIOS_SUCCESSFUL;}static int galileo_pcibios_write_config_word(struct pci_dev *device,					     int offset, u16 val){	int dev, bus;	unsigned long tmp;	bus = device->bus->number;	dev = PCI_SLOT(device->devfn);	if (pci_range_ck(bus, dev))		return PCIBIOS_DEVICE_NOT_FOUND;	if (offset & 0x1)		return PCIBIOS_BAD_REGISTER_NUMBER;	if (bus == 0)		tmp = pci0ReadConfigReg(offset, device);//  if (bus == 1) tmp = pci1ReadConfigReg (offset,device);	if ((offset % 4) == 0)		tmp = (tmp & 0xffff0000) | (val & 0xffff);	if ((offset % 4) == 2)		tmp = (tmp & 0x0000ffff) | ((val & 0xffff) << 16);	if (bus == 0)		pci0WriteConfigReg(offset, device, tmp);//  if (bus == 1) pci1WriteConfigReg (offset,device,tmp);	return PCIBIOS_SUCCESSFUL;}static int galileo_pcibios_write_config_byte(struct pci_dev *device,					     int offset, u8 val){	int dev, bus;	unsigned long tmp;

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
粉嫩蜜臀av国产精品网站| 欧美肥妇free| 国产激情91久久精品导航| 亚洲国产精品一区二区久久 | 亚洲一线二线三线视频| 国产欧美一区二区在线| 精品精品欲导航| 欧美一区日本一区韩国一区| 在线精品视频免费播放| 99久久精品国产一区二区三区| 国产在线视频一区二区| 免费久久精品视频| 日韩在线播放一区二区| 亚洲午夜日本在线观看| 中文字幕精品一区二区三区精品| 久久婷婷国产综合精品青草| 精品精品欲导航| 日韩一区二区在线观看视频播放| 欧美色电影在线| 91福利在线导航| 欧美在线播放高清精品| 99re视频这里只有精品| 91在线观看一区二区| av一区二区三区四区| 狠狠色伊人亚洲综合成人| 精品一区精品二区高清| 九九视频精品免费| 国产乱色国产精品免费视频| 国产主播一区二区三区| 国产乱妇无码大片在线观看| 国产一区二区三区av电影| 国产一区二区三区在线观看精品 | 另类专区欧美蜜桃臀第一页| 婷婷夜色潮精品综合在线| 五月天激情小说综合| 天堂va蜜桃一区二区三区漫画版| 亚洲色图欧美偷拍| 亚洲综合视频在线观看| 日韩精品国产欧美| 免费观看在线色综合| 日韩经典中文字幕一区| 久久66热re国产| 麻豆国产欧美日韩综合精品二区 | 综合久久久久久久| 亚洲精品乱码久久久久久日本蜜臀| 一区二区三区在线观看欧美| 一区二区三区不卡在线观看| 亚洲成人自拍网| 日本不卡高清视频| 国产精品一区二区在线看| 国产91在线观看| 色激情天天射综合网| 欧美一级二级三级乱码| 久久理论电影网| 国产精品久久久久久久午夜片| 欧美激情一区不卡| 亚洲福利电影网| 久久99最新地址| 成人激情视频网站| 欧美色手机在线观看| 欧美一级黄色片| 国产精品看片你懂得| 亚洲一区在线观看免费观看电影高清 | 色综合夜色一区| 91精品国产手机| 中文字幕国产一区| 亚洲国产一区二区a毛片| 激情久久五月天| 99精品欧美一区二区三区小说 | 一区二区三区四区在线| 青青国产91久久久久久| 高清成人在线观看| 欧美美女一区二区在线观看| 久久久久国产一区二区三区四区| 一区二区在线观看av| 久久99精品久久久久久| 99精品视频在线播放观看| 日韩美一区二区三区| 中文字幕的久久| 日韩精品一二三四| 99久精品国产| 亚洲精品在线三区| 亚洲一区二区三区不卡国产欧美| 激情五月播播久久久精品| 欧美在线影院一区二区| 久久久久久电影| 天天免费综合色| av一二三不卡影片| 欧美成va人片在线观看| 一二三四区精品视频| 成人在线视频首页| 91精品国产一区二区三区香蕉| 国产欧美日本一区二区三区| 青青青爽久久午夜综合久久午夜| 色哟哟在线观看一区二区三区| 久久久久久久网| 蜜桃视频一区二区| 欧美色国产精品| 亚洲黄色片在线观看| 久久99热这里只有精品| 色综合亚洲欧洲| 中文字幕av在线一区二区三区| 蜜桃在线一区二区三区| 欧美日韩国产a| 亚洲综合一区二区三区| caoporen国产精品视频| 日韩精品一区二区三区中文不卡| 亚洲国产婷婷综合在线精品| 国产宾馆实践打屁股91| 久久久蜜桃精品| 精品亚洲成av人在线观看| 欧美一卡2卡三卡4卡5免费| 亚洲成人免费观看| 91国产丝袜在线播放| 亚洲三级在线观看| 99精品视频中文字幕| 国产精品天美传媒| 国产黑丝在线一区二区三区| 精品成人a区在线观看| 麻豆国产精品一区二区三区| 91精品国产欧美日韩| 日日摸夜夜添夜夜添国产精品| 欧美日韩综合不卡| 亚洲自拍偷拍图区| 色综合色狠狠综合色| 亚洲精品视频在线观看免费| 91网址在线看| 一区二区三区在线视频观看| 99视频一区二区| 国产精品久久久久久福利一牛影视 | 在线综合视频播放| 一区二区三区免费在线观看| 欧洲精品在线观看| 亚洲不卡在线观看| 欧美一级淫片007| 久久99精品久久久久久动态图 | 国产精品国产三级国产aⅴ中文| 国产一区二区三区久久久| 2020国产精品久久精品美国| 国产乱淫av一区二区三区| 中文字幕第一区二区| 99久久精品情趣| 一区二区三区欧美久久| 日韩一级片在线观看| 成人av综合在线| 日韩精品成人一区二区在线| 日本一区二区三区高清不卡| 91黄色免费版| 国产在线视频一区二区三区| 一区二区视频在线| 欧美成人激情免费网| 色哟哟日韩精品| 国产一区二区三区视频在线播放| 中文字幕一区二区三中文字幕| 欧美日韩成人综合天天影院| 成人中文字幕电影| 日韩和欧美的一区| 国产精品久久精品日日| 日韩一卡二卡三卡国产欧美| 99国产精品国产精品久久| 免费成人在线观看视频| 亚洲天堂久久久久久久| 精品国产一区二区三区久久影院| 色欲综合视频天天天| 国产一区二区三区免费| 亚洲国产视频一区| 国产精品污网站| 欧美成人综合网站| 欧美日韩精品一区二区三区四区 | 亚洲日本va午夜在线电影| 精品福利在线导航| 欧美色图第一页| 99久久99精品久久久久久| 经典三级在线一区| 日韩激情一区二区| 亚洲综合色自拍一区| 国产精品国产三级国产aⅴ原创 | 亚洲美女屁股眼交| 国产欧美日韩精品一区| 欧美tickling挠脚心丨vk| 欧美视频在线观看一区| av电影在线观看不卡| 国产原创一区二区三区| 日韩av电影免费观看高清完整版| 亚洲男人天堂av网| 国产精品麻豆久久久| 久久精品人人做人人爽97| 日韩一级欧美一级| 欧美日韩国产a| 欧美亚洲日本一区| bt欧美亚洲午夜电影天堂| 国产iv一区二区三区| 国产米奇在线777精品观看| 日韩精品久久理论片| 日韩中文字幕91| 亚洲成a人v欧美综合天堂下载 | 欧美国产精品劲爆| 久久亚洲免费视频| 亚洲精品一区二区三区蜜桃下载 | 日韩二区三区在线观看|