Loading Documentation/devicetree/bindings/mmc/sdhci-msm.txt +3 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,9 @@ In the following, <supply> can be vdd (flash core voltage) or vdd-io (I/O voltag big/little cluster CPU cores used for PM QoS voting. This is parsed only for pm QoS request type of PM_QOS_REQ_AFFINE_CORES ("affine_cores"). - qcom,wakeup-on-idle: if configured, the mmcqd thread will call set_wake_up_idle(), thereby voting for it to be called on idle CPUs. Example: aliases { Loading drivers/mmc/card/queue.c +2 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ static int mmc_queue_thread(void *d) struct mmc_card *card = mq->card; current->flags |= PF_MEMALLOC; if (card->host->wakeup_on_idle) set_wake_up_idle(true); down(&mq->thread_sem); do { Loading drivers/mmc/host/sdhci-msm.c +8 −2 Original line number Diff line number Diff line Loading @@ -1550,7 +1550,9 @@ static void sdhci_msm_populate_affinity(struct device *dev, #endif /* Parse platform data */ static struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev) static struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev, struct sdhci_msm_host *msm_host) { struct sdhci_msm_pltfm_data *pdata = NULL; struct device_node *np = dev->of_node; Loading Loading @@ -1708,6 +1710,9 @@ static struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev) sdhci_msm_populate_affinity(dev, pdata, np); if (of_property_read_bool(np, "qcom,wakeup-on-idle")) msm_host->mmc->wakeup_on_idle = true; return pdata; out: return NULL; Loading Loading @@ -3168,7 +3173,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) goto pltfm_free; } msm_host->pdata = sdhci_msm_populate_pdata(&pdev->dev); msm_host->pdata = sdhci_msm_populate_pdata(&pdev->dev, msm_host); if (!msm_host->pdata) { dev_err(&pdev->dev, "DT parsing error\n"); goto pltfm_free; Loading include/linux/mmc/host.h +1 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,7 @@ struct mmc_host { * actually disabling the clock from it's source. */ bool card_clock_off; bool wakeup_on_idle; unsigned long private[0] ____cacheline_aligned; }; Loading Loading
Documentation/devicetree/bindings/mmc/sdhci-msm.txt +3 −0 Original line number Diff line number Diff line Loading @@ -119,6 +119,9 @@ In the following, <supply> can be vdd (flash core voltage) or vdd-io (I/O voltag big/little cluster CPU cores used for PM QoS voting. This is parsed only for pm QoS request type of PM_QOS_REQ_AFFINE_CORES ("affine_cores"). - qcom,wakeup-on-idle: if configured, the mmcqd thread will call set_wake_up_idle(), thereby voting for it to be called on idle CPUs. Example: aliases { Loading
drivers/mmc/card/queue.c +2 −0 Original line number Diff line number Diff line Loading @@ -60,6 +60,8 @@ static int mmc_queue_thread(void *d) struct mmc_card *card = mq->card; current->flags |= PF_MEMALLOC; if (card->host->wakeup_on_idle) set_wake_up_idle(true); down(&mq->thread_sem); do { Loading
drivers/mmc/host/sdhci-msm.c +8 −2 Original line number Diff line number Diff line Loading @@ -1550,7 +1550,9 @@ static void sdhci_msm_populate_affinity(struct device *dev, #endif /* Parse platform data */ static struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev) static struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev, struct sdhci_msm_host *msm_host) { struct sdhci_msm_pltfm_data *pdata = NULL; struct device_node *np = dev->of_node; Loading Loading @@ -1708,6 +1710,9 @@ static struct sdhci_msm_pltfm_data *sdhci_msm_populate_pdata(struct device *dev) sdhci_msm_populate_affinity(dev, pdata, np); if (of_property_read_bool(np, "qcom,wakeup-on-idle")) msm_host->mmc->wakeup_on_idle = true; return pdata; out: return NULL; Loading Loading @@ -3168,7 +3173,8 @@ static int sdhci_msm_probe(struct platform_device *pdev) goto pltfm_free; } msm_host->pdata = sdhci_msm_populate_pdata(&pdev->dev); msm_host->pdata = sdhci_msm_populate_pdata(&pdev->dev, msm_host); if (!msm_host->pdata) { dev_err(&pdev->dev, "DT parsing error\n"); goto pltfm_free; Loading
include/linux/mmc/host.h +1 −0 Original line number Diff line number Diff line Loading @@ -458,6 +458,7 @@ struct mmc_host { * actually disabling the clock from it's source. */ bool card_clock_off; bool wakeup_on_idle; unsigned long private[0] ____cacheline_aligned; }; Loading