--- /dev/null
+From 3dd9a926ec2308e49445f22abef149fc64e9332e Mon Sep 17 00:00:00 2001
+From: Ulf Hansson <ulf.hansson@linaro.org>
+Date: Tue, 1 Mar 2022 12:53:00 +0100
+Subject: mmc: rtsx: Fix build errors/warnings for unused variable
+
+From: Ulf Hansson <ulf.hansson@linaro.org>
+
+commit 3dd9a926ec2308e49445f22abef149fc64e9332e upstream.
+
+The struct device *dev, is no longer needed at various functions, let's
+therefore drop it to fix the build errors/warnings.
+
+Fixes: 7570fb41e450 ("mmc: rtsx: Let MMC core handle runtime PM")
+Cc: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Reported-by: kernel test robot <lkp@intel.com>
+Signed-off-by: Ulf Hansson <ulf.hansson@linaro.org>
+Link: https://lore.kernel.org/r/20220301115300.64332-1-ulf.hansson@linaro.org
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mmc/host/rtsx_pci_sdmmc.c | 6 ------
+ 1 file changed, 6 deletions(-)
+
+--- a/drivers/mmc/host/rtsx_pci_sdmmc.c
++++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
+@@ -806,7 +806,6 @@ static void sd_request(struct work_struc
+ struct mmc_request *mrq = host->mrq;
+ struct mmc_command *cmd = mrq->cmd;
+ struct mmc_data *data = mrq->data;
+- struct device *dev = &host->pdev->dev;
+
+ unsigned int data_size = 0;
+ int err;
+@@ -1081,7 +1080,6 @@ static void sdmmc_set_ios(struct mmc_hos
+ {
+ struct realtek_pci_sdmmc *host = mmc_priv(mmc);
+ struct rtsx_pcr *pcr = host->pcr;
+- struct device *dev = &host->pdev->dev;
+
+ if (host->eject)
+ return;
+@@ -1130,7 +1128,6 @@ static int sdmmc_get_ro(struct mmc_host
+ {
+ struct realtek_pci_sdmmc *host = mmc_priv(mmc);
+ struct rtsx_pcr *pcr = host->pcr;
+- struct device *dev = &host->pdev->dev;
+ int ro = 0;
+ u32 val;
+
+@@ -1156,7 +1153,6 @@ static int sdmmc_get_cd(struct mmc_host
+ {
+ struct realtek_pci_sdmmc *host = mmc_priv(mmc);
+ struct rtsx_pcr *pcr = host->pcr;
+- struct device *dev = &host->pdev->dev;
+ int cd = 0;
+ u32 val;
+
+@@ -1255,7 +1251,6 @@ static int sdmmc_switch_voltage(struct m
+ {
+ struct realtek_pci_sdmmc *host = mmc_priv(mmc);
+ struct rtsx_pcr *pcr = host->pcr;
+- struct device *dev = &host->pdev->dev;
+ int err = 0;
+ u8 voltage;
+
+@@ -1308,7 +1303,6 @@ static int sdmmc_execute_tuning(struct m
+ {
+ struct realtek_pci_sdmmc *host = mmc_priv(mmc);
+ struct rtsx_pcr *pcr = host->pcr;
+- struct device *dev = &host->pdev->dev;
+ int err = 0;
+
+ if (host->eject)
--- /dev/null
+From 7570fb41e450ba37bf9335fe3751fa9f502c30fa Mon Sep 17 00:00:00 2001
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Date: Wed, 16 Feb 2022 13:54:31 +0800
+Subject: mmc: rtsx: Let MMC core handle runtime PM
+
+From: Kai-Heng Feng <kai.heng.feng@canonical.com>
+
+commit 7570fb41e450ba37bf9335fe3751fa9f502c30fa upstream.
+
+Since MMC core handles runtime PM reference counting, we can avoid doing
+redundant runtime PM work in the driver. That means the only thing
+commit 5b4258f6721f ("misc: rtsx: rts5249 support runtime PM") misses is
+to always enable runtime PM, to let its parent driver enable ASPM in the
+runtime idle routine.
+
+Fixes: 7499b529d97f ("mmc: rtsx: Use pm_runtime_{get,put}() to handle runtime PM")
+Reviewed-by: Ulf Hansson <ulf.hansson@linaro.org>
+Signed-off-by: Kai-Heng Feng <kai.heng.feng@canonical.com>
+Link: https://lore.kernel.org/r/20220216055435.2335297-1-kai.heng.feng@canonical.com
+Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
+---
+ drivers/mmc/host/rtsx_pci_sdmmc.c | 18 ------------------
+ 1 file changed, 18 deletions(-)
+
+--- a/drivers/mmc/host/rtsx_pci_sdmmc.c
++++ b/drivers/mmc/host/rtsx_pci_sdmmc.c
+@@ -823,7 +823,6 @@ static void sd_request(struct work_struc
+ }
+
+ mutex_lock(&pcr->pcr_mutex);
+- pm_runtime_get_sync(dev);
+
+ rtsx_pci_start_run(pcr);
+
+@@ -860,8 +859,6 @@ static void sd_request(struct work_struc
+ data->bytes_xfered = data->blocks * data->blksz;
+ }
+
+- pm_runtime_mark_last_busy(dev);
+- pm_runtime_put_autosuspend(dev);
+ mutex_unlock(&pcr->pcr_mutex);
+
+ finish:
+@@ -1093,7 +1090,6 @@ static void sdmmc_set_ios(struct mmc_hos
+ return;
+
+ mutex_lock(&pcr->pcr_mutex);
+- pm_runtime_get_sync(dev);
+
+ rtsx_pci_start_run(pcr);
+
+@@ -1127,8 +1123,6 @@ static void sdmmc_set_ios(struct mmc_hos
+ rtsx_pci_switch_clock(pcr, ios->clock, host->ssc_depth,
+ host->initial_mode, host->double_clk, host->vpclk);
+
+- pm_runtime_mark_last_busy(dev);
+- pm_runtime_put_autosuspend(dev);
+ mutex_unlock(&pcr->pcr_mutex);
+ }
+
+@@ -1144,7 +1138,6 @@ static int sdmmc_get_ro(struct mmc_host
+ return -ENOMEDIUM;
+
+ mutex_lock(&pcr->pcr_mutex);
+- pm_runtime_get_sync(dev);
+
+ rtsx_pci_start_run(pcr);
+
+@@ -1154,8 +1147,6 @@ static int sdmmc_get_ro(struct mmc_host
+ if (val & SD_WRITE_PROTECT)
+ ro = 1;
+
+- pm_runtime_mark_last_busy(dev);
+- pm_runtime_put_autosuspend(dev);
+ mutex_unlock(&pcr->pcr_mutex);
+
+ return ro;
+@@ -1173,7 +1164,6 @@ static int sdmmc_get_cd(struct mmc_host
+ return cd;
+
+ mutex_lock(&pcr->pcr_mutex);
+- pm_runtime_get_sync(dev);
+
+ rtsx_pci_start_run(pcr);
+
+@@ -1183,8 +1173,6 @@ static int sdmmc_get_cd(struct mmc_host
+ if (val & SD_EXIST)
+ cd = 1;
+
+- pm_runtime_mark_last_busy(dev);
+- pm_runtime_put_autosuspend(dev);
+ mutex_unlock(&pcr->pcr_mutex);
+
+ return cd;
+@@ -1282,7 +1270,6 @@ static int sdmmc_switch_voltage(struct m
+ return err;
+
+ mutex_lock(&pcr->pcr_mutex);
+- pm_runtime_get_sync(dev);
+
+ rtsx_pci_start_run(pcr);
+
+@@ -1312,8 +1299,6 @@ out:
+ err = rtsx_pci_write_register(pcr, SD_BUS_STAT,
+ SD_CLK_TOGGLE_EN | SD_CLK_FORCE_STOP, 0);
+
+- pm_runtime_mark_last_busy(dev);
+- pm_runtime_put_autosuspend(dev);
+ mutex_unlock(&pcr->pcr_mutex);
+
+ return err;
+@@ -1334,7 +1319,6 @@ static int sdmmc_execute_tuning(struct m
+ return err;
+
+ mutex_lock(&pcr->pcr_mutex);
+- pm_runtime_get_sync(dev);
+
+ rtsx_pci_start_run(pcr);
+
+@@ -1367,8 +1351,6 @@ static int sdmmc_execute_tuning(struct m
+ err = sd_change_phase(host, DDR50_RX_PHASE(pcr), true);
+
+ out:
+- pm_runtime_mark_last_busy(dev);
+- pm_runtime_put_autosuspend(dev);
+ mutex_unlock(&pcr->pcr_mutex);
+
+ return err;