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

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

?? powerspan.c

?? U-boot源碼 ARM7啟動代碼
?? C
?? 第 1 頁 / 共 2 頁
字號:
/** * @file powerspan.c Source file for PowerSpan II code. *//* * (C) Copyright 2005 * AMIRIX Systems Inc. * * See file CREDITS for list of people who contributed to this * project. * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License as * published by the Free Software Foundation; either version 2 of * the License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 59 Temple Place, Suite 330, Boston, * MA 02111-1307 USA */#include <common.h>#include <command.h>#include <asm/processor.h>#include "powerspan.h"#define tolower(x) x#include "ap1000.h"#ifdef INCLUDE_PCI/** Write one byte with byte swapping.  * @param  addr [IN] the address to write to  * @param  val  [IN] the value to write  */void write1 (unsigned long addr, unsigned char val){	volatile unsigned char *p = (volatile unsigned char *) addr;#ifdef VERBOSITY	if (gVerbosityLevel > 1) {		printf ("write1: addr=%08x val=%02x\n", addr, val);	}#endif	*p = val;	PSII_SYNC ();}/** Read one byte with byte swapping.  * @param  addr  [IN] the address to read from  * @return the value at addr  */unsigned char read1 (unsigned long addr){	unsigned char val;	volatile unsigned char *p = (volatile unsigned char *) addr;	val = *p;	PSII_SYNC ();#ifdef VERBOSITY	if (gVerbosityLevel > 1) {		printf ("read1: addr=%08x val=%02x\n", addr, val);	}#endif	return val;}/** Write one 2-byte word with byte swapping.  * @param  addr  [IN] the address to write to  * @param  val   [IN] the value to write  */void write2 (unsigned long addr, unsigned short val){	volatile unsigned short *p = (volatile unsigned short *) addr;#ifdef VERBOSITY	if (gVerbosityLevel > 1) {		printf ("write2: addr=%08x val=%04x -> *p=%04x\n", addr, val,			((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8));	}#endif	*p = ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8);	PSII_SYNC ();}/** Read one 2-byte word with byte swapping.  * @param  addr  [IN] the address to read from  * @return the value at addr  */unsigned short read2 (unsigned long addr){	unsigned short val;	volatile unsigned short *p = (volatile unsigned short *) addr;	val = *p;	val = ((val & 0xFF00) >> 8) | ((val & 0x00FF) << 8);	PSII_SYNC ();#ifdef VERBOSITY	if (gVerbosityLevel > 1) {		printf ("read2: addr=%08x *p=%04x -> val=%04x\n", addr, *p,			val);	}#endif	return val;}/** Write one 4-byte word with byte swapping.  * @param  addr  [IN] the address to write to  * @param  val   [IN] the value to write  */void write4 (unsigned long addr, unsigned long val){	volatile unsigned long *p = (volatile unsigned long *) addr;#ifdef VERBOSITY	if (gVerbosityLevel > 1) {		printf ("write4: addr=%08x val=%08x -> *p=%08x\n", addr, val,			((val & 0xFF000000) >> 24) |			((val & 0x000000FF) << 24) |			((val & 0x00FF0000) >>  8) |			((val & 0x0000FF00) <<  8));	}#endif	*p = ((val & 0xFF000000) >> 24) | ((val & 0x000000FF) << 24) |		((val & 0x00FF0000) >> 8) | ((val & 0x0000FF00) << 8);	PSII_SYNC ();}/** Read one 4-byte word with byte swapping.  * @param  addr  [IN] the address to read from  * @return the value at addr  */unsigned long read4 (unsigned long addr){	unsigned long val;	volatile unsigned long *p = (volatile unsigned long *) addr;	val = *p;	val = ((val & 0xFF000000) >> 24) | ((val & 0x000000FF) << 24) |		((val & 0x00FF0000) >> 8) | ((val & 0x0000FF00) << 8);	PSII_SYNC ();#ifdef VERBOSITY	if (gVerbosityLevel > 1) {		printf ("read4: addr=%08x *p=%08x -> val=%08x\n", addr, *p,			val);	}#endif	return val;}int PCIReadConfig (int bus, int dev, int fn, int reg, int width,		   unsigned long *val){	unsigned int conAdrVal;	unsigned int conDataReg = REG_CONFIG_DATA;	unsigned int status;	int ret_val = 0;	/* DEST bit hardcoded to 1: local pci is PCI-2 */	/* TYPE bit is hardcoded to 1: all config cycles are local */	conAdrVal = (1 << 24)		| ((bus & 0xFF) << 16)		| ((dev & 0xFF) << 11)		| ((fn & 0x07) << 8)		| (reg & 0xFC);	/* clear any pending master aborts */	write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);	/* Load the conAdrVal value first, then read from pb_conf_data */	write4 (REG_CONFIG_ADDRESS, conAdrVal);	PSII_SYNC ();	/* Note: documentation does not match the pspan library code */	/* Note: *pData comes back as -1 if device is not present */	switch (width) {	case 4:		*(unsigned int *) val = read4 (conDataReg);		break;	case 2:		*(unsigned short *) val = read2 (conDataReg);		break;	case 1:		*(unsigned char *) val = read1 (conDataReg);		break;	default:		ret_val = ILLEGAL_REG_OFFSET;		break;	}	PSII_SYNC ();	/* clear any pending master aborts */	status = read4 (REG_P1_CSR);	if (status & CLEAR_MASTER_ABORT) {		ret_val = NO_DEVICE_FOUND;		write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);	}	return ret_val;}int PCIWriteConfig (int bus, int dev, int fn, int reg, int width,		    unsigned long val){	unsigned int conAdrVal;	unsigned int conDataReg = REG_CONFIG_DATA;	unsigned int status;	int ret_val = 0;	/* DEST bit hardcoded to 1: local pci is PCI-2 */	/* TYPE bit is hardcoded to 1: all config cycles are local */	conAdrVal = (1 << 24)		| ((bus & 0xFF) << 16)		| ((dev & 0xFF) << 11)		| ((fn & 0x07) << 8)		| (reg & 0xFC);	/* clear any pending master aborts */	write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);	/* Load the conAdrVal value first, then read from pb_conf_data */	write4 (REG_CONFIG_ADDRESS, conAdrVal);	PSII_SYNC ();	/* Note: documentation does not match the pspan library code */	/* Note: *pData comes back as -1 if device is not present */	switch (width) {	case 4:		write4 (conDataReg, val);		break;	case 2:		write2 (conDataReg, val);		break;	case 1:		write1 (conDataReg, val);		break;	default:		ret_val = ILLEGAL_REG_OFFSET;		break;	}	PSII_SYNC ();	/* clear any pending master aborts */	status = read4 (REG_P1_CSR);	if (status & CLEAR_MASTER_ABORT) {		ret_val = NO_DEVICE_FOUND;		write4 (REG_P1_CSR, CLEAR_MASTER_ABORT);	}	return ret_val;}int pci_read_config_byte (int bus, int dev, int fn, int reg,			  unsigned char *val){	unsigned long read_val;	int ret_val;	ret_val = PCIReadConfig (bus, dev, fn, reg, 1, &read_val);	*val = read_val & 0xFF;	return ret_val;}int pci_write_config_byte (int bus, int dev, int fn, int reg,			   unsigned char val){	return PCIWriteConfig (bus, dev, fn, reg, 1, val);}int pci_read_config_word (int bus, int dev, int fn, int reg,			  unsigned short *val){	unsigned long read_val;	int ret_val;	ret_val = PCIReadConfig (bus, dev, fn, reg, 2, &read_val);	*val = read_val & 0xFFFF;	return ret_val;}int pci_write_config_word (int bus, int dev, int fn, int reg,			   unsigned short val){	return PCIWriteConfig (bus, dev, fn, reg, 2, val);}int pci_read_config_dword (int bus, int dev, int fn, int reg,			   unsigned long *val){	return PCIReadConfig (bus, dev, fn, reg, 4, val);}int pci_write_config_dword (int bus, int dev, int fn, int reg,			    unsigned long val){	return PCIWriteConfig (bus, dev, fn, reg, 4, val);}#endif /* INCLUDE_PCI */int I2CAccess (unsigned char theI2CAddress, unsigned char theDevCode,	       unsigned char theChipSel, unsigned char *theValue, int RWFlag){	int ret_val = 0;	unsigned int reg_value;	reg_value = PowerSpanRead (REG_I2C_CSR);	if (reg_value & I2C_CSR_ACT) {		printf ("Error: I2C busy\n");		ret_val = I2C_BUSY;	} else {		reg_value = ((theI2CAddress & 0xFF) << 24)			| ((theDevCode & 0x0F) << 12)			| ((theChipSel & 0x07) << 9)			| I2C_CSR_ERR;		if (RWFlag == I2C_WRITE) {			reg_value |= I2C_CSR_RW | ((*theValue & 0xFF) << 16);		}		PowerSpanWrite (REG_I2C_CSR, reg_value);		udelay (1);		do {			reg_value = PowerSpanRead (REG_I2C_CSR);			if ((reg_value & I2C_CSR_ACT) == 0) {				if (reg_value & I2C_CSR_ERR) {					ret_val = I2C_ERR;				} else {					*theValue =						(reg_value & I2C_CSR_DATA) >>						16;				}			}		} while (reg_value & I2C_CSR_ACT);	}	return ret_val;}int EEPROMRead (unsigned char theI2CAddress, unsigned char *theValue){	return I2CAccess (theI2CAddress, I2C_EEPROM_DEV, I2C_EEPROM_CHIP_SEL,			  theValue, I2C_READ);}int EEPROMWrite (unsigned char theI2CAddress, unsigned char theValue){	return I2CAccess (theI2CAddress, I2C_EEPROM_DEV, I2C_EEPROM_CHIP_SEL,			  &theValue, I2C_WRITE);}int do_eeprom (cmd_tbl_t * cmdtp, int flag, int argc, char *argv[]){	char cmd;	int ret_val = 0;	unsigned int address = 0;	unsigned char value = 1;	unsigned char read_value;	int ii;	int error = 0;	unsigned char *mem_ptr;

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
麻豆精品一二三| 樱花草国产18久久久久| 欧美另类高清zo欧美| 91亚洲精品久久久蜜桃| 91精品一区二区三区在线观看| 91视频观看视频| 色综合天天综合在线视频| 亚洲综合激情另类小说区| 国产精品私房写真福利视频| 国产精品理伦片| 亚洲欧美日韩成人高清在线一区| 国产精品久久久久久久久免费丝袜 | 亚洲欧美激情插| 一区av在线播放| 一区二区三区**美女毛片| 亚洲一区二三区| 免费高清不卡av| 国产成人精品影视| 91香蕉视频黄| 欧美精品丝袜中出| 久久久久国产一区二区三区四区| 中日韩av电影| 亚洲国产欧美一区二区三区丁香婷| 婷婷综合久久一区二区三区| 极品少妇一区二区| 岛国精品在线播放| 欧美男生操女生| 国产亚洲va综合人人澡精品| 亚洲精品午夜久久久| 首页综合国产亚洲丝袜| 国产精品99久久久| 色综合久久88色综合天天| 日韩一区二区三| 国产精品美女一区二区三区| 亚洲国产成人91porn| 国产乱子轮精品视频| 欧美日韩在线播放| 国产色产综合产在线视频| 亚州成人在线电影| 国产黑丝在线一区二区三区| 欧美日韩日本视频| 亚洲视频资源在线| 久久99久久久久| 欧美日韩在线播| 中文字幕一区二区日韩精品绯色| 裸体歌舞表演一区二区| 色吧成人激情小说| 国产日韩欧美精品电影三级在线| 亚洲第一狼人社区| 91影院在线观看| 久久综合av免费| 午夜视频一区在线观看| 99re这里只有精品首页| www激情久久| 蜜臀av性久久久久蜜臀aⅴ四虎| 91美女片黄在线观看| 国产欧美精品日韩区二区麻豆天美| 无码av中文一区二区三区桃花岛| 成人免费福利片| 久久久久久久网| 久久99精品国产麻豆婷婷| 欧美日韩一区不卡| 亚洲永久精品国产| 一本一本大道香蕉久在线精品| 久久综合色天天久久综合图片| 日韩精品亚洲专区| 欧美日韩国产免费一区二区| 一区二区三区**美女毛片| 色综合一个色综合亚洲| 1024亚洲合集| 91亚洲精品一区二区乱码| 国产精品久久久久久久久搜平片| 国产成人免费在线观看| 日本一区二区三区电影| 成人综合激情网| 国产精品乱子久久久久| a级精品国产片在线观看| 中文一区二区完整视频在线观看| 国产一区二区三区四区五区入口 | 在线成人免费观看| 日韩国产成人精品| 日韩美女一区二区三区| 九一九一国产精品| 国产三级精品三级在线专区| 丁香另类激情小说| 亚洲欧美视频一区| 欧美日韩激情在线| 蜜臀av性久久久久蜜臀av麻豆| 欧美一区二区三区日韩| 国产午夜精品久久久久久免费视| 九一久久久久久| 国产欧美日韩在线| 一本一道综合狠狠老| 亚洲国产另类av| 2021国产精品久久精品| 国产成人免费视频一区| 亚洲日韩欧美一区二区在线| 在线观看国产日韩| 精品一区二区三区不卡| 国产精品伦理在线| 欧美人伦禁忌dvd放荡欲情| 精品一区二区精品| 国产精品的网站| 91精品啪在线观看国产60岁| 韩国毛片一区二区三区| 亚洲欧美激情一区二区| 欧美一区二区三区免费观看视频 | 国产欧美一区二区在线| 91色乱码一区二区三区| 日韩高清不卡在线| 国产精品久久久久国产精品日日| 91免费看视频| 久久se精品一区精品二区| 中文字幕日韩一区| 日韩欧美黄色影院| 91性感美女视频| 精品伊人久久久久7777人| 亚洲人成亚洲人成在线观看图片| 7777精品伊人久久久大香线蕉经典版下载| 国产一区视频网站| 五月激情综合网| 亚洲欧洲另类国产综合| 精品卡一卡二卡三卡四在线| 色综合久久久久久久| 韩国视频一区二区| 水蜜桃久久夜色精品一区的特点| 国产精品伦理在线| 欧美成人一区二区| 欧美日韩mp4| 一本大道久久a久久精品综合| 国产做a爰片久久毛片| 偷拍一区二区三区| 亚洲一区二区三区爽爽爽爽爽| 国产欧美日本一区二区三区| 欧美成人三级在线| 91精品国产高清一区二区三区蜜臀 | 91丝袜美腿高跟国产极品老师 | 久久精品国产成人一区二区三区 | 久久99久久久欧美国产| 五月天丁香久久| 亚洲成人激情av| 亚洲国产欧美一区二区三区丁香婷| 国产精品久久二区二区| 亚洲国产高清在线观看视频| 久久综合久久综合久久综合| 日韩三级.com| 欧美日本高清视频在线观看| 91成人免费在线| 色成人在线视频| 欧美色图第一页| 欧美美女黄视频| 在线观看91精品国产麻豆| 欧美精品日韩一本| 制服丝袜日韩国产| 日韩午夜小视频| 久久亚洲综合色| 欧美激情在线看| 亚洲三级电影网站| 亚洲一区二区偷拍精品| 天天操天天干天天综合网| 午夜亚洲福利老司机| 麻豆久久一区二区| 国产在线精品一区二区夜色 | 亚洲图片欧美激情| 亚洲三级久久久| 亚洲午夜三级在线| 日本亚洲免费观看| 国产激情精品久久久第一区二区 | 亚洲精品大片www| 性久久久久久久久久久久| 日韩精品一卡二卡三卡四卡无卡| 天天操天天综合网| 国产成都精品91一区二区三| av不卡免费在线观看| 欧美在线观看视频一区二区三区| 欧美午夜一区二区| 久久综合色一综合色88| 中文字幕一区二区视频| 亚洲a一区二区| 国产乱码精品1区2区3区| 97se亚洲国产综合自在线观| 欧美色国产精品| 久久伊99综合婷婷久久伊| 亚洲欧美综合色| 日本va欧美va欧美va精品| 成人综合婷婷国产精品久久免费| 91福利区一区二区三区| 欧美精品一区二区三区蜜桃| 亚洲欧美中日韩| 韩日欧美一区二区三区| 色综合久久综合网欧美综合网| 欧美一级夜夜爽| 综合色天天鬼久久鬼色| 免费高清在线一区| 91亚洲精品久久久蜜桃| 欧美xxxxx牲另类人与| 亚洲精品福利视频网站| 国产91精品在线观看| 欧美精品一二三| 一区二区在线电影|