⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 mxpcdrv.h

📁 isa总线设备
💻 H
📖 第 1 页 / 共 2 页
字号:
	if ( (info)->rx_trigger <= MOXA_MUST_RBRL_VALUE ) {	\		outb((UCHAR)0, (info)->base+MOXA_MUST_RBRTI_REGISTER);	\		outb((UCHAR)0, (info)->base+MOXA_MUST_RBRTL_REGISTER);	\	} else {	\		outb((UCHAR)((info)->rx_trigger-MOXA_MUST_RBRL_VALUE),	\			(info)->base+MOXA_MUST_RBRTI_REGISTER);	\		outb((UCHAR)((info)->rx_trigger-MOXA_MUST_RBRL_VALUE),	\			(info)->base+MOXA_MUST_RBRTL_REGISTER);	\	}	\	outb(__oldlcr, (info)->base+UART_LCR);	\}		#define SET_MOXA_MUST_ENUM_VALUE(baseio, Value) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_BANK_MASK;	\	__efr |= MOXA_MUST_EFR_BANK2;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb((UCHAR)(Value), (baseio)+MOXA_MUST_ENUM_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define GET_MOXA_MUST_HARDWARE_ID(baseio, pId) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_BANK_MASK;	\	__efr |= MOXA_MUST_EFR_BANK2;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	*pId = inb((baseio)+MOXA_MUST_HWID_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define SET_MOXA_MUST_NO_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_MASK;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define SET_MOXA_MUST_JUST_TX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_MASK;	\	__efr |= MOXA_MUST_EFR_SF_TX1;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define ENABLE_MOXA_MUST_TX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_TX_MASK;	\	__efr |= MOXA_MUST_EFR_SF_TX1;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define DISABLE_MOXA_MUST_TX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_TX_MASK;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define SET_MOXA_MUST_JUST_RX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_MASK;	\	__efr |= MOXA_MUST_EFR_SF_RX1;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define ENABLE_MOXA_MUST_RX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_RX_MASK;	\	__efr |= MOXA_MUST_EFR_SF_RX1;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define DISABLE_MOXA_MUST_RX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_RX_MASK;	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define ENABLE_MOXA_MUST_TX_RX_SOFTWARE_FLOW_CONTROL(baseio) {	\	UCHAR	__oldlcr, __efr;	\	__oldlcr = inb((baseio)+UART_LCR);	\	outb(MOXA_MUST_ENTER_ENCHANCE, (baseio)+UART_LCR);	\	__efr = inb((baseio)+MOXA_MUST_EFR_REGISTER);	\	__efr &= ~MOXA_MUST_EFR_SF_MASK;	\	__efr |= (MOXA_MUST_EFR_SF_RX1|MOXA_MUST_EFR_SF_TX1);	\	outb(__efr, (baseio)+MOXA_MUST_EFR_REGISTER);	\	outb(__oldlcr, (baseio)+UART_LCR);	\}#define ENABLE_MOXA_MUST_XON_ANY_FLOW_CONTROL(baseio) {	\	UCHAR	__oldmcr;	\	__oldmcr = inb((baseio)+UART_MCR);	\	__oldmcr |= MOXA_MUST_MCR_XON_ANY;	\	outb(__oldmcr, (baseio)+UART_MCR);	\}#define DISABLE_MOXA_MUST_XON_ANY_FLOW_CONTROL(baseio) {	\	UCHAR	__oldmcr;	\	__oldmcr = inb((baseio)+UART_MCR);	\	__oldmcr &= ~MOXA_MUST_MCR_XON_ANY;	\	outb(__oldmcr, (baseio)+UART_MCR);	\}#if (LINUX_VERSION_CODE < VERSION_CODE(2,1,0))#define copy_from_user memcpy_fromfs#define copy_to_user memcpy_tofs#define put_to_user(arg1, arg2) put_fs_long(arg1, (unsigned long *)arg2)#define get_from_user(arg1, arg2) arg1 = get_fs_long((unsigned long *)arg2)#define schedule_timeout(x) {current->timeout = jiffies + (x); schedule();}#define signal_pending(x) ((x)->signal & ~(x)->blocked)#else#include <asm/uaccess.h>#define put_to_user(arg1, arg2) put_user(arg1, (unsigned long *)arg2)#define get_from_user(arg1, arg2) get_user(arg1, (unsigned int *)arg2)#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define DRV_VAR		(&mxvar_sdriver)#define DRV_VAR_P(x)	mxvar_sdriver.x#else#define DRV_VAR		(mxvar_sdriver)#define DRV_VAR_P(x)	mxvar_sdriver->x#endif#if (LINUX_VERSION_CODE >= VERSION_CODE(2,6,0))#define MX_TTY_DRV(x)	tty->driver->x#else#define MX_TTY_DRV(x)	tty->driver.x#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define MX_ACCESS_CHK(type, addr, size) verify_area(type, addr, size)#else#define MX_ACCESS_CHK(type, addr, size) access_ok(type, addr, size)#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define MX_ERR(x)	x#else	#define MX_ERR(x)	!x#endif#if (LINUX_VERSION_CODE >= VERSION_CODE(2,6,0))#ifndef ASYNC_CALLOUT_ACTIVE#define ASYNC_CALLOUT_ACTIVE 0#endif#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define CLEAR_FUNC 	cleanup_module#define CLEAR_FUNC_RET	void#else#define CLEAR_FUNC 	mxpcdrv_module_exit#define CLEAR_FUNC_RET	static void __exit#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define INIT_FUNC 	init_module#define INIT_FUNC_RET	int#else#define INIT_FUNC 	mxpcdrv_module_init#define INIT_FUNC_RET	static int __init#endif#ifndef INIT_WORK#define INIT_WORK(_work, _func, _data){	\	_data->tqueue.routine = _func;\	_data->tqueue.data = _data;\	}#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define IRQ_RET void#define IRQ_RETVAL(x)#else#define IRQ_RET irqreturn_t#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#if (LINUX_VERSION_CODE >= VERSION_CODE(2,4,0))#define	MXQ_TASK() {\		MOD_INC_USE_COUNT;\		if (schedule_task(&info->tqueue) == 0)\			MOD_DEC_USE_COUNT;\	}#else#define MXQ_TASK()	queue_task(&info->tqueue,&tq_scheduler)#endif#else#define	MXQ_TASK()	schedule_work(&info->tqueue)#endif #if (LINUX_VERSION_CODE >= VERSION_CODE(2,6,5))#if (LINUX_VERSION_CODE > VERSION_CODE(2,6,19))#define MX_SESSION()	process_session(current)#else#define MX_SESSION()	current->signal->session#endif#else#define MX_SESSION()	current->session#endif#if (LINUX_VERSION_CODE >= VERSION_CODE(2,6,0))#define MX_CGRP()	process_group(current)	#else#define MX_CGRP()	current->pgrp	#endif#if (LINUX_VERSION_CODE >= VERSION_CODE(2,6,0))#define GET_FPAGE	__get_free_page	#else#define GET_FPAGE	get_free_page#endif#if (LINUX_VERSION_CODE < VERSION_CODE(2,6,0))#define MX_MOD_INC	MOD_INC_USE_COUNT#define MX_MOD_DEC	MOD_DEC_USE_COUNT#else#define MX_MOD_INC	try_module_get(THIS_MODULE)#define MX_MOD_DEC	module_put(THIS_MODULE)	#endif#ifndef atomic_read#define atomic_read(v)	v#endif#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -