dt: Document: Add optional dw_mmc pm bindings
PATCH 1/1 dt: Document: Add optional dw_mmc pm bindings
Add documentation for pm capabilties such as MMC_PM_KEEP_POWER and MMC_PM_WAKE_SDIO_IRQ.
--- .../devicetree/bindings/mmc/synposis-dw-mshc.txt | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-)
Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt +7 -0
@@ -47,6 +47,11 @@ Optional properties: * broken-cd: as documented in mmc core bindings. +* keep-power-in-suspend: Preserves card power during a suspend/resume cycle. + +* enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion. + + Samsung Exynos5250 specific properties: Aliases: - All the MSHC controller nodes should be represented in the aliases node using
@@ -69,6 +74,8 @@ board specific portions as listed below. num-slots = <1>; supports-highspeed; broken-cd; + keep-power-in-suspend; + enable-sdio-wakeup; fifo-depth = <0x80>; card-detect-delay = <200>;
Signature · 1 line
1.6.6.1
PATCH 1/1 mmc: dw_mmc: Add sdio power bindings
Add dt-based retrieval of host sdio pm capabilities. Based on the dt based discovery do a bus init in the resume function.
--- drivers/mmc/host/dw_mmc.c | 20 +++++++++++++++++--- include/linux/mmc/dw_mmc.h | 1 + 2 files changed, 18 insertions(+), 3 deletions(-)
drivers/mmc/host/dw_mmc.c +17 -3
@@ -617,13 +617,13 @@ static void mci_send_cmd(struct dw_mci_slot *slot, u32 cmd, u32 arg) cmd, arg, cmd_status); } -static void dw_mci_setup_bus (struct dw_mci_slot *slot) +static void dw_mci_setup_bus (struct dw_mci_slot *slot,bool force_clkinit) {struct dw_mci *host = slot->host;u32 div;u32 clk_en_a; -if (slot->clock != host->current_speed) { +if (slot->clock != host->current_speed || force_clkinit) { div = host->bus_hz / slot->clock;if (host->bus_hz % slot->clock && host->bus_hz > slot->clock)/*
@@ -684,7 +684,7 @@ static void __dw_mci_start_request(struct dw_mci *host, host->pdata->select_slot (slot->id);/* Slot specific timing and width adjustment */ -dw_mci_setup_bus (slot); +dw_mci_setup_bus (slot, false); host->cur_slot = slot; host->mrq = mrq;
@@ -1850,6 +1850,9 @@ static int dw_mci_init_slot(struct dw_mci *host, unsigned int id)if (host->pdata->caps) mmc->caps = host->pdata->caps; +if (host->pdata->pm_caps) + mmc->pm_caps = host->pdata->pm_caps; +if (host->dev->of_node) { ctrl_id =of_alias_get_id (host->dev->of_node,"mshc" );if (ctrl_id <0 )
@@ -2072,6 +2075,12 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)return ERR_PTR (ret); } +if (of_find_property (np,"keep-power-in-suspend" ,NULL )) + pdata->pm_caps |=MMC_PM_KEEP_POWER ; + +if (of_find_property (np,"enable-sdio-wakeup" ,NULL )) + pdata->pm_caps |=MMC_PM_WAKE_SDIO_IRQ ; +return pdata; }
@@ -2411,6 +2420,11 @@ int dw_mci_resume(struct dw_mci *host)struct dw_mci_slot *slot = host->slot[i];if (!slot)continue ; +if (slot->mmc->pm_flags &MMC_PM_KEEP_POWER ) { +dw_mci_set_ios (slot->mmc, &slot->mmc->ios); +dw_mci_setup_bus (slot, true); + } + ret =mmc_resume_host (host->slot[i]->mmc);if (ret <0 )return ret;
include/linux/mmc/dw_mmc.h +1 -0
@@ -231,6 +231,7 @@ struct dw_mci_board {unsigned int caps;/* Capabilities */ unsigned int caps2;/* More capabilities */ +unsigned int pm_caps;/* PM capabilities */ /* * Override fifo depth. If 0, autodetect it from the FIFOTH register, * but note that this may not be reliable after a bootloader has used
Signature · 1 line
1.6.6.1
PATCH 1/1 dt: Document: Add optional dw_mmc pm bindings
In reply to Abhilash KesavanHi Abhilash,
Quoted 6 lines · Abhilash Kesavan
Add documentation for pm capabilties such as
MMC_PM_KEEP_POWERandMMC_PM_WAKE_SDIO_IRQ.Signed-off-by Abhilash Kesavan <[email protected]>--- .../devicetree/bindings/mmc/synposis-dw-mshc.txt | 7 +++++++
(Ugh, I just noticed the typo in that filename. We should fix that.)
Quoted 19 lines
1 files changed, 7 insertions(+), 0 deletions(-)Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt +5
-0@@ -47,6 +47,11 @@ Optional properties: * broken-cd: as documented in mmc core bindings. +* keep-power-in-suspend: Preserves card power during a suspend/resume cycle. + +* enable-sdio-wakeup: Enables wake up of host system on SDIO IRQ assertion. + + Samsung Exynos5250 specific properties: Aliases: - All the MSHC controller nodes should be represented in the aliases node using
Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt board specific portions as listed below. · line 80
Quoted 7 lines
Documentation/devicetree/bindings/mmc/synposis-dw-mshc.txt +2
-0@@ -69,6 +74,8 @@ board specific portions as listed below. num-slots = <1>; supports-highspeed; broken-cd; + keep-power-in-suspend; + enable-sdio-wakeup; fifo-depth = <0x80>; card-detect-delay = <200>;
Let's make these core optional properties, documented in Documentation/devicetree/bindings/mmc/mmc.txt instead of in synposis-dw-mshc.txt, and also add support for them in sdhci_pltfm.c by adding your "host->pm_caps |= .." lines to sdhci_get_of_property().
Please could you do that and resend? The dw_mmc patch looks fine.
Thanks,
- Chris.
Signature · 2 lines
Chris Ball <[email protected]> <http://printf.net/> One Laptop Per Child