brcm80211: smac: change attach interfaces in main.c for bcma support
The driver is probed through bcma which provides a device representing the core. This device is now passed in brcms_c_attach and brcms_b_attach functions. 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
2e756560a8
commit
b63337a034
|
@ -1030,9 +1030,7 @@ static struct brcms_info *brcms_attach(struct bcma_device *pdev)
|
||||||
}
|
}
|
||||||
|
|
||||||
/* common load-time initialization */
|
/* common load-time initialization */
|
||||||
wl->wlc = brcms_c_attach((void *)wl, pdev->bus->host_pci->vendor,
|
wl->wlc = brcms_c_attach((void *)wl, pdev, unit, false, &err);
|
||||||
pdev->bus->host_pci->device, unit, false,
|
|
||||||
pdev->bus->mmio, pdev->bus->host_pci, &err);
|
|
||||||
brcms_release_fw(wl);
|
brcms_release_fw(wl);
|
||||||
if (!wl->wlc) {
|
if (!wl->wlc) {
|
||||||
wiphy_err(wl->wiphy, "%s: attach() failed with code %d\n",
|
wiphy_err(wl->wiphy, "%s: attach() failed with code %d\n",
|
||||||
|
|
|
@ -4437,9 +4437,8 @@ struct brcms_pub *brcms_c_pub(struct brcms_c_info *wlc)
|
||||||
* initialize software state for each core and band
|
* initialize software state for each core and band
|
||||||
* put the whole chip in reset(driver down state), no clock
|
* put the whole chip in reset(driver down state), no clock
|
||||||
*/
|
*/
|
||||||
static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
|
static int brcms_b_attach(struct brcms_c_info *wlc, struct bcma_device *core,
|
||||||
uint unit, bool piomode, void __iomem *regsva,
|
uint unit, bool piomode)
|
||||||
struct pci_dev *btparam)
|
|
||||||
{
|
{
|
||||||
struct brcms_hardware *wlc_hw;
|
struct brcms_hardware *wlc_hw;
|
||||||
struct d11regs __iomem *regs;
|
struct d11regs __iomem *regs;
|
||||||
|
@ -4449,9 +4448,11 @@ static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
|
||||||
bool wme = false;
|
bool wme = false;
|
||||||
struct shared_phy_params sha_params;
|
struct shared_phy_params sha_params;
|
||||||
struct wiphy *wiphy = wlc->wiphy;
|
struct wiphy *wiphy = wlc->wiphy;
|
||||||
|
struct pci_dev *pcidev = core->bus->host_pci;
|
||||||
|
|
||||||
BCMMSG(wlc->wiphy, "wl%d: vendor 0x%x device 0x%x\n", unit, vendor,
|
BCMMSG(wlc->wiphy, "wl%d: vendor 0x%x device 0x%x\n", unit,
|
||||||
device);
|
pcidev->vendor,
|
||||||
|
pcidev->device);
|
||||||
|
|
||||||
wme = true;
|
wme = true;
|
||||||
|
|
||||||
|
@ -4468,7 +4469,7 @@ static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
|
||||||
* 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(regsva, btparam);
|
wlc_hw->sih = ai_attach(core->bus->mmio, core->bus->host_pci);
|
||||||
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);
|
||||||
|
@ -4477,16 +4478,16 @@ static int brcms_b_attach(struct brcms_c_info *wlc, u16 vendor, u16 device,
|
||||||
}
|
}
|
||||||
|
|
||||||
/* verify again the device is supported */
|
/* verify again the device is supported */
|
||||||
if (!brcms_c_chipmatch(vendor, device)) {
|
if (!brcms_c_chipmatch(pcidev->vendor, pcidev->device)) {
|
||||||
wiphy_err(wiphy, "wl%d: brcms_b_attach: Unsupported "
|
wiphy_err(wiphy, "wl%d: brcms_b_attach: Unsupported "
|
||||||
"vendor/device (0x%x/0x%x)\n",
|
"vendor/device (0x%x/0x%x)\n",
|
||||||
unit, vendor, device);
|
unit, pcidev->vendor, pcidev->device);
|
||||||
err = 12;
|
err = 12;
|
||||||
goto fail;
|
goto fail;
|
||||||
}
|
}
|
||||||
|
|
||||||
wlc_hw->vendorid = vendor;
|
wlc_hw->vendorid = pcidev->vendor;
|
||||||
wlc_hw->deviceid = device;
|
wlc_hw->deviceid = pcidev->device;
|
||||||
|
|
||||||
/* set bar0 window to point at D11 core */
|
/* set bar0 window to point at D11 core */
|
||||||
wlc_hw->regs = (struct d11regs __iomem *)
|
wlc_hw->regs = (struct d11regs __iomem *)
|
||||||
|
@ -8351,9 +8352,8 @@ void brcms_c_init(struct brcms_c_info *wlc, bool mute_tx)
|
||||||
* The common driver entry routine. Error codes should be unique
|
* The common driver entry routine. Error codes should be unique
|
||||||
*/
|
*/
|
||||||
struct brcms_c_info *
|
struct brcms_c_info *
|
||||||
brcms_c_attach(struct brcms_info *wl, u16 vendor, u16 device, uint unit,
|
brcms_c_attach(struct brcms_info *wl, struct bcma_device *core, uint unit,
|
||||||
bool piomode, void __iomem *regsva, struct pci_dev *btparam,
|
bool piomode, uint *perr)
|
||||||
uint *perr)
|
|
||||||
{
|
{
|
||||||
struct brcms_c_info *wlc;
|
struct brcms_c_info *wlc;
|
||||||
uint err = 0;
|
uint err = 0;
|
||||||
|
@ -8361,7 +8361,7 @@ brcms_c_attach(struct brcms_info *wl, u16 vendor, u16 device, uint unit,
|
||||||
struct brcms_pub *pub;
|
struct brcms_pub *pub;
|
||||||
|
|
||||||
/* allocate struct brcms_c_info state and its substructures */
|
/* allocate struct brcms_c_info state and its substructures */
|
||||||
wlc = (struct brcms_c_info *) brcms_c_attach_malloc(unit, &err, device);
|
wlc = (struct brcms_c_info *) brcms_c_attach_malloc(unit, &err, 0);
|
||||||
if (wlc == NULL)
|
if (wlc == NULL)
|
||||||
goto fail;
|
goto fail;
|
||||||
wlc->wiphy = wl->wiphy;
|
wlc->wiphy = wl->wiphy;
|
||||||
|
@ -8388,8 +8388,7 @@ brcms_c_attach(struct brcms_info *wl, u16 vendor, u16 device, uint unit,
|
||||||
* low level attach steps(all hw accesses go
|
* low level attach steps(all hw accesses go
|
||||||
* inside, no more in rest of the attach)
|
* inside, no more in rest of the attach)
|
||||||
*/
|
*/
|
||||||
err = brcms_b_attach(wlc, vendor, device, unit, piomode, regsva,
|
err = brcms_b_attach(wlc, core, unit, piomode);
|
||||||
btparam);
|
|
||||||
if (err)
|
if (err)
|
||||||
goto fail;
|
goto fail;
|
||||||
|
|
||||||
|
|
|
@ -17,6 +17,7 @@
|
||||||
#ifndef _BRCM_PUB_H_
|
#ifndef _BRCM_PUB_H_
|
||||||
#define _BRCM_PUB_H_
|
#define _BRCM_PUB_H_
|
||||||
|
|
||||||
|
#include <linux/bcma/bcma.h>
|
||||||
#include <brcmu_wifi.h>
|
#include <brcmu_wifi.h>
|
||||||
#include "types.h"
|
#include "types.h"
|
||||||
#include "defs.h"
|
#include "defs.h"
|
||||||
|
@ -530,9 +531,8 @@ struct brcms_antselcfg {
|
||||||
|
|
||||||
/* common functions for every port */
|
/* common functions for every port */
|
||||||
extern struct brcms_c_info *
|
extern struct brcms_c_info *
|
||||||
brcms_c_attach(struct brcms_info *wl, u16 vendor, u16 device, uint unit,
|
brcms_c_attach(struct brcms_info *wl, struct bcma_device *core, uint unit,
|
||||||
bool piomode, void __iomem *regsva, struct pci_dev *btparam,
|
bool piomode, uint *perr);
|
||||||
uint *perr);
|
|
||||||
extern uint brcms_c_detach(struct brcms_c_info *wlc);
|
extern uint brcms_c_detach(struct brcms_c_info *wlc);
|
||||||
extern int brcms_c_up(struct brcms_c_info *wlc);
|
extern int brcms_c_up(struct brcms_c_info *wlc);
|
||||||
extern uint brcms_c_down(struct brcms_c_info *wlc);
|
extern uint brcms_c_down(struct brcms_c_info *wlc);
|
||||||
|
|
Loading…
Reference in New Issue