wifi: brcmfmac: Remove #ifdef guards for PM related functions
authorPaul Cercueil <paul@crapouillou.net>
Mon, 27 Jun 2022 19:37:01 +0000 (20:37 +0100)
committerKalle Valo <kvalo@kernel.org>
Thu, 28 Jul 2022 09:57:29 +0000 (12:57 +0300)
Use the new DEFINE_SIMPLE_DEV_PM_OPS() and pm_sleep_ptr() macros to
handle the .suspend/.resume callbacks.

These macros allow the suspend and resume functions to be automatically
dropped by the compiler when CONFIG_SUSPEND is disabled, without having
to use #ifdef guards.

Some other functions not directly called by the .suspend/.resume
callbacks, but still related to PM were also taken outside #ifdef
guards.

The advantage is then that these functions are now always compiled
independently of any Kconfig option, and thanks to that bugs and
regressions are easier to catch.

Signed-off-by: Paul Cercueil <paul@crapouillou.net>
Signed-off-by: Kalle Valo <kvalo@kernel.org>
Link: https://lore.kernel.org/r/20220627193701.31074-1-paul@crapouillou.net
drivers/net/wireless/broadcom/brcm80211/brcmfmac/bcmsdh.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.c
drivers/net/wireless/broadcom/brcm80211/brcmfmac/sdio.h

