mirror of https://gitee.com/openkylin/linux.git
brcm80211: smac: change ai_attach interface taking a bcma_bus object
The ai_attach now takes a bcma_bus object as its parameter to obtain all required information needed for chip control. Reviewed-by: Pieter-Paul Giesberts <pieterpg@broadcom.com> Reviewed-by: Alwin Beukers <alwin@broadcom.com> Signed-off-by: Arend van Spriel <arend@broadcom.com> Signed-off-by: Franky Lin <frankyl@broadcom.com> Signed-off-by: John W. Linville <linville@tuxdriver.com>
This commit is contained in:
parent
cbc80db292
commit
28a5344261
|
@ -1022,22 +1022,25 @@ static __used void ai_nvram_process(struct si_info *sii)
|
||||||
}
|
}
|
||||||
|
|
||||||
static struct si_info *ai_doattach(struct si_info *sii,
|
static struct si_info *ai_doattach(struct si_info *sii,
|
||||||
void __iomem *regs, struct pci_dev *pbus)
|
struct bcma_bus *pbus)
|
||||||
{
|
{
|
||||||
|
void __iomem *regs = pbus->mmio;
|
||||||
struct si_pub *sih = &sii->pub;
|
struct si_pub *sih = &sii->pub;
|
||||||
u32 w, savewin;
|
u32 w, savewin;
|
||||||
struct chipcregs __iomem *cc;
|
struct chipcregs __iomem *cc;
|
||||||
uint socitype;
|
uint socitype;
|
||||||
uint origidx;
|
uint origidx;
|
||||||
|
|
||||||
|
/* assume the window is looking at chipcommon */
|
||||||
|
WARN_ON(pbus->mapped_core->id.id != BCMA_CORE_CHIPCOMMON);
|
||||||
memset((unsigned char *) sii, 0, sizeof(struct si_info));
|
memset((unsigned char *) sii, 0, sizeof(struct si_info));
|
||||||
|
|
||||||
savewin = 0;
|
savewin = 0;
|
||||||
|
|
||||||
|
sii->icbus = pbus;
|
||||||
sii->buscoreidx = BADIDX;
|
sii->buscoreidx = BADIDX;
|
||||||
|
|
||||||
sii->curmap = regs;
|
sii->curmap = regs;
|
||||||
sii->pcibus = pbus;
|
sii->pcibus = pbus->host_pci;
|
||||||
|
|
||||||
/* find Chipcommon address */
|
/* find Chipcommon address */
|
||||||
pci_read_config_dword(sii->pcibus, PCI_BAR0_WIN, &savewin);
|
pci_read_config_dword(sii->pcibus, PCI_BAR0_WIN, &savewin);
|
||||||
|
@ -1160,13 +1163,10 @@ static struct si_info *ai_doattach(struct si_info *sii,
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* Allocate a si handle.
|
* Allocate a si handle and do the attach.
|
||||||
* devid - pci device id (used to determine chip#)
|
|
||||||
* osh - opaque OS handle
|
|
||||||
* regs - virtual address of initial core registers
|
|
||||||
*/
|
*/
|
||||||
struct si_pub *
|
struct si_pub *
|
||||||
ai_attach(void __iomem *regs, struct pci_dev *sdh)
|
ai_attach(struct bcma_bus *pbus)
|
||||||
{
|
{
|
||||||
struct si_info *sii;
|
struct si_info *sii;
|
||||||
|
|
||||||
|
@ -1175,7 +1175,7 @@ ai_attach(void __iomem *regs, struct pci_dev *sdh)
|
||||||
if (sii == NULL)
|
if (sii == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
|
|
||||||
if (ai_doattach(sii, regs, sdh) == NULL) {
|
if (ai_doattach(sii, pbus) == NULL) {
|
||||||
kfree(sii);
|
kfree(sii);
|
||||||
return NULL;
|
return NULL;
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,6 +17,8 @@
|
||||||
#ifndef _BRCM_AIUTILS_H_
|
#ifndef _BRCM_AIUTILS_H_
|
||||||
#define _BRCM_AIUTILS_H_
|
#define _BRCM_AIUTILS_H_
|
||||||
|
|
||||||
|
#include <linux/bcma/bcma.h>
|
||||||
|
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -170,6 +172,7 @@ struct gpioh_item {
|
||||||
/* misc si info needed by some of the routines */
|
/* misc si info needed by some of the routines */
|
||||||
struct si_info {
|
struct si_info {
|
||||||
struct si_pub pub; /* back plane public state (must be first) */
|
struct si_pub pub; /* back plane public state (must be first) */
|
||||||
|
struct bcma_bus *icbus; /* handle to soc interconnect bus */
|
||||||
struct pci_dev *pcibus; /* handle to pci bus */
|
struct pci_dev *pcibus; /* handle to pci bus */
|
||||||
uint dev_coreid; /* the core provides driver functions */
|
uint dev_coreid; /* the core provides driver functions */
|
||||||
void *intr_arg; /* interrupt callback function arg */
|
void *intr_arg; /* interrupt callback function arg */
|
||||||
|
@ -235,7 +238,7 @@ extern u32 ai_addrspacesize(struct si_pub *sih, uint asidx);
|
||||||
extern void ai_write_wrap_reg(struct si_pub *sih, u32 offset, u32 val);
|
extern void ai_write_wrap_reg(struct si_pub *sih, u32 offset, u32 val);
|
||||||
|
|
||||||
/* === exported functions === */
|
/* === exported functions === */
|
||||||
extern struct si_pub *ai_attach(void __iomem *regs, struct pci_dev *sdh);
|
extern struct si_pub *ai_attach(struct bcma_bus *pbus);
|
||||||
extern void ai_detach(struct si_pub *sih);
|
extern void ai_detach(struct si_pub *sih);
|
||||||
extern uint ai_coreid(struct si_pub *sih);
|
extern uint ai_coreid(struct si_pub *sih);
|
||||||
extern uint ai_corerev(struct si_pub *sih);
|
extern uint ai_corerev(struct si_pub *sih);
|
||||||
|
|
|
@ -4469,7 +4469,7 @@ static int brcms_b_attach(struct brcms_c_info *wlc, struct bcma_device *core,
|
||||||
* Do the hardware portion of the attach. Also initialize software
|
* Do the hardware portion of the attach. Also initialize software
|
||||||
* state that depends on the particular hardware we are running.
|
* state that depends on the particular hardware we are running.
|
||||||
*/
|
*/
|
||||||
wlc_hw->sih = ai_attach(core->bus->mmio, core->bus->host_pci);
|
wlc_hw->sih = ai_attach(core->bus);
|
||||||
if (wlc_hw->sih == NULL) {
|
if (wlc_hw->sih == NULL) {
|
||||||
wiphy_err(wiphy, "wl%d: brcms_b_attach: si_attach failed\n",
|
wiphy_err(wiphy, "wl%d: brcms_b_attach: si_attach failed\n",
|
||||||
unit);
|
unit);
|
||||||
|
|
Loading…
Reference in New Issue