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

📄 ah_os.c.svn-base

📁 最新之atheros芯片driver source code, 基于linux操作系统,內含atheros芯片HAL全部代码
💻 SVN-BASE
📖 第 1 页 / 共 3 页
字号:
			(v & AR5K_AR5212_PIMR_RXDESC  ?  " RXDESC"         : ""),			(v & AR5K_AR5212_PIMR_RXERR   ?  " RXERR"          : ""),			(v & AR5K_AR5212_PIMR_RXNOFRM ?  " RXNOFRM"        : ""),			(v & AR5K_AR5212_PIMR_RXEOL   ?  " RXEOL"          : ""),			(v & AR5K_AR5212_PIMR_RXORN   ?  " RXORN"          : ""),			(v & AR5K_AR5212_PIMR_TXOK    ?  " TXOK"           : ""),			(v & AR5K_AR5212_PIMR_TXDESC  ?  " TXDESC"         : ""),			(v & AR5K_AR5212_PIMR_TXERR   ?  " TXERR"          : ""),			(v & AR5K_AR5212_PIMR_TXNOFRM ?  " TXNOFRM"        : ""),			(v & AR5K_AR5212_PIMR_TXEOL   ?  " TXEOL"          : ""),			(v & AR5K_AR5212_PIMR_TXURN   ?  " TXURN"          : ""),			(v & AR5K_AR5212_PIMR_MIB     ?  " MIB"            : ""),			(v & AR5K_AR5212_PIMR_SWI     ?  " SWI"            : ""),			(v & AR5K_AR5212_PIMR_RXPHY   ?  " RXPHY"          : ""),			(v & AR5K_AR5212_PIMR_RXKCM   ?  " RXKCM"          : ""),			(v & AR5K_AR5212_PIMR_SWBA    ?  " SWBA"           : ""),			(v & AR5K_AR5212_PIMR_BRSSI   ?  " BRSSI"          : ""),			(v & AR5K_AR5212_PIMR_BMISS   ?  " BMISS"          : ""),			(v & AR5K_AR5212_PIMR_HIUERR  ?  " HIUERR"         : ""),			(v & AR5K_AR5212_PIMR_BNR     ?  " BNR"            : ""),			(v & AR5K_AR5212_PIMR_RXCHIRP ?  " RXCHIRP"        : ""),			(v & AR5K_AR5212_PIMR_TIM     ?  " TIM"            : ""),			(v & AR5K_AR5212_PIMR_BCNMISC ?  " BCNMISC"        : ""),			(v & AR5K_AR5212_PIMR_GPIO    ?  " GPIO"           : ""),			(v & AR5K_AR5212_PIMR_QCBRORN ?  " QCBRORN"        : ""),			(v & AR5K_AR5212_PIMR_QCBRURN ?  " QCBRURN"        : ""),			(v & AR5K_AR5212_PIMR_QTRIG   ?  " QTRIG"          : ""), 		        (ath_hal_func ?: "unknown")			);	}#undef AR5K_AR5212_PHY_ERR_FIL#undef AR5K_AR5212_PHY_ERR_FIL_RADAR#undef AR5K_AR5212_PHY_ERR_FIL_OFDM#undef AR5K_AR5212_PHY_ERR_FIL_CCK#undef AR5K_AR5212_PIMR#undef AR5K_AR5212_PISR#undef AR5K_AR5212_PIMR_RXOK#undef AR5K_AR5212_PIMR_RXDESC#undef AR5K_AR5212_PIMR_RXERR#undef AR5K_AR5212_PIMR_RXNOFRM#undef AR5K_AR5212_PIMR_RXEOL#undef AR5K_AR5212_PIMR_RXORN#undef AR5K_AR5212_PIMR_TXOK#undef AR5K_AR5212_PIMR_TXDESC#undef AR5K_AR5212_PIMR_TXERR#undef AR5K_AR5212_PIMR_TXNOFRM#undef AR5K_AR5212_PIMR_TXEOL#undef AR5K_AR5212_PIMR_TXURN#undef AR5K_AR5212_PIMR_MIB#undef AR5K_AR5212_PIMR_SWI#undef AR5K_AR5212_PIMR_RXPHY#undef AR5K_AR5212_PIMR_RXKCM#undef AR5K_AR5212_PIMR_SWBA#undef AR5K_AR5212_PIMR_BRSSI#undef AR5K_AR5212_PIMR_BMISS#undef AR5K_AR5212_PIMR_HIUERR#undef AR5K_AR5212_PIMR_BNR#undef AR5K_AR5212_PIMR_RXCHIRP#undef AR5K_AR5212_PIMR_TIM#undef AR5K_AR5212_PIMR_BCNMISC#undef AR5K_AR5212_PIMR_GPIO#undef AR5K_AR5212_PIMR_QCBRORN#undef AR5K_AR5212_PIMR_QCBRURN#undef AR5K_AR5212_PIMR_QTRIG}/* Print out a single register name/address/value in hex and binary */static inline void_print_decoded_register(struct ath_hal *ah, const char *device_name, 			HAL_BOOL prefer_alq, int regop,			u_int32_t address, u_int32_t oldval, 			u_int32_t newval, HAL_BOOL verbose){	_print_decoded_register_delta(ah, device_name, prefer_alq, regop, 				      address, oldval, newval, verbose);	_print_decoded_register_bitfields(ah, device_name, prefer_alq, regop, 					  address, oldval, newval, verbose);}/* Print out a single register name/address/value in hex and binary */static inline void_print_undecoded_register(struct ath_hal *ah, const char *device_name, 			  HAL_BOOL prefer_alq, int regop,			  u_int32_t address, u_int32_t newval){	ath_hal_printf(ah, prefer_alq, "%s%s%s0x%05x = 0x%08x - %s\n", 		device_name ? device_name : "",		device_name ? ":" : "",		(regop == REGOP_READ ? "R:" : 		 (regop == REGOP_WRITE ? "W:" : "")), 		address, 		newval, 		(ath_hal_func ?: "unknown")		);}/* Print out a single register name/address/value in hex and binary */voidath_hal_print_decoded_register(struct ath_hal *ah, 		       const char *device_name,		       u_int32_t address, u_int32_t oldval, 		       u_int32_t newval, HAL_BOOL bitfields){	_print_decoded_register(ah, device_name, AH_FALSE /* don't use alq */, 				REGOP_NONE, address, oldval, newval, bitfields);}EXPORT_SYMBOL(ath_hal_print_decoded_register);/* Print out a single register in simple undecoded form */voidath_hal_print_register(struct ath_hal *ah, 			       const char *device_name,			       u_int32_t address, u_int32_t newval){	_print_undecoded_register(ah, device_name, AH_FALSE /* don't use alq */, 				REGOP_NONE, address, 				newval);}EXPORT_SYMBOL(ath_hal_print_register);static inline void _trace_regop(struct ath_hal *ah, int regop, u_int address, u_int32_t value){#ifdef AH_DEBUG	switch (ath_hal_debug) {	case HAL_DEBUG_OFF:		break;	case HAL_DEBUG_REGOPS:		/* XXX: Identify wifiX */		_print_undecoded_register(ah, ath_hal_device, AH_TRUE /* prefer alq */,					regop, address, 					value);		break;	default:		/* XXX: Identify wifiX */		_print_decoded_register(ah, ath_hal_device, AH_TRUE /* prefer alq */,					regop, address, 					((regop == REGOP_WRITE && ath_hal_debug >= HAL_DEBUG_REGOPS_DELTAS) ? 						_OS_REG_READ(ah, address) : 						value), 					value, 					(ath_hal_debug >= HAL_DEBUG_REGOPS_BITFIELDS));		break;	}#endif /* AH_DEBUG */}#if defined(AH_DEBUG) || defined(AH_REGOPS_FUNC) || defined(AH_DEBUG_ALQ)/* * Memory-mapped device register read/write.  These are here * as routines when debugging support is enabled and/or when * explicitly configured to use function calls.  The latter is * for architectures that might need to do something before * referencing memory (e.g. remap an i/o window). * * This should only be called while holding the lock, sc->sc_hal_lock. * * NB: see the comments in ah_osdep.h about byte-swapping register *     reads and writes to understand what's going on below. */void __ahdeclath_hal_reg_write(struct ath_hal *ah, u_int address, u_int32_t value){	_trace_regop(ah, REGOP_WRITE, address, value);	_OS_REG_WRITE(ah, address, value);}EXPORT_SYMBOL(ath_hal_reg_write);/* This should only be called while holding the lock, sc->sc_hal_lock. */u_int32_t __ahdeclath_hal_reg_read(struct ath_hal *ah, u_int address){ 	u_int32_t val = _OS_REG_READ(ah, address);	_trace_regop(ah, REGOP_READ, address, val);	return val;}EXPORT_SYMBOL(ath_hal_reg_read);#endif/* * Delay n microseconds. */void __ahdeclath_hal_delay(int n){	udelay(n);}/* * Allocate/free memory. */void * __ahdeclath_hal_malloc(size_t size){	return kzalloc(size, GFP_KERNEL);}void __ahdeclath_hal_free(void *p){	kfree(p);}void __ahdeclath_hal_memzero(void *dst, size_t n){	memset(dst, 0, n);}EXPORT_SYMBOL(ath_hal_memzero);void * __ahdeclath_hal_memcpy(void *dst, const void *src, size_t n){	return memcpy(dst, src, n);}EXPORT_SYMBOL(ath_hal_memcpy);int __ahdeclath_hal_memcmp(const void *a, const void *b, size_t n){	return memcmp(a, b, n);}EXPORT_SYMBOL(ath_hal_memcmp);static ctl_table ath_hal_sysctls[] = {#ifdef AH_DEBUG	{ .ctl_name	= CTL_AUTO,	  .procname	= "debug",	  .mode		= 0644,	  .data		= &ath_hal_debug,	  .maxlen	= sizeof(ath_hal_debug),	  .proc_handler	= proc_dointvec	},#endif /* AH_DEBUG */	{ .ctl_name	= CTL_AUTO,	  .procname	= "dma_beacon_response_time",	  .data		= &ath_hal_dma_beacon_response_time,	  .maxlen	= sizeof(ath_hal_dma_beacon_response_time),	  .mode		= 0644,	  .proc_handler	= proc_dointvec	},	{ .ctl_name	= CTL_AUTO,	  .procname	= "sw_beacon_response_time",	  .mode		= 0644,	  .data		= &ath_hal_sw_beacon_response_time,	  .maxlen	= sizeof(ath_hal_sw_beacon_response_time),	  .proc_handler	= proc_dointvec	},	{ .ctl_name	= CTL_AUTO,	  .procname	= "swba_backoff",	  .mode		= 0644,	  .data		= &ath_hal_additional_swba_backoff,	  .maxlen	= sizeof(ath_hal_additional_swba_backoff),	  .proc_handler	= proc_dointvec	},#ifdef AH_DEBUG_ALQ	{ .ctl_name	= CTL_AUTO,	  .procname	= "alq",	  .mode		= 0644,	  .proc_handler	= sysctl_hw_ath_hal_log	},	{ .ctl_name	= CTL_AUTO,	  .procname	= "alq_size",	  .mode		= 0644,	  .data		= &ath_hal_alq_qsize,	  .maxlen	= sizeof(ath_hal_alq_qsize),	  .proc_handler	= proc_dointvec	},	{ .ctl_name	= CTL_AUTO,	  .procname	= "alq_lost",	  .mode		= 0644,	  .data		= &ath_hal_alq_lost,	  .maxlen	= sizeof(ath_hal_alq_lost),	  .proc_handler	= proc_dointvec	},#endif /* AH_DEBUG_ALQ */	{ 0 }};static ctl_table ath_hal_table[] = {	{ .ctl_name	= CTL_AUTO,	  .procname	= "hal",	  .mode		= 0555,	  .child	= ath_hal_sysctls	}, { 0 }};static ctl_table ath_ath_table[] = {	{ .ctl_name	= DEV_ATH,	  .procname	= "ath",	  .mode		= 0555,	  .child	= ath_hal_table	}, { 0 }};static ctl_table ath_root_table[] = {	{ .ctl_name	= CTL_DEV,	  .procname	= "dev",	  .mode		= 0555,	  .child	= ath_ath_table	}, { 0 }};static struct ctl_table_header *ath_hal_sysctl_header;static voidath_hal_sysctl_register(void){	static int initialized = 0;	if (!initialized) {		ath_hal_sysctl_header =			ATH_REGISTER_SYSCTL_TABLE(ath_root_table);		initialized = 1;	}}static voidath_hal_sysctl_unregister(void){	if (ath_hal_sysctl_header)		unregister_sysctl_table(ath_hal_sysctl_header);}/* * Module glue. */#if 0static char *dev_info = "ath_hal";#endifMODULE_AUTHOR("Errno Consulting, Sam Leffler");MODULE_DESCRIPTION("Atheros Hardware Access Layer (HAL)");MODULE_SUPPORTED_DEVICE("Atheros WLAN devices");#ifdef MODULE_LICENSEMODULE_LICENSE("Dual BSD/GPL");#endifEXPORT_SYMBOL(ath_hal_probe);EXPORT_SYMBOL(_ath_hal_attach);EXPORT_SYMBOL(_ath_hal_detach);EXPORT_SYMBOL(ath_hal_init_channels);EXPORT_SYMBOL(ath_hal_getwirelessmodes);EXPORT_SYMBOL(ath_hal_computetxtime);EXPORT_SYMBOL(ath_hal_mhz2ieee);EXPORT_SYMBOL(ath_hal_process_noisefloor);#ifdef MMIOTRACEextern void (*kmmio_logmsg)(struct ath_hal *ah, u8 write, u_int address, u_int32_t val);void _trace_regop(struct ath_hal *ah, int regop, u_int address, u_int32_t newval);static void _kmmio_logmsg(struct ath_hal *ah, u8 write, u_int address, u_int32_t val) {	_trace_regop(ah, write ? REGOP_WRITE : REGOP_READ, address, val);}#endif /* MMIOTRACE */static int __initinit_ath_hal(void){#ifdef MMIOTRACE	kmmio_logmsg = _kmmio_logmsg;#endif	ath_hal_sysctl_register();	return (0);}module_init(init_ath_hal);static void __exitexit_ath_hal(void){#ifdef MMIOTRACE	kmmio_logmsg = NULL;#endif	ath_hal_sysctl_unregister();}module_exit(exit_ath_hal);

⌨️ 快捷键说明

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