index 9c598ea97499f750fcc8f145d48c17e1aa82964c..62d5c5f5fbc8b5a8cf0bef215cad4021caf8b97d 100644 (file)
@@ -784,9 +784,11 @@ void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev)
        sdiodev->txglomsz = sdiodev->settings->bus.sdio.txglomsz;
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int brcmf_sdiod_freezer_attach(struct brcmf_sdio_dev *sdiodev)
 {
+       if (!IS_ENABLED(CONFIG_PM_SLEEP))
+               return 0;
+
        sdiodev->freezer = kzalloc(sizeof(*sdiodev->freezer), GFP_KERNEL);
        if (!sdiodev->freezer)
                return -ENOMEM;
@@ -833,7 +835,8 @@ static void brcmf_sdiod_freezer_off(struct brcmf_sdio_dev *sdiodev)
 
 bool brcmf_sdiod_freezing(struct brcmf_sdio_dev *sdiodev)
 {
-       return atomic_read(&sdiodev->freezer->freezing);
+       return IS_ENABLED(CONFIG_PM_SLEEP) &&
+               atomic_read(&sdiodev->freezer->freezing);
 }
 
 void brcmf_sdiod_try_freeze(struct brcmf_sdio_dev *sdiodev)
@@ -847,24 +850,16 @@ void brcmf_sdiod_try_freeze(struct brcmf_sdio_dev *sdiodev)
 
 void brcmf_sdiod_freezer_count(struct brcmf_sdio_dev *sdiodev)
 {
-       atomic_inc(&sdiodev->freezer->thread_count);
+       if (IS_ENABLED(CONFIG_PM_SLEEP))
+               atomic_inc(&sdiodev->freezer->thread_count);
 }
 
 void brcmf_sdiod_freezer_uncount(struct brcmf_sdio_dev *sdiodev)
 {
-       atomic_dec(&sdiodev->freezer->thread_count);
-}
-#else
-static int brcmf_sdiod_freezer_attach(struct brcmf_sdio_dev *sdiodev)
-{
-       return 0;
+       if (IS_ENABLED(CONFIG_PM_SLEEP))
+               atomic_dec(&sdiodev->freezer->thread_count);
 }
 
-static void brcmf_sdiod_freezer_detach(struct brcmf_sdio_dev *sdiodev)
-{
-}
-#endif /* CONFIG_PM_SLEEP */
-
 int brcmf_sdiod_remove(struct brcmf_sdio_dev *sdiodev)
 {
        sdiodev->state = BRCMF_SDIOD_DOWN;
@@ -1136,7 +1131,6 @@ notsup:
        brcmf_dbg(SDIO, "WOWL not supported\n");
 }
 
-#ifdef CONFIG_PM_SLEEP
 static int brcmf_ops_sdio_suspend(struct device *dev)
 {
        struct sdio_func *func;
@@ -1204,11 +1198,9 @@ static int brcmf_ops_sdio_resume(struct device *dev)
        return ret;
 }
 
-static const struct dev_pm_ops brcmf_sdio_pm_ops = {
-       .suspend        = brcmf_ops_sdio_suspend,
-       .resume         = brcmf_ops_sdio_resume,
-};
-#endif /* CONFIG_PM_SLEEP */
+static DEFINE_SIMPLE_DEV_PM_OPS(brcmf_sdio_pm_ops,
+                               brcmf_ops_sdio_suspend,
+                               brcmf_ops_sdio_resume);
 
 static struct sdio_driver brcmf_sdmmc_driver = {
        .probe = brcmf_ops_sdio_probe,
@@ -1217,9 +1209,7 @@ static struct sdio_driver brcmf_sdmmc_driver = {
        .id_table = brcmf_sdmmc_ids,
        .drv = {
                .owner = THIS_MODULE,
-#ifdef CONFIG_PM_SLEEP
-               .pm = &brcmf_sdio_pm_ops,
-#endif /* CONFIG_PM_SLEEP */
+               .pm = pm_sleep_ptr(&brcmf_sdio_pm_ops),
                .coredump = brcmf_dev_coredump,
        },
 };
index 2136c3c434ae6fc12cd0c95d09ac96abce37a28d..762e887e8ea496cc2d1df8e14cbd4a873ef9f5d5 100644 (file)
@@ -4020,15 +4020,14 @@ brcmf_sdio_probe_attach(struct brcmf_sdio *bus)
         */
        brcmf_sdiod_sgtable_alloc(sdiodev);
 
-#ifdef CONFIG_PM_SLEEP
        /* wowl can be supported when KEEP_POWER is true and (WAKE_SDIO_IRQ
         * is true or when platform data OOB irq is true).
         */
-       if ((sdio_get_host_pm_caps(sdiodev->func1) & MMC_PM_KEEP_POWER) &&
+       if (IS_ENABLED(CONFIG_PM_SLEEP) &&
+           (sdio_get_host_pm_caps(sdiodev->func1) & MMC_PM_KEEP_POWER) &&
            ((sdio_get_host_pm_caps(sdiodev->func1) & MMC_PM_WAKE_SDIO_IRQ) ||
             (sdiodev->settings->bus.sdio.oob_irq_supported)))
                sdiodev->bus_if->wowl_supported = true;
-#endif
 
        if (brcmf_sdio_kso_init(bus)) {
                brcmf_err("error enabling KSO\n");
index 15d2c02fa3ec8eb353479e0db50826678cae64ff..47351ff458cab234652b891843de07d0ce0e9119 100644 (file)
@@ -346,26 +346,10 @@ int brcmf_sdiod_abort(struct brcmf_sdio_dev *sdiodev, struct sdio_func *func);
 void brcmf_sdiod_sgtable_alloc(struct brcmf_sdio_dev *sdiodev);
 void brcmf_sdiod_change_state(struct brcmf_sdio_dev *sdiodev,
                              enum brcmf_sdiod_state state);
-#ifdef CONFIG_PM_SLEEP
 bool brcmf_sdiod_freezing(struct brcmf_sdio_dev *sdiodev);
 void brcmf_sdiod_try_freeze(struct brcmf_sdio_dev *sdiodev);
 void brcmf_sdiod_freezer_count(struct brcmf_sdio_dev *sdiodev);
 void brcmf_sdiod_freezer_uncount(struct brcmf_sdio_dev *sdiodev);
-#else
-static inline bool brcmf_sdiod_freezing(struct brcmf_sdio_dev *sdiodev)
-{
-       return false;
-}
-static inline void brcmf_sdiod_try_freeze(struct brcmf_sdio_dev *sdiodev)
-{
-}
-static inline void brcmf_sdiod_freezer_count(struct brcmf_sdio_dev *sdiodev)
-{
-}
-static inline void brcmf_sdiod_freezer_uncount(struct brcmf_sdio_dev *sdiodev)
-{
-}
-#endif /* CONFIG_PM_SLEEP */
 
 int brcmf_sdiod_probe(struct brcmf_sdio_dev *sdiodev);
 int brcmf_sdiod_remove(struct brcmf_sdio_dev *sdiodev);