Commit a493f4e1 authored by Franky Lin's avatar Franky Lin Committed by Greg Kroah-Hartman

staging: brcm80211: remove vendor and device id check from brcmfmac

mmc core is handling the vendor/device id check and matching drivers
with devices. No need to do it again in driver.
Reviewed-by: default avatarRoland Vossen <rvossen@broadcom.com>
Signed-off-by: default avatarArend van Spriel <arend@broadcom.com>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@suse.de>
parent 55963d74
...@@ -44,7 +44,6 @@ ...@@ -44,7 +44,6 @@
struct brcmf_sdio_card { struct brcmf_sdio_card {
bool init_success; /* underlying driver successfully attached */ bool init_success; /* underlying driver successfully attached */
void *sdioh; /* handler for sdioh */ void *sdioh; /* handler for sdioh */
u32 vendevid; /* Target Vendor and Device ID on SD bus */
bool regfail; /* Save status of last bool regfail; /* Save status of last
reg_read/reg_write call */ reg_read/reg_write call */
u32 sbwad; /* Save backplane window address */ u32 sbwad; /* Save backplane window address */
...@@ -399,12 +398,6 @@ int brcmf_sdcard_abort(struct brcmf_sdio_card *card, uint fn) ...@@ -399,12 +398,6 @@ int brcmf_sdcard_abort(struct brcmf_sdio_card *card, uint fn)
return brcmf_sdioh_abort(card->sdioh, fn); return brcmf_sdioh_abort(card->sdioh, fn);
} }
int brcmf_sdcard_query_device(struct brcmf_sdio_card *card)
{
card->vendevid = (PCI_VENDOR_ID_BROADCOM << 16) | 0;
return card->vendevid;
}
u32 brcmf_sdcard_cur_sbwad(struct brcmf_sdio_card *card) u32 brcmf_sdcard_cur_sbwad(struct brcmf_sdio_card *card)
{ {
return card->sbwad; return card->sbwad;
...@@ -413,7 +406,6 @@ u32 brcmf_sdcard_cur_sbwad(struct brcmf_sdio_card *card) ...@@ -413,7 +406,6 @@ u32 brcmf_sdcard_cur_sbwad(struct brcmf_sdio_card *card)
int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
{ {
u32 regs = 0; u32 regs = 0;
u32 vendevid;
int ret = 0; int ret = 0;
sdiodev->card = kzalloc(sizeof(struct brcmf_sdio_card), GFP_ATOMIC); sdiodev->card = kzalloc(sizeof(struct brcmf_sdio_card), GFP_ATOMIC);
...@@ -436,12 +428,8 @@ int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev) ...@@ -436,12 +428,8 @@ int brcmf_sdio_probe(struct brcmf_sdio_dev *sdiodev)
/* Report the BAR, to fix if needed */ /* Report the BAR, to fix if needed */
sdiodev->card->sbwad = SI_ENUM_BASE; sdiodev->card->sbwad = SI_ENUM_BASE;
/* Read the vendor/device ID from the CIS */
vendevid = brcmf_sdcard_query_device(sdiodev->card);
/* try to attach to the target device */ /* try to attach to the target device */
sdiodev->bus = brcmf_sdbrcm_probe((vendevid >> 16), (vendevid & 0xFFFF), sdiodev->bus = brcmf_sdbrcm_probe(0, 0, 0, 0, regs, sdiodev->card);
0, 0, 0, 0, regs, sdiodev->card);
if (!sdiodev->bus) { if (!sdiodev->bus) {
BRCMF_ERROR(("%s: device attach failed\n", __func__)); BRCMF_ERROR(("%s: device attach failed\n", __func__));
ret = -ENODEV; ret = -ENODEV;
......
...@@ -75,8 +75,7 @@ extern void brcmf_bus_clearcounts(struct brcmf_pub *drvr); ...@@ -75,8 +75,7 @@ extern void brcmf_bus_clearcounts(struct brcmf_pub *drvr);
extern void brcmf_sdbrcm_wd_timer(struct brcmf_bus *bus, uint wdtick); extern void brcmf_sdbrcm_wd_timer(struct brcmf_bus *bus, uint wdtick);
extern void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no, extern void *brcmf_sdbrcm_probe(u16 bus_no, u16 slot, u16 func, uint bustype,
u16 slot, u16 func, uint bustype, u32 regsva, u32 regsva, void *card);
void *card);
extern void brcmf_sdbrcm_disconnect(void *ptr); extern void brcmf_sdbrcm_disconnect(void *ptr);
#endif /* _BRCMF_BUS_H_ */ #endif /* _BRCMF_BUS_H_ */
...@@ -625,8 +625,6 @@ struct brcmf_bus { ...@@ -625,8 +625,6 @@ struct brcmf_bus {
bool dpc_sched; /* Indicates DPC schedule (intrpt rcvd) */ bool dpc_sched; /* Indicates DPC schedule (intrpt rcvd) */
bool fcstate; /* State of dongle flow-control */ bool fcstate; /* State of dongle flow-control */
u16 cl_devid; /* cached devid for brcmf_sdio_probe_attach() */
uint blocksize; /* Block size of SDIO transfers */ uint blocksize; /* Block size of SDIO transfers */
uint roundup; /* Max roundup limit */ uint roundup; /* Max roundup limit */
...@@ -964,7 +962,7 @@ static void brcmf_sdbrcm_release(struct brcmf_bus *bus); ...@@ -964,7 +962,7 @@ static void brcmf_sdbrcm_release(struct brcmf_bus *bus);
static void brcmf_sdbrcm_release_malloc(struct brcmf_bus *bus); static void brcmf_sdbrcm_release_malloc(struct brcmf_bus *bus);
static bool brcmf_sdbrcm_chipmatch(u16 chipid); static bool brcmf_sdbrcm_chipmatch(u16 chipid);
static bool brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, void *card, static bool brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, void *card,
u32 regsva, u16 devid); u32 regsva);
static bool brcmf_sdbrcm_probe_malloc(struct brcmf_bus *bus, void *card); static bool brcmf_sdbrcm_probe_malloc(struct brcmf_bus *bus, void *card);
static bool brcmf_sdbrcm_probe_init(struct brcmf_bus *bus, void *card); static bool brcmf_sdbrcm_probe_init(struct brcmf_bus *bus, void *card);
static void brcmf_sdbrcm_release_dongle(struct brcmf_bus *bus); static void brcmf_sdbrcm_release_dongle(struct brcmf_bus *bus);
...@@ -5430,9 +5428,8 @@ static bool brcmf_sdbrcm_chipmatch(u16 chipid) ...@@ -5430,9 +5428,8 @@ static bool brcmf_sdbrcm_chipmatch(u16 chipid)
return false; return false;
} }
void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no, void *brcmf_sdbrcm_probe(u16 bus_no, u16 slot, u16 func, uint bustype,
u16 slot, u16 func, uint bustype, u32 regsva, u32 regsva, void *card)
void *card)
{ {
int ret; int ret;
struct brcmf_bus *bus; struct brcmf_bus *bus;
...@@ -5459,45 +5456,10 @@ void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no, ...@@ -5459,45 +5456,10 @@ void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no,
brcmf_c_init(); brcmf_c_init();
BRCMF_TRACE(("%s: Enter\n", __func__)); BRCMF_TRACE(("%s: Enter\n", __func__));
BRCMF_INFO(("%s: venid 0x%04x devid 0x%04x\n", __func__, venid, devid));
/* We make an assumption about address window mappings: /* We make an assumption about address window mappings:
* regsva == SI_ENUM_BASE*/ * regsva == SI_ENUM_BASE*/
/* SDIO car passes venid and devid based on CIS parsing -- but
* low-power start
* means early parse could fail, so here we should get either an ID
* we recognize OR (-1) indicating we must request power first.
*/
/* Check the Vendor ID */
switch (venid) {
case 0x0000:
case PCI_VENDOR_ID_BROADCOM:
break;
default:
BRCMF_ERROR(("%s: unknown vendor: 0x%04x\n", __func__, venid));
return NULL;
}
/* Check the Device ID and make sure it's one that we support */
switch (devid) {
case BCM4329_D11NDUAL_ID: /* 4329 802.11n dualband device */
case BCM4329_D11N2G_ID: /* 4329 802.11n 2.4G device */
case BCM4329_D11N5G_ID: /* 4329 802.11n 5G device */
case 0x4329:
BRCMF_INFO(("%s: found 4329 Dongle\n", __func__));
break;
case 0:
BRCMF_INFO(("%s: allow device id 0, will check chip"
" internals\n", __func__));
break;
default:
BRCMF_ERROR(("%s: skipping 0x%04x/0x%04x, not a dongle\n",
__func__, venid, devid));
return NULL;
}
/* Allocate private bus interface state */ /* Allocate private bus interface state */
bus = kzalloc(sizeof(struct brcmf_bus), GFP_ATOMIC); bus = kzalloc(sizeof(struct brcmf_bus), GFP_ATOMIC);
if (!bus) { if (!bus) {
...@@ -5506,14 +5468,13 @@ void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no, ...@@ -5506,14 +5468,13 @@ void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no,
goto fail; goto fail;
} }
bus->card = card; bus->card = card;
bus->cl_devid = (u16) devid;
bus->bus = BRCMF_BUS; bus->bus = BRCMF_BUS;
bus->tx_seq = SDPCM_SEQUENCE_WRAP - 1; bus->tx_seq = SDPCM_SEQUENCE_WRAP - 1;
bus->usebufpool = false; /* Use bufpool if allocated, bus->usebufpool = false; /* Use bufpool if allocated,
else use locally malloced rxbuf */ else use locally malloced rxbuf */
/* attempt to attach to the dongle */ /* attempt to attach to the dongle */
if (!(brcmf_sdbrcm_probe_attach(bus, card, regsva, devid))) { if (!(brcmf_sdbrcm_probe_attach(bus, card, regsva))) {
BRCMF_ERROR(("%s: brcmf_sdbrcm_probe_attach failed\n", BRCMF_ERROR(("%s: brcmf_sdbrcm_probe_attach failed\n",
__func__)); __func__));
goto fail; goto fail;
...@@ -5623,8 +5584,7 @@ void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no, ...@@ -5623,8 +5584,7 @@ void *brcmf_sdbrcm_probe(u16 venid, u16 devid, u16 bus_no,
} }
static bool static bool
brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, void *card, u32 regsva, brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, void *card, u32 regsva)
u16 devid)
{ {
u8 clkctl = 0; u8 clkctl = 0;
int err = 0; int err = 0;
...@@ -6170,8 +6130,7 @@ int brcmf_bus_devreset(struct brcmf_pub *drvr, u8 flag) ...@@ -6170,8 +6130,7 @@ int brcmf_bus_devreset(struct brcmf_pub *drvr, u8 flag)
/* Attempt to re-attach & download */ /* Attempt to re-attach & download */
if (brcmf_sdbrcm_probe_attach(bus, bus->card, if (brcmf_sdbrcm_probe_attach(bus, bus->card,
SI_ENUM_BASE, SI_ENUM_BASE)) {
bus->cl_devid)) {
/* Attempt to download binary to the dongle */ /* Attempt to download binary to the dongle */
if (brcmf_sdbrcm_probe_init(bus, bus->card)) { if (brcmf_sdbrcm_probe_init(bus, bus->card)) {
/* Re-init bus, enable F2 transfer */ /* Re-init bus, enable F2 transfer */
......
...@@ -268,9 +268,6 @@ extern int brcmf_sdcard_rwdata(struct brcmf_sdio_card *card, uint rw, u32 addr, ...@@ -268,9 +268,6 @@ extern int brcmf_sdcard_rwdata(struct brcmf_sdio_card *card, uint rw, u32 addr,
/* Issue an abort to the specified function */ /* Issue an abort to the specified function */
extern int brcmf_sdcard_abort(struct brcmf_sdio_card *card, uint fn); extern int brcmf_sdcard_abort(struct brcmf_sdio_card *card, uint fn);
/* Returns the "Device ID" of target device on the SDIO bus. */
extern int brcmf_sdcard_query_device(struct brcmf_sdio_card *card);
/* Miscellaneous knob tweaker. */ /* Miscellaneous knob tweaker. */
extern int brcmf_sdcard_iovar_op(struct brcmf_sdio_card *card, const char *name, extern int brcmf_sdcard_iovar_op(struct brcmf_sdio_card *card, const char *name,
void *params, int plen, void *arg, int len, void *params, int plen, void *arg, int len,
......
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