]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Revert "mmc: rtsx: reset power state on suspend"
authorGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Jan 2026 14:50:36 +0000 (15:50 +0100)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Wed, 21 Jan 2026 14:50:36 +0000 (15:50 +0100)
This reverts commit eac85fbd0867c25ac517f58fae401d65c627edff.

This is not the correct change, so revert it for now.

Fixes: eac85fbd0867 ("mmc: rtsx: reset power state on suspend")
Cc: Matthew Schwartz <matthew.schwartz@linux.dev>
Cc: Ulf Hansson <ulf.hansson@linaro.org>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
drivers/misc/cardreader/rtsx_pcr.c
drivers/mmc/host/rtsx_pci_sdmmc.c
include/linux/rtsx_common.h

index f1f4d8ed544d6ac4fb5d02b7bd1a0851a1dcc78c..f9952d76d6ed73ca52f0c6ea9ab43bbb0aef28df 100644 (file)
@@ -1654,7 +1654,6 @@ static int __maybe_unused rtsx_pci_suspend(struct device *dev_d)
        struct pci_dev *pcidev = to_pci_dev(dev_d);
        struct pcr_handle *handle = pci_get_drvdata(pcidev);
        struct rtsx_pcr *pcr = handle->pcr;
-       struct rtsx_slot *slot = &pcr->slots[RTSX_SD_CARD];
 
        dev_dbg(&(pcidev->dev), "--> %s\n", __func__);
 
@@ -1662,9 +1661,6 @@ static int __maybe_unused rtsx_pci_suspend(struct device *dev_d)
 
        mutex_lock(&pcr->pcr_mutex);
 
-       if (slot->p_dev && slot->power_off)
-               slot->power_off(slot->p_dev);
-
        rtsx_pci_power_off(pcr, HOST_ENTER_S3, false);
 
        mutex_unlock(&pcr->pcr_mutex);
@@ -1776,17 +1772,12 @@ static int rtsx_pci_runtime_suspend(struct device *device)
        struct pci_dev *pcidev = to_pci_dev(device);
        struct pcr_handle *handle = pci_get_drvdata(pcidev);
        struct rtsx_pcr *pcr = handle->pcr;
-       struct rtsx_slot *slot = &pcr->slots[RTSX_SD_CARD];
 
        dev_dbg(device, "--> %s\n", __func__);
 
        cancel_delayed_work_sync(&pcr->carddet_work);
 
        mutex_lock(&pcr->pcr_mutex);
-
-       if (slot->p_dev && slot->power_off)
-               slot->power_off(slot->p_dev);
-
        rtsx_pci_power_off(pcr, HOST_ENTER_S3, true);
 
        mutex_unlock(&pcr->pcr_mutex);
index b847d79d4d8cced9be2a54b9867dfe3c30acf3a8..5d3599ee06bff7546b8707c73166f67563c4e049 100644 (file)
@@ -47,7 +47,6 @@ struct realtek_pci_sdmmc {
 };
 
 static int sdmmc_init_sd_express(struct mmc_host *mmc, struct mmc_ios *ios);
-static int sd_power_on(struct realtek_pci_sdmmc *host, unsigned char power_mode);
 
 static inline struct device *sdmmc_dev(struct realtek_pci_sdmmc *host)
 {
@@ -822,15 +821,6 @@ static void sd_request(struct work_struct *work)
 
        rtsx_pci_start_run(pcr);
 
-       if (host->prev_power_state == MMC_POWER_OFF) {
-               err = sd_power_on(host, MMC_POWER_ON);
-               if (err) {
-                       cmd->error = err;
-                       mutex_unlock(&pcr->pcr_mutex);
-                       goto finish;
-               }
-       }
-
        rtsx_pci_switch_clock(pcr, host->clock, host->ssc_depth,
                        host->initial_mode, host->double_clk, host->vpclk);
        rtsx_pci_write_register(pcr, CARD_SELECT, 0x07, SD_MOD_SEL);
@@ -1491,16 +1481,6 @@ static void rtsx_pci_sdmmc_card_event(struct platform_device *pdev)
        mmc_detect_change(host->mmc, 0);
 }
 
-static void rtsx_pci_sdmmc_power_off(struct platform_device *pdev)
-{
-       struct realtek_pci_sdmmc *host = platform_get_drvdata(pdev);
-
-       if (!host)
-               return;
-
-       host->prev_power_state = MMC_POWER_OFF;
-}
-
 static int rtsx_pci_sdmmc_drv_probe(struct platform_device *pdev)
 {
        struct mmc_host *mmc;
@@ -1533,7 +1513,6 @@ static int rtsx_pci_sdmmc_drv_probe(struct platform_device *pdev)
        platform_set_drvdata(pdev, host);
        pcr->slots[RTSX_SD_CARD].p_dev = pdev;
        pcr->slots[RTSX_SD_CARD].card_event = rtsx_pci_sdmmc_card_event;
-       pcr->slots[RTSX_SD_CARD].power_off = rtsx_pci_sdmmc_power_off;
 
        mutex_init(&host->host_mutex);
 
@@ -1565,7 +1544,6 @@ static void rtsx_pci_sdmmc_drv_remove(struct platform_device *pdev)
        pcr = host->pcr;
        pcr->slots[RTSX_SD_CARD].p_dev = NULL;
        pcr->slots[RTSX_SD_CARD].card_event = NULL;
-       pcr->slots[RTSX_SD_CARD].power_off = NULL;
        mmc = host->mmc;
 
        cancel_work_sync(&host->work);
index f294f478f0c0e2381b1a8adf0a41e04cfb07fb10..da9c8c6b5d50f04bc08f7af7c48e90e15e96d0b4 100644 (file)
@@ -32,7 +32,6 @@ struct platform_device;
 struct rtsx_slot {
        struct platform_device  *p_dev;
        void                    (*card_event)(struct platform_device *p_dev);
-       void                    (*power_off)(struct platform_device *p_dev);
 };
 
 #endif