diff options
| author | David S. Miller <davem@davemloft.net> | 2021-08-23 11:59:49 +0100 |
|---|---|---|
| committer | David S. Miller <davem@davemloft.net> | 2021-08-23 11:59:49 +0100 |
| commit | e6a70a02defd9200ed4b9fbf3714fa9622a93fa3 (patch) | |
| tree | 69460d3e609c6dac983c9f94b389198a26b16db5 /drivers/net/wireless/microchip/wilc1000/sdio.c | |
| parent | 056b29ae071bffc4ed6108a943f7d2929ab61ea1 (diff) | |
| parent | 0dc62413c882d765db7a3ff4d507e8c0a804ba68 (diff) | |
| download | linux-e6a70a02defd9200ed4b9fbf3714fa9622a93fa3.tar.gz linux-e6a70a02defd9200ed4b9fbf3714fa9622a93fa3.tar.bz2 linux-e6a70a02defd9200ed4b9fbf3714fa9622a93fa3.zip | |
Merge tag 'wireless-drivers-next-2021-08-22' of git://git.kernel.org/pub/scm/linux/kernel/git/kvalo/wireless-drivers-next
Kalle Valo says:
====================
wireless-drivers-next patches for v5.15
First set of patches for v5.15. This got delayed as I have been mostly
offline for the last few weeks. The biggest change is removal of
prism54 driver, otherwise just smaller changes.
Major changes:
ath5k, ath9k, ath10k, ath11k:
* switch from 'pci_' to 'dma_' API
brcmfmac
* allow per-board firmware binaries
* add support 43752 SDIO device
prism54
* remove the obsoleted driver, everyone should be using p54 driver instead
====================
Signed-off-by: David S. Miller <davem@davemloft.net>
Diffstat (limited to 'drivers/net/wireless/microchip/wilc1000/sdio.c')
| -rw-r--r-- | drivers/net/wireless/microchip/wilc1000/sdio.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/drivers/net/wireless/microchip/wilc1000/sdio.c b/drivers/net/wireless/microchip/wilc1000/sdio.c index e14b9fc2c67a..42e03a701ae1 100644 --- a/drivers/net/wireless/microchip/wilc1000/sdio.c +++ b/drivers/net/wireless/microchip/wilc1000/sdio.c @@ -129,10 +129,8 @@ static int wilc_sdio_probe(struct sdio_func *func, ret = wilc_cfg80211_init(&wilc, &func->dev, WILC_HIF_SDIO, &wilc_hif_sdio); - if (ret) { - kfree(sdio_priv); - return ret; - } + if (ret) + goto free; if (IS_ENABLED(CONFIG_WILC1000_HW_OOB_INTR)) { struct device_node *np = func->card->dev.of_node; @@ -148,24 +146,29 @@ static int wilc_sdio_probe(struct sdio_func *func, wilc->bus_data = sdio_priv; wilc->dev = &func->dev; - wilc->rtc_clk = devm_clk_get(&func->card->dev, "rtc"); - if (PTR_ERR_OR_ZERO(wilc->rtc_clk) == -EPROBE_DEFER) { - kfree(sdio_priv); - return -EPROBE_DEFER; - } else if (!IS_ERR(wilc->rtc_clk)) - clk_prepare_enable(wilc->rtc_clk); + wilc->rtc_clk = devm_clk_get_optional(&func->card->dev, "rtc"); + if (IS_ERR(wilc->rtc_clk)) { + ret = PTR_ERR(wilc->rtc_clk); + goto dispose_irq; + } + clk_prepare_enable(wilc->rtc_clk); dev_info(&func->dev, "Driver Initializing success\n"); return 0; + +dispose_irq: + irq_dispose_mapping(wilc->dev_irq_num); + wilc_netdev_cleanup(wilc); +free: + kfree(sdio_priv); + return ret; } static void wilc_sdio_remove(struct sdio_func *func) { struct wilc *wilc = sdio_get_drvdata(func); - if (!IS_ERR(wilc->rtc_clk)) - clk_disable_unprepare(wilc->rtc_clk); - + clk_disable_unprepare(wilc->rtc_clk); wilc_netdev_cleanup(wilc); } |
