diff options
Diffstat (limited to 'drivers')
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | 31 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.c | 21 | ||||
-rw-r--r-- | drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h | 3 |
3 files changed, 21 insertions, 34 deletions
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c index 5e7b70e0f4ea..868cb9deacaa 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c +++ b/drivers/net/wireless/brcm80211/brcmfmac/dhd_sdio.c | |||
@@ -3867,31 +3867,6 @@ static void brcmf_sdbrcm_sdiod_drive_strength_init(struct brcmf_bus *bus, | |||
3867 | } | 3867 | } |
3868 | } | 3868 | } |
3869 | 3869 | ||
3870 | static int | ||
3871 | brcmf_sdbrcm_chip_attach(struct brcmf_bus *bus, u32 regs) | ||
3872 | { | ||
3873 | struct chip_info *ci; | ||
3874 | int err; | ||
3875 | |||
3876 | brcmf_dbg(TRACE, "Enter\n"); | ||
3877 | |||
3878 | /* alloc chip_info_t */ | ||
3879 | ci = kzalloc(sizeof(struct chip_info), GFP_ATOMIC); | ||
3880 | if (NULL == ci) | ||
3881 | return -ENOMEM; | ||
3882 | |||
3883 | err = brcmf_sdio_chip_attach(bus->sdiodev, ci, regs); | ||
3884 | if (err) | ||
3885 | goto fail; | ||
3886 | |||
3887 | bus->ci = ci; | ||
3888 | return 0; | ||
3889 | fail: | ||
3890 | bus->ci = NULL; | ||
3891 | kfree(ci); | ||
3892 | return err; | ||
3893 | } | ||
3894 | |||
3895 | static bool | 3870 | static bool |
3896 | brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva) | 3871 | brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva) |
3897 | { | 3872 | { |
@@ -3913,7 +3888,7 @@ brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva) | |||
3913 | #endif /* BCMDBG */ | 3888 | #endif /* BCMDBG */ |
3914 | 3889 | ||
3915 | /* | 3890 | /* |
3916 | * Force PLL off until brcmf_sdbrcm_chip_attach() | 3891 | * Force PLL off until brcmf_sdio_chip_attach() |
3917 | * programs PLL control regs | 3892 | * programs PLL control regs |
3918 | */ | 3893 | */ |
3919 | 3894 | ||
@@ -3931,8 +3906,8 @@ brcmf_sdbrcm_probe_attach(struct brcmf_bus *bus, u32 regsva) | |||
3931 | goto fail; | 3906 | goto fail; |
3932 | } | 3907 | } |
3933 | 3908 | ||
3934 | if (brcmf_sdbrcm_chip_attach(bus, regsva)) { | 3909 | if (brcmf_sdio_chip_attach(bus->sdiodev, &bus->ci, regsva)) { |
3935 | brcmf_dbg(ERROR, "brcmf_sdbrcm_chip_attach failed!\n"); | 3910 | brcmf_dbg(ERROR, "brcmf_sdio_chip_attach failed!\n"); |
3936 | goto fail; | 3911 | goto fail; |
3937 | } | 3912 | } |
3938 | 3913 | ||
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 | } |
diff --git a/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h b/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h index 17007bdad564..25ac3857039e 100644 --- a/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h +++ b/drivers/net/wireless/brcm80211/brcmfmac/sdio_chip.h | |||
@@ -137,7 +137,6 @@ struct sbconfig { | |||
137 | extern void brcmf_sdio_chip_coredisable(struct brcmf_sdio_dev *sdiodev, | 137 | extern void brcmf_sdio_chip_coredisable(struct brcmf_sdio_dev *sdiodev, |
138 | u32 corebase); | 138 | u32 corebase); |
139 | extern int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev, | 139 | extern int brcmf_sdio_chip_attach(struct brcmf_sdio_dev *sdiodev, |
140 | struct chip_info *ci, u32 regs); | 140 | struct chip_info **ci_ptr, u32 regs); |
141 | |||
142 | 141 | ||
143 | #endif /* _BRCMFMAC_SDIO_CHIP_H_ */ | 142 | #endif /* _BRCMFMAC_SDIO_CHIP_H_ */ |