[PATCH v1 3/4] wifi: rsi: sdio: Migrate to use sdio specific shutdown function

Uwe Kleine-König posted 4 patches 1 month, 3 weeks ago
[PATCH v1 3/4] wifi: rsi: sdio: Migrate to use sdio specific shutdown function
Posted by Uwe Kleine-König 1 month, 3 weeks ago
This saves a cast in the driver. The motivation is stop using the callback
.shutdown in rsi_driver.drv to make it possible to drop that.

Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
---
 drivers/net/wireless/rsi/rsi_91x_sdio.c | 5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)

diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c b/drivers/net/wireless/rsi/rsi_91x_sdio.c
index c2b2d09b616f..a1376847ac85 100644
--- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
+++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
@@ -1442,9 +1442,8 @@ static int rsi_thaw(struct device *dev)
 	return 0;
 }
 
-static void rsi_shutdown(struct device *dev)
+static void rsi_shutdown(struct sdio_func *pfunction)
 {
-	struct sdio_func *pfunction = dev_to_sdio_func(dev);
 	struct rsi_hw *adapter = sdio_get_drvdata(pfunction);
 	struct rsi_91x_sdiodev *sdev = adapter->rsi_dev;
 	struct ieee80211_hw *hw = adapter->hw;
@@ -1509,10 +1508,10 @@ static struct sdio_driver rsi_driver = {
 	.name       = "RSI-SDIO WLAN",
 	.probe      = rsi_probe,
 	.remove     = rsi_disconnect,
+	.shutdown   = pm_ptr(rsi_shutdown),
 	.id_table   = rsi_dev_table,
 	.drv = {
 		.pm = pm_ptr(&rsi_pm_ops),
-		.shutdown = pm_ptr(rsi_shutdown),
 	}
 };
 module_sdio_driver(rsi_driver);
-- 
2.47.3

Re: [PATCH v1 3/4] wifi: rsi: sdio: Migrate to use sdio specific shutdown function
Posted by Ulf Hansson 1 month, 3 weeks ago
On Wed, 17 Dec 2025 at 12:09, Uwe Kleine-König
<u.kleine-koenig@baylibre.com> wrote:
>
> This saves a cast in the driver. The motivation is stop using the callback
> .shutdown in rsi_driver.drv to make it possible to drop that.
>
> Signed-off-by: Uwe Kleine-König <u.kleine-koenig@baylibre.com>
> ---
>  drivers/net/wireless/rsi/rsi_91x_sdio.c | 5 ++---
>  1 file changed, 2 insertions(+), 3 deletions(-)
>
> diff --git a/drivers/net/wireless/rsi/rsi_91x_sdio.c b/drivers/net/wireless/rsi/rsi_91x_sdio.c
> index c2b2d09b616f..a1376847ac85 100644
> --- a/drivers/net/wireless/rsi/rsi_91x_sdio.c
> +++ b/drivers/net/wireless/rsi/rsi_91x_sdio.c
> @@ -1442,9 +1442,8 @@ static int rsi_thaw(struct device *dev)
>         return 0;
>  }
>
> -static void rsi_shutdown(struct device *dev)
> +static void rsi_shutdown(struct sdio_func *pfunction)
>  {
> -       struct sdio_func *pfunction = dev_to_sdio_func(dev);
>         struct rsi_hw *adapter = sdio_get_drvdata(pfunction);
>         struct rsi_91x_sdiodev *sdev = adapter->rsi_dev;
>         struct ieee80211_hw *hw = adapter->hw;
> @@ -1509,10 +1508,10 @@ static struct sdio_driver rsi_driver = {
>         .name       = "RSI-SDIO WLAN",
>         .probe      = rsi_probe,
>         .remove     = rsi_disconnect,
> +       .shutdown   = pm_ptr(rsi_shutdown),
>         .id_table   = rsi_dev_table,
>         .drv = {
>                 .pm = pm_ptr(&rsi_pm_ops),
> -               .shutdown = pm_ptr(rsi_shutdown),

Apologize for my ignorance, but why does an SDIO function driver need
a ->shutdown() callback in the first place?

What does it need to do during shutdown?

>         }
>  };
>  module_sdio_driver(rsi_driver);
> --
> 2.47.3
>

Kind regards
Uffe