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

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

?? pcmcia.c

?? 嵌入式試驗箱S3C2410的bootloader源代碼
?? C
字號:
#include <common.h>#include <mpc8xx.h>#include <pcmcia.h>#undef	CONFIG_PCMCIA#if	(CONFIG_COMMANDS & CFG_CMD_PCMCIA)#define	CONFIG_PCMCIA#endif#if	(CONFIG_COMMANDS & CFG_CMD_IDE) && defined(CONFIG_IDE_8xx_PCCARD)#define	CONFIG_PCMCIA#endif#ifdef	CONFIG_PCMCIA/* some sane bit macros */#define _BD(_b)				(1U << (31-(_b)))#define _BDR(_l, _h)			(((((1U << (31-(_l))) - 1) << 1) | 1) & ~((1U << (31-(_h))) - 1))#define _BW(_b)				(1U << (15-(_b)))#define _BWR(_l, _h)			(((((1U << (15-(_l))) - 1) << 1) | 1) & ~((1U << (15-(_h))) - 1))#define _BB(_b)				(1U << (7-(_b)))#define _BBR(_l, _h)			(((((1U << (7-(_l))) - 1) << 1) | 1) & ~((1U << (7-(_h))) - 1))#define _B(_b)				_BD(_b)#define _BR(_l, _h)			_BDR(_l, _h)#define PCMCIA_BOARD_MSG "NETTA"static const unsigned short vppd_masks[2] = { _BW(14), _BW(15) };static void cfg_vppd(int no){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask;	if ((unsigned int)no >= sizeof(vppd_masks)/sizeof(vppd_masks[0]))		return;	mask = vppd_masks[no];	immap->im_ioport.iop_papar &= ~mask;	immap->im_ioport.iop_paodr &= ~mask;	immap->im_ioport.iop_padir |=  mask;}static void set_vppd(int no, int what){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask;	if ((unsigned int)no >= sizeof(vppd_masks)/sizeof(vppd_masks[0]))		return;	mask = vppd_masks[no];	if (what)		immap->im_ioport.iop_padat |= mask;	else		immap->im_ioport.iop_padat &= ~mask;}static const unsigned short vccd_masks[2] = { _BW(10), _BW(6) };static void cfg_vccd(int no){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask;	if ((unsigned int)no >= sizeof(vccd_masks)/sizeof(vccd_masks[0]))		return;	mask = vccd_masks[no];	immap->im_ioport.iop_papar &= ~mask;	immap->im_ioport.iop_paodr &= ~mask;	immap->im_ioport.iop_padir |=  mask;}static void set_vccd(int no, int what){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask;	if ((unsigned int)no >= sizeof(vccd_masks)/sizeof(vccd_masks[0]))		return;	mask = vccd_masks[no];	if (what)		immap->im_ioport.iop_padat |= mask;	else		immap->im_ioport.iop_padat &= ~mask;}static const unsigned short oc_mask = _BW(8);static void cfg_oc(void){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask = oc_mask;	immap->im_ioport.iop_pcdir &= ~mask;	immap->im_ioport.iop_pcso  &= ~mask;	immap->im_ioport.iop_pcint &= ~mask;	immap->im_ioport.iop_pcpar &= ~mask;}static int get_oc(void){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask = oc_mask;	int what;	what = !!(immap->im_ioport.iop_pcdat & mask);;	return what;}static const unsigned short shdn_mask = _BW(12);static void cfg_shdn(void){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask;	mask = shdn_mask;	immap->im_ioport.iop_papar &= ~mask;	immap->im_ioport.iop_paodr &= ~mask;	immap->im_ioport.iop_padir |=  mask;}static void set_shdn(int what){	volatile immap_t *immap = (immap_t *)CFG_IMMR;	unsigned short mask;	mask = shdn_mask;	if (what)		immap->im_ioport.iop_padat |= mask;	else		immap->im_ioport.iop_padat &= ~mask;}static void cfg_ports (void){	volatile immap_t	*immap;	volatile cpm8xx_t	*cp;	immap = (immap_t *)CFG_IMMR;	cp    = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));	cfg_vppd(0); cfg_vppd(1);	/* VPPD0,VPPD1 VAVPP => Hi-Z */	cfg_vccd(0); cfg_vccd(1);	/* 3V and 5V off */	cfg_shdn();	cfg_oc();	/*	* Configure Port A for TPS2211 PC-Card Power-Interface Switch	*	* Switch off all voltages, assert shutdown	*/	set_vppd(0, 1); set_vppd(1, 1);	set_vccd(0, 0); set_vccd(1, 0);	set_shdn(1);	udelay(100000);}int pcmcia_hardware_enable(int slot){	volatile immap_t	*immap;	volatile cpm8xx_t	*cp;	volatile pcmconf8xx_t	*pcmp;	volatile sysconf8xx_t	*sysp;	uint reg, pipr, mask;	int i;	debug ("hardware_enable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);	udelay(10000);	immap = (immap_t *)CFG_IMMR;	sysp  = (sysconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_siu_conf));	pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));	cp    = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));	/* Configure Ports for TPS2211A PC-Card Power-Interface Switch */	cfg_ports ();	/* clear interrupt state, and disable interrupts */	pcmp->pcmc_pscr =  PCMCIA_MASK(_slot_);	pcmp->pcmc_per &= ~PCMCIA_MASK(_slot_);	/*	* Disable interrupts, DMA, and PCMCIA buffers	* (isolate the interface) and assert RESET signal	*/	debug ("Disable PCMCIA buffers and assert RESET\n");	reg  = 0;	reg |= __MY_PCMCIA_GCRX_CXRESET;	/* active high */	reg |= __MY_PCMCIA_GCRX_CXOE;		/* active low  */	PCMCIA_PGCRX(_slot_) = reg;	udelay(500);	/*	* Make sure there is a card in the slot, then configure the interface.	*/	udelay(10000);	debug ("[%d] %s: PIPR(%p)=0x%x\n",	       __LINE__,__FUNCTION__,	       &(pcmp->pcmc_pipr),pcmp->pcmc_pipr);	if (pcmp->pcmc_pipr & (0x18000000 >> (slot << 4))) {		printf ("   No Card found\n");		return (1);	}	/*	* Power On: Set VAVCC to 3.3V or 5V, set VAVPP to Hi-Z	*/	mask = PCMCIA_VS1(slot) | PCMCIA_VS2(slot);	pipr = pcmp->pcmc_pipr;	debug ("PIPR: 0x%x ==> VS1=o%s, VS2=o%s\n",	       pipr,	       (reg&PCMCIA_VS1(slot))?"n":"ff",	       (reg&PCMCIA_VS2(slot))?"n":"ff");	if ((pipr & mask) == mask) {		set_vppd(0, 1); set_vppd(1, 1); 		/* VAVPP => Hi-Z */		set_vccd(0, 0); set_vccd(1, 1); 		/* 5V on, 3V off */		puts (" 5.0V card found: ");	} else {		set_vppd(0, 1); set_vppd(1, 1); 		/* VAVPP => Hi-Z */		set_vccd(0, 1); set_vccd(1, 0); 		/* 5V off, 3V on */		puts (" 3.3V card found: ");	}	/*  Wait 500 ms; use this to check for over-current */	for (i=0; i<5000; ++i) {		if (!get_oc()) {			printf ("   *** Overcurrent - Safety shutdown ***\n");			set_vccd(0, 0); set_vccd(1, 0); 		/* VAVPP => Hi-Z */			return (1);		}		udelay (100);	}	debug ("Enable PCMCIA buffers and stop RESET\n");	reg  =  PCMCIA_PGCRX(_slot_);	reg &= ~__MY_PCMCIA_GCRX_CXRESET;	/* active high */	reg &= ~__MY_PCMCIA_GCRX_CXOE;		/* active low  */	PCMCIA_PGCRX(_slot_) = reg;	udelay(250000);	/* some cards need >150 ms to come up :-( */	debug ("# hardware_enable done\n");	return (0);}#if (CONFIG_COMMANDS & CFG_CMD_PCMCIA)int pcmcia_hardware_disable(int slot){	volatile immap_t	*immap;	volatile pcmconf8xx_t	*pcmp;	u_long reg;	debug ("hardware_disable: " PCMCIA_BOARD_MSG " Slot %c\n", 'A'+slot);	immap = (immap_t *)CFG_IMMR;	pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));	/* Configure PCMCIA General Control Register */	debug ("Disable PCMCIA buffers and assert RESET\n");	reg  = 0;	reg |= __MY_PCMCIA_GCRX_CXRESET;	/* active high */	reg |= __MY_PCMCIA_GCRX_CXOE;		/* active low  */	PCMCIA_PGCRX(_slot_) = reg;	/* All voltages off / Hi-Z */	set_vppd(0, 1); set_vppd(1, 1);	set_vccd(0, 1); set_vccd(1, 1);	udelay(10000);	return (0);}#endif	/* CFG_CMD_PCMCIA */int pcmcia_voltage_set(int slot, int vcc, int vpp){	volatile immap_t	*immap;	volatile cpm8xx_t	*cp;	volatile pcmconf8xx_t	*pcmp;	u_long reg;	ushort sreg;	debug ("voltage_set: "			PCMCIA_BOARD_MSG			" Slot %c, Vcc=%d.%d, Vpp=%d.%d\n",	'A'+slot, vcc/10, vcc%10, vpp/10, vcc%10);	immap = (immap_t *)CFG_IMMR;	cp    = (cpm8xx_t *)(&(((immap_t *)CFG_IMMR)->im_cpm));	pcmp  = (pcmconf8xx_t *)(&(((immap_t *)CFG_IMMR)->im_pcmcia));	/*	* Disable PCMCIA buffers (isolate the interface)	* and assert RESET signal	*/	debug ("Disable PCMCIA buffers and assert RESET\n");	reg  = PCMCIA_PGCRX(_slot_);	reg |= __MY_PCMCIA_GCRX_CXRESET;	/* active high */	reg |= __MY_PCMCIA_GCRX_CXOE;		/* active low  */	PCMCIA_PGCRX(_slot_) = reg;	udelay(500);	/*	* Configure Port C pins for	* 5 Volts Enable and 3 Volts enable,	* Turn all power pins to Hi-Z	*/	debug ("PCMCIA power OFF\n");	cfg_ports ();	/* Enables switch, but all in Hi-Z */	sreg  = immap->im_ioport.iop_pcdat;	set_vppd(0, 1); set_vppd(1, 1);	switch(vcc) {		case  0:			break;	/* Switch off		*/		case 33:			set_vccd(0, 1); set_vccd(1, 0);			break;		case 50:			set_vccd(0, 0); set_vccd(1, 1);			break;		default:			goto done;	}	/* Checking supported voltages */	debug ("PIPR: 0x%x --> %s\n",	       pcmp->pcmc_pipr,	       (pcmp->pcmc_pipr & 0x00008000) ? "only 5 V" : "can do 3.3V");done:			debug ("Enable PCMCIA buffers and stop RESET\n");	reg  =  PCMCIA_PGCRX(_slot_);	reg &= ~__MY_PCMCIA_GCRX_CXRESET;	/* active high */	reg &= ~__MY_PCMCIA_GCRX_CXOE;		/* active low  */	PCMCIA_PGCRX(_slot_) = reg;	udelay(500);	debug ("voltage_set: " PCMCIA_BOARD_MSG " Slot %c, DONE\n",	       slot+'A');	return (0);}#endif	/* CONFIG_PCMCIA */

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色av综合在线| 精品国产伦一区二区三区观看方式 | 国产一区不卡在线| 91激情在线视频| 国产欧美日韩在线观看| 日日夜夜精品视频天天综合网| 成人不卡免费av| 国产日韩欧美不卡| 精品一区二区在线视频| 精品国产不卡一区二区三区| 亚洲国产视频a| 91污在线观看| 中文字幕一区av| 成人黄色网址在线观看| 欧美精品一区男女天堂| 日本三级韩国三级欧美三级| 91成人看片片| 亚洲欧美日韩久久| 色婷婷香蕉在线一区二区| 国产精品福利在线播放| 国产精品1024久久| 国产视频视频一区| 国产精品一区一区| 久久婷婷国产综合精品青草| 日本欧洲一区二区| 欧美老年两性高潮| 日日摸夜夜添夜夜添精品视频| 日本道色综合久久| 亚洲精品老司机| 国产精品网站在线观看| 国产一区不卡精品| 国产女人aaa级久久久级| 国产传媒久久文化传媒| 精品99一区二区| 国产成人免费视频精品含羞草妖精 | 婷婷开心激情综合| 欧美日韩五月天| 午夜不卡av免费| 91精品国产91久久综合桃花 | 欧美日韩激情一区| 免费三级欧美电影| 久久免费偷拍视频| 成人av电影免费在线播放| 国产精品精品国产色婷婷| 不卡的av网站| 亚洲成人动漫在线免费观看| 欧美精品在线视频| 久久99久久精品| 中文字幕精品在线不卡| 一本久久a久久免费精品不卡| 亚洲精品国产无天堂网2021 | 日韩高清不卡在线| 欧美一区二区精品在线| 国产精品18久久久久久久久久久久 | 成人app在线观看| 亚洲人成精品久久久久| 4hu四虎永久在线影院成人| 国产综合色精品一区二区三区| 国产精品天天摸av网| 91在线国产福利| 视频一区二区三区在线| 久久久99精品久久| 在线观看亚洲一区| 激情五月婷婷综合网| 国产精品久久久久久福利一牛影视| 色综合欧美在线视频区| 麻豆精品一区二区三区| 亚洲欧洲日本在线| 日韩精品一区国产麻豆| 成人免费毛片app| 日韩电影在线免费看| 国产精品久久久久影院亚瑟| 欧美人牲a欧美精品| 国产精品99久久久| 午夜精品福利一区二区蜜股av| 久久久精品欧美丰满| 欧美日韩二区三区| 91在线观看美女| 国产一区二区三区在线观看精品 | 中文字幕欧美日韩一区| 精品视频在线免费看| 成人污污视频在线观看| 捆绑紧缚一区二区三区视频| 中文字幕中文在线不卡住| 精品捆绑美女sm三区| 91精品91久久久中77777| 国产iv一区二区三区| 丝袜亚洲另类欧美综合| 亚洲伦理在线精品| 久久久久国产成人精品亚洲午夜| 欧美三级电影精品| 色偷偷久久人人79超碰人人澡| 国产一区二区久久| www.66久久| 国产在线精品一区二区夜色| 五月天一区二区| 亚洲国产aⅴ天堂久久| 亚洲欧美偷拍三级| 日韩伦理电影网| 国产精品美女久久久久久2018| 欧美成人伊人久久综合网| 91精品国产综合久久精品app| 在线看日韩精品电影| 一本色道久久综合亚洲aⅴ蜜桃| 国产99久久久国产精品| 极品少妇xxxx偷拍精品少妇| 男人的天堂久久精品| 日韩高清国产一区在线| 午夜精品福利久久久| 亚洲综合色成人| 亚洲麻豆国产自偷在线| 亚洲欧美激情在线| 亚洲精品乱码久久久久久| 一区二区三区免费网站| 一区二区三区日韩在线观看| 国产精品伦一区二区三级视频| 欧美国产精品专区| 国产精品久久久久久久午夜片| 中文一区一区三区高中清不卡| 国产视频在线观看一区二区三区| 久久久精品tv| 国产精品免费丝袜| 亚洲免费看黄网站| 午夜天堂影视香蕉久久| 免费欧美高清视频| 国产激情一区二区三区四区| 国产激情视频一区二区在线观看 | 国产精品久久夜| 国产精品女上位| 最新日韩av在线| 一区二区欧美国产| 日韩精品免费专区| 狠狠色2019综合网| 91亚洲大成网污www| 欧美体内she精高潮| 欧美草草影院在线视频| 国产亚洲成aⅴ人片在线观看| 国产精品久久久久久久久久免费看| 日韩毛片在线免费观看| 日韩主播视频在线| 国产91综合一区在线观看| 91天堂素人约啪| 欧美一区二区福利在线| 欧美激情中文字幕一区二区| 一区二区三区在线播放| 免播放器亚洲一区| 99视频精品在线| 欧美一二三区精品| 国产精品毛片高清在线完整版| 亚洲一二三区不卡| 国产大陆亚洲精品国产| 欧美专区在线观看一区| 久久综合99re88久久爱| 一区二区三区欧美亚洲| 国产在线视视频有精品| 在线亚洲免费视频| 国产精品入口麻豆原神| 天堂影院一区二区| av不卡在线播放| 精品91自产拍在线观看一区| 一区二区成人在线视频| 国产成人在线色| 日韩欧美aaaaaa| 亚洲综合区在线| fc2成人免费人成在线观看播放 | 亚洲免费观看高清完整版在线| 日本成人在线电影网| 91蜜桃视频在线| 日韩精品一区二区三区swag| 日韩美女视频一区二区| 国产成人精品亚洲日本在线桃色| 欧美日韩精品久久久| 中文字幕一区视频| 国产另类ts人妖一区二区| 欧美一级一区二区| 亚洲国产一区二区三区青草影视| 成人国产精品免费观看动漫| 日韩欧美亚洲一区二区| 亚洲一区中文日韩| 91在线免费看| 国产美女在线观看一区| 欧美亚洲高清一区二区三区不卡| 国产午夜亚洲精品理论片色戒| 人妖欧美一区二区| 欧美日韩精品是欧美日韩精品| 亚洲欧洲性图库| 成人一区二区三区视频在线观看 | 国产福利精品一区二区| 日韩一区二区免费高清| 日韩国产欧美在线视频| 欧美图区在线视频| 亚洲成人av中文| 欧美日韩亚洲丝袜制服| 亚洲一卡二卡三卡四卡无卡久久 | 亚洲一区在线观看免费观看电影高清 | 欧美午夜精品免费| 亚洲国产精品一区二区尤物区| 欧美在线视频不卡| 亚洲国产视频网站| 欧美高清视频在线高清观看mv色露露十八 |