diff options
Diffstat (limited to 'drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c b/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c index 002157f0ce29..10befbfa7e1f 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c | |||
@@ -252,17 +252,25 @@ brcmf_sdio_chip_buscoresetup(struct brcmf_sdio_dev *sdiodev, | |||
252 | } | 252 | } |
253 | 253 | ||
254 | int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev, | 254 | int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev, |
255 | struct chip_info *ci, u32 regs) | 255 | struct chip_info **ci_ptr, u32 regs) |
256 | { | 256 | { |
257 | int ret = 0; | 257 | int ret; |
258 | struct chip_info *ci; | ||
259 | |||
260 | brcmf_dbg(TRACE, "Enter\n"); | ||
261 | |||
262 | /* alloc chip_info_t */ | ||
263 | ci = kzalloc(sizeof(struct chip_info), GFP_ATOMIC); | ||
264 | if (!ci) | ||
265 | return -ENOMEM; | ||
258 | 266 | ||
259 | ret = brcmf_sdio_chip_buscoreprep(sdiodev); | 267 | ret = brcmf_sdio_chip_buscoreprep(sdiodev); |
260 | if (ret != 0) | 268 | if (ret != 0) |
261 | return ret; | 269 | goto err; |
262 | 270 | ||
263 | ret = brcmf_sdio_chip_recognition(sdiodev, ci, regs); | 271 | ret = brcmf_sdio_chip_recognition(sdiodev, ci, regs); |
264 | if (ret != 0) | 272 | if (ret != 0) |
265 | return ret; | 273 | goto err; |
266 | 274 | ||
267 | brcmf_sdio_chip_buscoresetup(sdiodev, ci); | 275 | brcmf_sdio_chip_buscoresetup(sdiodev, ci); |
268 | 276 | ||
@@ -271,5 +279,10 @@ int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev, | |||
271 | brcmf_sdcard_reg_write(sdiodev, | 279 | brcmf_sdcard_reg_write(sdiodev, |
272 | CORE_CC_REG(ci->cccorebase, gpiopulldown), 4, 0); | 280 | CORE_CC_REG(ci->cccorebase, gpiopulldown), 4, 0); |
273 | 281 | ||
282 | *ci_ptr = ci; | ||
283 | return 0; | ||
284 | |||
285 | err: | ||
286 | kfree(ci); | ||
274 | return ret; | 287 | return ret; |
275 | } | 288 | } |