• 大小: 1.12MB
    文件类型: .7z
    金币: 2
    下载: 1 次
    发布日期: 2023-10-03
  • 语言: 其他
  • 标签: ap6212  wifi  

资源简介

AP6212最新驱动源码 bcmdhd.1.579.77.41.x.7z 从FAe获得,亲测移植可用,有需要的请下载,仅限学习使用。

资源截图

代码片段和文件信息

/*
 * Misc utility routines for accessing chip-specific features
 * of the SiliconBackplane-based Broadcom chips.
 *
 * Copyright (C) 1999-2017 Broadcom Corporation
 * 
 *      Unless you and Broadcom execute a separate written software license
 * agreement governing use of this software this software is licensed to you
 * under the terms of the GNU General Public License version 2 (the “GPL“)
 * available at http://www.broadcom.com/licenses/GPLv2.php with the
 * following added to such license:
 * 
 *      As a special exception the copyright holders of this software give you
 * permission to link this software with independent modules and to copy and
 * distribute the resulting executable under terms of your choice provided that
 * you also meet for each linked independent module the terms and conditions of
 * the license of that module.  An independent module is a module which is not
 * derived from this software.  The special exception does not apply to any
 * modifications of the software.
 * 
 *      Notwithstanding the above under no circumstances may you combine this
 * software in any way with any other Broadcom software provided under a license
 * other than the GPL without Broadcom‘s express prior written consent.
 *
 *
 * <>
 *
 * $Id: aiutils.c 625027 2016-03-15 08:20:18Z $
 */
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

#include “siutils_priv.h“
#include 

#define BCM5357_DMP() (0)
#define BCM53573_DMP() (0)
#define BCM4707_DMP() (0)
#define PMU_DMP() (0)
#define GCI_DMP() (0)
#define remap_coreid(sih coreid) (coreid)
#define remap_corerev(sih corerev) (corerev)

/* EROM parsing */

static uint32
get_erom_ent(si_t *sih uint32 **eromptr uint32 mask uint32 match)
{
uint32 ent;
uint inv = 0 nom = 0;
uint32 size = 0;

while (TRUE) {
ent = R_REG(si_osh(sih) *eromptr);
(*eromptr)++;

if (mask == 0)
break;

if ((ent & ER_VALID) == 0) {
inv++;
continue;
}

if (ent == (ER_END | ER_VALID))
break;

if ((ent & mask) == match)
break;

/* escape condition related EROM size if it has invalid values */
size += sizeof(*eromptr);
if (size >= ER_SZ_MAX) {
SI_ERROR((“Failed to find end of EROM marker\n“));
break;
}

nom++;
}

SI_VMSG((“%s: Returning ent 0x%08x\n“ __FUNCTION__ ent));
if (inv + nom) {
SI_VMSG((“  after %d invalid and %d non-matching entries\n“ inv nom));
}
return ent;
}

static uint32
get_asd(si_t *sih uint32 **eromptr uint sp uint ad uint st uint32 *addrl uint32 *addrh
uint32 *sizel uint32 *sizeh)
{
uint32 asd sz szd;

BCM_REFERENCE(ad);

asd = get_erom_ent(sih eromptr ER_VALID ER_VALID);
if (((asd & ER_TAG1) != ER_ADD) ||
    (((asd & AD_SP_MASK) >> AD_SP_SHIFT) != sp) ||
    ((asd & AD_ST_MASK) != st)) {
/* This is not what we want “push“ it back */
(*eromptr

评论

共有 条评论