Commit b63337a0 authored by Arend van Spriel's avatar Arend van Spriel Committed by John W. Linville

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: default avatarPieter-Paul Giesberts <pieterpg@broadcom.com>
Reviewed-by: default avatarAlwin Beukers <alwin@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarFranky Lin <frankyl@broadcom.com>
Signed-off-by: default avatarJohn W. Linville <linville@tuxdriver.com>
parent 2e756560
...@@ -1030,9 +1030,7 @@ static struct brcms_info *brcms_attach(struct bcma_device *pdev) ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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, ...@@ -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) ...@@ -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, ...@@ -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, ...@@ -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 @@ ...@@ -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 { ...@@ -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);
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment