From: Shawn Lin Date: Tue, 16 Dec 2025 11:50:04 +0000 (+0800) Subject: mmc: dw_mmc: Move clock rate stuff from struct dw_mci_slot to struct dw_mci X-Git-Tag: v7.1-rc1~157^2~106 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=027e1688bc4a77134f3bd9a2b0cac031e743cded;p=thirdparty%2Fkernel%2Fstable.git mmc: dw_mmc: Move clock rate stuff from struct dw_mci_slot to struct dw_mci Except for moving them, this patch also renames __clk_old to clk_old. Signed-off-by: Shawn Lin Signed-off-by: Ulf Hansson --- diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c index 4dbc5417c7bec..18c44a23a698a 100644 --- a/drivers/mmc/host/dw_mmc.c +++ b/drivers/mmc/host/dw_mmc.c @@ -1142,7 +1142,7 @@ static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data) static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit) { struct dw_mci *host = slot->host; - unsigned int clock = slot->clock; + unsigned int clock = host->clock; u32 div; u32 clk_en_a; u32 sdmmc_cmd_bits = SDMMC_CMD_UPD_CLK | SDMMC_CMD_PRV_DAT_WAIT; @@ -1167,7 +1167,7 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit) div = (host->bus_hz != clock) ? DIV_ROUND_UP(div, 2) : 0; - if ((clock != slot->__clk_old && + if ((clock != host->clk_old && !test_bit(DW_MMC_CARD_NEEDS_POLL, &host->flags)) || force_clkinit) { /* Silent the verbose log if calling from PM context */ @@ -1210,7 +1210,7 @@ static void dw_mci_setup_bus(struct dw_mci_slot *slot, bool force_clkinit) mci_send_cmd(slot, sdmmc_cmd_bits, 0); /* keep the last clock value that was requested from core */ - slot->__clk_old = clock; + host->clk_old = clock; host->mmc->actual_clock = div ? ((host->bus_hz / div) >> 1) : host->bus_hz; } @@ -1413,7 +1413,7 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios) * Use mirror of ios->clock to prevent race with mmc * core ios update when finding the minimum. */ - slot->clock = ios->clock; + slot->host->clock = ios->clock; if (drv_data && drv_data->set_ios) drv_data->set_ios(slot->host, ios); diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h index 3a2e1a046b3ea..99a69dacb3cdd 100644 --- a/drivers/mmc/host/dw_mmc.h +++ b/drivers/mmc/host/dw_mmc.h @@ -130,6 +130,8 @@ struct dw_mci_dma_slave { * @mmc: The mmc_host representing this dw_mci. * @flags: Random state bits associated with the host. * @ctype: Card type for this host. + * @clock: Clock rate configured by set_ios(). Protected by host->lock. + * @clk_old: The last clock value that was requested from core. * * Locking * ======= @@ -251,6 +253,8 @@ struct dw_mci { #define DW_MMC_CARD_NO_USE_HOLD 3 #define DW_MMC_CARD_NEEDS_POLL 4 u32 ctype; + unsigned int clock; + unsigned int clk_old; }; /* DMA ops for Internal/External DMAC interface */ @@ -559,8 +563,6 @@ static inline int dw_mci_runtime_resume(struct device *device) { return -EOPNOTS * processed, or NULL when the slot is idle. * @queue_node: List node for placing this node in the @queue list of * &struct dw_mci. - * @clock: Clock rate configured by set_ios(). Protected by host->lock. - * @__clk_old: The last clock value that was requested from core. * Keeping track of this helps us to avoid spamming the console. */ struct dw_mci_slot { @@ -568,9 +570,6 @@ struct dw_mci_slot { struct mmc_request *mrq; struct list_head queue_node; - - unsigned int clock; - unsigned int __clk_old; }; /**