資源簡介
博通無線網卡驅動,我的空間有篇文章介紹如何安裝,不會的請參考
代碼片段和文件信息
/*
?*?Linux?OS?Independent?layer
?*
?*?Copyright?(C)?2010?Broadcom?Corporation
?*?All?Rights?Reserved.
?*?
?*?THIS?SOFTWARE?IS?OFFERED?“AS?IS“?AND?BROADCOM?GRANTS?NO?WARRANTIES?OF?ANY
?*?KIND?EXPRESS?OR?IMPLIED?BY?STATUTE?COMMUNICATION?OR?OTHERWISE.?BROADCOM
?*?SPECIFICALLY?DISCLAIMS?ANY?IMPLIED?WARRANTIES?OF?MERCHANTABILITY?FITNESS
?*?FOR?A?SPECIFIC?PURPOSE?OR?NONINFRINGEMENT?CONCERNING?THIS?SOFTWARE.
?*
?*?$Id:?linux_osl.cv?1.172.2.12.2.1?2011-01-26?01:24:54?Exp?$
?*/
#define?LINUX_PORT
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#include?
#define?PCI_CFG_RETRY? 10
#define?OS_HANDLE_MAGIC 0x1234abcd
#define?BCM_MEM_FILENAME_LEN? 24
typedef?struct?bcm_mem_link?{
struct?bcm_mem_link?*prev;
struct?bcm_mem_link?*next;
uint size;
int line;
void? *osh;
char file[BCM_MEM_FILENAME_LEN];
}?bcm_mem_link_t;
#if?defined(DSLCPE_DELAY_NOT_YET)
struct?shared_osl?{
int?long_delay;
spinlock_t?*lock;
void?*wl;
unsigned?long?MIPS;
};
#endif
struct?osl_info?{
osl_pubinfo_t?pub;
uint?magic;
void?*pdev;
atomic_t?malloced;
uint?failed;
uint?bustype;
bcm_mem_link_t?*dbgmem_list;
spinlock_t?dbgmem_lock;
spinlock_t?pktalloc_lock;
};
uint32?g_assert_type?=?FALSE;
static?int16?linuxbcmerrormap[]?=
{ 0?
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL
-EINVAL?
-EINVAL?
-EINVAL?
-E2BIG
-E2BIG
-EBUSY?
-EINVAL?
-EINVAL?
-EINVAL?
-EINVAL?
-EFAULT?
-ENOMEM?
-EOPNOTSUPP
-EMSGSIZE
-EINVAL
-EPERM
-ENOMEM?
-EINVAL?
-ERANGE?
-EINVAL?
-EINVAL?
-EINVAL?
-EINVAL?
-EINVAL
-EIO
-ENODEV
-EINVAL
-EIO
-EIO
-EINVAL
-EINVAL
-ENODATA
#if?BCME_LAST?!=?-42
#error?“You?need?to?add?a?OS?error?translation?in?the?linuxbcmerrormap?\
for?new?error?code?defined?in?bcmutils.h“
#endif
};
int
osl_error(int?bcmerror)
{
if?(bcmerror?>?0)
bcmerror?=?0;
else?if?(bcmerror? bcmerror?=?BCME_ERROR;
return?linuxbcmerrormap[-bcmerror];
}
osl_t?*
osl_attach(void?*pdev?uint?bustype?bool?pkttag)
{
osl_t?*osh;
osh?=?kmalloc(sizeof(osl_t)?GFP_ATOMIC);
ASSERT(osh);
bzero(osh?sizeof(osl_t));
ASSERT(ABS(BCME_LAST)?==?(ARRAYSIZE(linuxbcmerrormap)?-?1));
osh->magic?=?OS_HANDLE_MAGIC;
atomic_set(&osh->malloced?0);
osh->failed?=?0;
osh->dbgmem_list?=?NULL;
spin_lock_init(&(osh->dbgmem_lock));
osh->pdev?=?pdev;
osh->pub.pkttag?=?pkttag;
osh->bustype?=?bustype;
switch?(bustype)?{
case?PCI_BUS:
case?SI_BUS:
case?PCMCIA_BUS:
osh->pub.mmbus?=?TRUE;
break;
case?JTAG_BUS:
case?SDIO_BUS:
case?USB_BUS:
case?SPI_BUS:
case?RPC_BUS:
osh->pub.mmbus?=?FALSE;
break;
default:
ASSERT(FALSE);
break;
}
spin_lock_init(&(osh->pktalloc_lock));
#ifdef?BCMDBG
if?(pkttag)?{
struc
評論
共有 條評論