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

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

?? m8xx_tty.c

?? 根據添加了fs2410平臺的arch目錄
?? C
字號:
/* * BK Id: SCCS/s.m8xx_tty.c 1.10 09/14/01 19:30:13 trini *//* Minimal serial functions needed to send messages out the serial * port on the MBX console. * * The MBX uxes SMC1 for the serial port.  We reset the port and use * only the first BD that EPPC-Bug set up as a character FIFO. * * Later versions (at least 1.4, maybe earlier) of the MBX EPPC-Bug * use COM1 instead of SMC1 as the console port.  This kinda sucks * for the rest of the kernel, so here we force the use of SMC1 again. */#include <linux/config.h>#include <linux/types.h>#include <asm/uaccess.h>#include <asm/mpc8xx.h>#include <asm/commproc.h>#ifdef CONFIG_MBX#define MBX_CSR1	((volatile u_char *)0xfa100000)#define CSR1_COMEN	(u_char)0x02#endif#ifdef TQM_SMC2_CONSOLE#define PROFF_CONS	PROFF_SMC2#define CPM_CR_CH_CONS	CPM_CR_CH_SMC2#define SMC_INDEX	1static volatile iop8xx_t *iopp = (iop8xx_t *)&(((immap_t *)IMAP_ADDR)->im_ioport);#else#define PROFF_CONS	PROFF_SMC1#define CPM_CR_CH_CONS	CPM_CR_CH_SMC1#define SMC_INDEX	0#endifstatic cpm8xx_t	*cpmp = (cpm8xx_t *)&(((immap_t *)IMAP_ADDR)->im_cpm);voidserial_init(bd_t *bd){	volatile smc_t		*sp;	volatile smc_uart_t	*up;	volatile cbd_t	*tbdf, *rbdf;	volatile cpm8xx_t	*cp;	uint	dpaddr, memaddr, ui;	cp = cpmp;	sp = (smc_t*)&(cp->cp_smc[SMC_INDEX]);	up = (smc_uart_t *)&cp->cp_dparam[PROFF_CONS];	/* Disable transmitter/receiver.	*/	sp->smc_smcmr &= ~(SMCMR_REN | SMCMR_TEN);#ifdef CONFIG_FADS	/* Enable SMC1/2 transceivers.	*/	*((volatile uint *)BCSR1) &= ~(BCSR1_RS232EN_1|BCSR1_RS232EN_2);#endif#ifndef CONFIG_MBX	{	/* Initialize SMCx and use it for the console port.	 */	/* Enable SDMA.	*/	((immap_t *)IMAP_ADDR)->im_siu_conf.sc_sdcr = 1;#ifdef TQM_SMC2_CONSOLE	/* Use Port A for SMC2 instead of other functions.	*/	iopp->iop_papar |=  0x00c0;	iopp->iop_padir &= ~0x00c0;	iopp->iop_paodr &= ~0x00c0;#else	/* Use Port B for SMCs instead of other functions.	*/	cp->cp_pbpar |= 0x00000cc0;	cp->cp_pbdir &= ~0x00000cc0;	cp->cp_pbodr &= ~0x00000cc0;#endif	/* Allocate space for two buffer descriptors in the DP ram.	 * For now, this address seems OK, but it may have to	 * change with newer versions of the firmware.	 */	dpaddr = 0x0800;	/* Grab a few bytes from the top of memory for SMC FIFOs.	 */	memaddr = (bd->bi_memsize - 32) & ~15;	/* Set the physical address of the host memory buffers in	 * the buffer descriptors.	 */	rbdf = (cbd_t *)&cp->cp_dpmem[dpaddr];	rbdf->cbd_bufaddr = memaddr;	rbdf->cbd_sc = 0;	tbdf = rbdf + 1;	tbdf->cbd_bufaddr = memaddr+4;	tbdf->cbd_sc = 0;	/* Set up the uart parameters in the parameter ram.	*/	up->smc_rbase = dpaddr;	up->smc_tbase = dpaddr+sizeof(cbd_t);	up->smc_rfcr = SMC_EB;	up->smc_tfcr = SMC_EB;	/* Set UART mode, 8 bit, no parity, one stop.	 * Enable receive and transmit.	 */	sp->smc_smcmr = smcr_mk_clen(9) |  SMCMR_SM_UART;	/* Mask all interrupts and remove anything pending.	*/	sp->smc_smcm = 0;	sp->smc_smce = 0xff;	/* Set up the baud rate generator.	 * See 8xx_io/commproc.c for details.	 * This wires BRG1 to SMC1 and BRG2 to SMC2;	 */	cp->cp_simode = 0x10000000;	ui = bd->bi_intfreq / 16 / bd->bi_baudrate;#ifdef TQM_SMC2_CONSOLE	cp->cp_brgc2 =#else	cp->cp_brgc1 =#endif		((ui - 1) < 4096)		? (((ui - 1) << 1) | CPM_BRG_EN)		: ((((ui / 16) - 1) << 1) | CPM_BRG_EN | CPM_BRG_DIV16);#else /* CONFIG_MBX */	if (*MBX_CSR1 & CSR1_COMEN) {		/* COM1 is enabled.  Initialize SMC1 and use it for		 * the console port.		 */		/* Enable SDMA.		*/		((immap_t *)IMAP_ADDR)->im_siu_conf.sc_sdcr = 1;		/* Use Port B for SMCs instead of other functions.		*/		cp->cp_pbpar |= 0x00000cc0;		cp->cp_pbdir &= ~0x00000cc0;		cp->cp_pbodr &= ~0x00000cc0;		/* Allocate space for two buffer descriptors in the DP ram.		 * For now, this address seems OK, but it may have to		 * change with newer versions of the firmware.		 */		dpaddr = 0x0800;		/* Grab a few bytes from the top of memory.  EPPC-Bug isn't		 * running any more, so we can do this.		 */		memaddr = (bd->bi_memsize - 32) & ~15;		/* Set the physical address of the host memory buffers in		 * the buffer descriptors.		 */		rbdf = (cbd_t *)&cp->cp_dpmem[dpaddr];		rbdf->cbd_bufaddr = memaddr;		rbdf->cbd_sc = 0;		tbdf = rbdf + 1;		tbdf->cbd_bufaddr = memaddr+4;		tbdf->cbd_sc = 0;		/* Set up the uart parameters in the parameter ram.		*/		up->smc_rbase = dpaddr;		up->smc_tbase = dpaddr+sizeof(cbd_t);		up->smc_rfcr = SMC_EB;		up->smc_tfcr = SMC_EB;		/* Set UART mode, 8 bit, no parity, one stop.		 * Enable receive and transmit.		 */		sp->smc_smcmr = smcr_mk_clen(9) |  SMCMR_SM_UART;		/* Mask all interrupts and remove anything pending.		*/		sp->smc_smcm = 0;		sp->smc_smce = 0xff;		/* Set up the baud rate generator.		 * See 8xx_io/commproc.c for details.		 */		cp->cp_simode = 0x10000000;		cp->cp_brgc1 =			(((bd->bi_intfreq/16) / 9600) << 1) | CPM_BRG_EN;		/* Enable SMC1 for console output.		*/		*MBX_CSR1 &= ~CSR1_COMEN;	}	else {#endif /* ndef CONFIG_MBX */		/* SMCx is used as console port.		*/		tbdf = (cbd_t *)&cp->cp_dpmem[up->smc_tbase];		rbdf = (cbd_t *)&cp->cp_dpmem[up->smc_rbase];		/* Issue a stop transmit, and wait for it.		*/		cp->cp_cpcr = mk_cr_cmd(CPM_CR_CH_CONS,					CPM_CR_STOP_TX) | CPM_CR_FLG;		while (cp->cp_cpcr & CPM_CR_FLG);	}	/* Make the first buffer the only buffer.	*/	tbdf->cbd_sc |= BD_SC_WRAP;	rbdf->cbd_sc |= BD_SC_EMPTY | BD_SC_WRAP;	/* Single character receive.	*/	up->smc_mrblr = 1;	up->smc_maxidl = 0;	/* Initialize Tx/Rx parameters.	*/	cp->cp_cpcr = mk_cr_cmd(CPM_CR_CH_CONS, CPM_CR_INIT_TRX) | CPM_CR_FLG;	while (cp->cp_cpcr & CPM_CR_FLG);	/* Enable transmitter/receiver.	*/	sp->smc_smcmr |= SMCMR_REN | SMCMR_TEN;}voidserial_putc(void *ignored, const char c){	volatile cbd_t		*tbdf;	volatile char		*buf;	volatile smc_uart_t	*up;	up = (smc_uart_t *)&cpmp->cp_dparam[PROFF_CONS];	tbdf = (cbd_t *)&cpmp->cp_dpmem[up->smc_tbase];	/* Wait for last character to go.	*/	buf = (char *)tbdf->cbd_bufaddr;	while (tbdf->cbd_sc & BD_SC_READY);	*buf = c;	tbdf->cbd_datlen = 1;	tbdf->cbd_sc |= BD_SC_READY;}charserial_getc(void *ignored){	volatile cbd_t		*rbdf;	volatile char		*buf;	volatile smc_uart_t	*up;	char			c;	up = (smc_uart_t *)&cpmp->cp_dparam[PROFF_CONS];	rbdf = (cbd_t *)&cpmp->cp_dpmem[up->smc_rbase];	/* Wait for character to show up.	*/	buf = (char *)rbdf->cbd_bufaddr;	while (rbdf->cbd_sc & BD_SC_EMPTY);	c = *buf;	rbdf->cbd_sc |= BD_SC_EMPTY;	return(c);}intserial_tstc(void *ignored){	volatile cbd_t		*rbdf;	volatile smc_uart_t	*up;	up = (smc_uart_t *)&cpmp->cp_dparam[PROFF_CONS];	rbdf = (cbd_t *)&cpmp->cp_dpmem[up->smc_rbase];	return(!(rbdf->cbd_sc & BD_SC_EMPTY));}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
91成人免费网站| 99久久精品国产毛片| ●精品国产综合乱码久久久久| 欧美一级片免费看| 91精品国产入口| 精品国产电影一区二区| 日韩午夜av一区| 欧美tk—视频vk| 久久免费视频色| 国产精品久久久久天堂| 综合在线观看色| 一区二区三区在线免费视频| 亚洲va韩国va欧美va| 午夜精彩视频在线观看不卡| 首页国产丝袜综合| 久久99精品国产麻豆婷婷洗澡| 老司机免费视频一区二区三区| 极品少妇一区二区| 不卡一卡二卡三乱码免费网站| 99久久精品一区| 欧美日韩第一区日日骚| 精品久久免费看| 亚洲图片你懂的| 天堂成人免费av电影一区| 国模大尺度一区二区三区| 成人av午夜影院| 在线观看欧美精品| 26uuu亚洲婷婷狠狠天堂| 国产精品福利一区二区三区| 亚洲美女一区二区三区| 美女久久久精品| 大美女一区二区三区| 欧美影院午夜播放| 日韩精品一区二区在线| 中文字幕在线观看一区| 免费观看在线色综合| 国产不卡高清在线观看视频| 91电影在线观看| 精品国产自在久精品国产| 国产精品乱人伦| 奇米影视一区二区三区小说| 高清不卡一二三区| 欧美老肥妇做.爰bbww| 久久久国产精华| 偷偷要91色婷婷| 99视频国产精品| 久久色视频免费观看| 日韩中文字幕1| av欧美精品.com| 日韩欧美色电影| 亚洲大片免费看| 91麻豆精东视频| 久久亚洲春色中文字幕久久久| 一二三四社区欧美黄| 成人高清免费观看| 2023国产精品| 日本亚洲最大的色成网站www| 色网站国产精品| 欧美国产精品中文字幕| 精品亚洲porn| 69堂精品视频| 日本亚洲欧美天堂免费| 欧美亚洲一区二区在线观看| 中文字幕欧美一区| 国产成人综合精品三级| 亚洲精品在线免费播放| 麻豆精品视频在线观看视频| 5566中文字幕一区二区电影| 夜夜嗨av一区二区三区| 日本韩国欧美三级| 国产精品久久久久久久浪潮网站 | 国产一区二区三区久久悠悠色av| 欧美偷拍一区二区| 亚洲一区二区三区国产| eeuss国产一区二区三区| 国产精品蜜臀在线观看| 成人久久18免费网站麻豆| 国产精品欧美经典| heyzo一本久久综合| 国产精品久久久久久久久免费丝袜| 国产剧情一区二区| 中文在线免费一区三区高中清不卡| 国产一区二三区好的| 久久久久97国产精华液好用吗| 国产一区二区三区视频在线播放| 精品不卡在线视频| 国产乱妇无码大片在线观看| 欧美激情在线一区二区| 成人高清在线视频| 一区二区三区国产精华| 欧美日韩一区视频| 蜜乳av一区二区| 亚洲国产经典视频| 91美女在线观看| 亚洲成人精品在线观看| 欧洲生活片亚洲生活在线观看| 一区二区三区免费在线观看| 欧美精品久久天天躁| 久久国产精品99精品国产| 国产色婷婷亚洲99精品小说| 成人av影院在线| 亚洲高清不卡在线| 亚洲精品一区二区精华| 懂色av噜噜一区二区三区av| 亚洲精品免费播放| 欧美高清你懂得| 国产精品综合网| 亚洲国产日韩综合久久精品| 日韩欧美亚洲国产精品字幕久久久| 大桥未久av一区二区三区中文| 亚洲国产一区二区a毛片| 精品国产一区二区国模嫣然| 91丨九色丨国产丨porny| 日韩国产在线观看| 亚洲视频免费在线| 日韩午夜小视频| 色av综合在线| 激情五月激情综合网| 亚洲另类色综合网站| 久久免费美女视频| 欧美精品18+| 99视频一区二区| 韩国欧美国产1区| 一级精品视频在线观看宜春院| 久久久国产精品午夜一区ai换脸| 欧美影视一区二区三区| 成人av资源在线| 国产乱人伦偷精品视频免下载| 亚洲一区二区在线观看视频| 欧美激情综合五月色丁香小说| 欧美妇女性影城| 91黄视频在线| 成人av在线资源网| 国产成人精品免费视频网站| 麻豆视频观看网址久久| 午夜精品久久久| 亚洲欧美乱综合| 国产精品天干天干在观线| 久久综合狠狠综合久久激情| 欧美一区二视频| 欧美精品 国产精品| 欧美性猛交xxxx黑人交| 色丁香久综合在线久综合在线观看| 成人午夜精品在线| 国产成人av一区二区三区在线 | 裸体一区二区三区| 亚洲国产欧美在线| 亚洲主播在线观看| 亚洲国产日韩a在线播放| 一区二区三区中文字幕精品精品 | 久久精品免费观看| 日韩国产精品91| 日韩黄色小视频| 丝袜a∨在线一区二区三区不卡| 一区二区三区国产精华| 亚洲一二三专区| 午夜精品视频一区| 日韩高清不卡在线| 日本中文字幕一区二区视频| 秋霞影院一区二区| 久久精品国产亚洲一区二区三区| 日本系列欧美系列| 麻豆成人免费电影| 精品亚洲成a人| 国产成人av在线影院| 91丨九色丨尤物| 欧美日韩一二三区| 日韩欧美二区三区| 欧美精品一区二区三区高清aⅴ | jlzzjlzz国产精品久久| 91国产视频在线观看| 欧美探花视频资源| 欧美一区二区三区男人的天堂| 精品嫩草影院久久| 国产精品久久久久aaaa| 一区二区三区日本| 日本欧美肥老太交大片| 国产精品1024| 91久久国产最好的精华液| 日韩一级黄色片| 久久蜜桃av一区精品变态类天堂| 国产精品成人免费在线| 亚洲.国产.中文慕字在线| 黄网站免费久久| 91麻豆产精品久久久久久| 911国产精品| 欧美激情一区二区三区不卡| 亚洲一区二区三区精品在线| 美女一区二区三区在线观看| 成人午夜视频福利| 91麻豆精品国产91久久久久久久久| 久久久五月婷婷| 亚洲成人av在线电影| 福利91精品一区二区三区| 91精品免费在线观看| 国产精品国产成人国产三级| 奇米888四色在线精品| 91视频国产资源| 欧美mv日韩mv国产网站| 亚洲国产成人av网|