* [PATCH 0/6] Add support of inverting power control and some minor cleanup
@ 2016-08-06 5:36 Shawn Lin
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
0 siblings, 1 reply; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:36 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
By default, dw_mmc outputs high level voltage to indicate powering
up the card and outputs low level vcltage to indicate powering
off the card. But that is not always correct. The power io should
be able to control different kind of hw components to supply or
cutoff power to the card. We have boards that need this patchset
to make the power control correct. Meanwhile let's expose it to
DT for board-specific usage.
Shawn Lin (6):
dt-bindings: rockchip-dw-mshc: add description of
rockchip,power-invert
mmc: dw_mmc: cleanup power setting of set_ios callback
mmc: dw_mmc: split out dw_mci_set_power
mmc: dw_mmc: split out dw_mci_set_power_reg
mmc: dw_mmc: support inverted power control
mmc: dw_mmc-rockchip: add parsing of power control from DT
.../devicetree/bindings/mmc/rockchip-dw-mshc.txt | 6 +
drivers/mmc/host/dw_mmc-rockchip.c | 8 ++
drivers/mmc/host/dw_mmc.c | 134 ++++++++++++---------
drivers/mmc/host/dw_mmc.h | 1 +
4 files changed, 90 insertions(+), 59 deletions(-)
--
2.3.7
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH 1/6] dt-bindings: rockchip-dw-mshc: add description of rockchip, power-invert
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
@ 2016-08-06 5:36 ` Shawn Lin
2016-08-06 5:36 ` [PATCH 2/6] mmc: dw_mmc: cleanup power setting of set_ios callback Shawn Lin
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:36 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
rockchip,power-invert is used for rockchip to introduce the flag
DW_MMC_CARD_PWR_INVERT from DT which should make the power control
of dw_mmc more flexible according to different hw design.
Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt | 6 ++++++
1 file changed, 6 insertions(+)
diff --git a/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
index 07184e8..5640659 100644
--- a/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/rockchip-dw-mshc.txt
@@ -30,6 +30,12 @@ Optional Properties:
probing, low speeds or in case where all phases work at tuning time.
If not specified 0 deg will be used.
+* rockchip,power-invert: Invert the power control of PWREN register. If adding
+ it, the card should be in power-on state when the power io outputs high level
+ voltage, and it should be in power-off state when outputing low level voltage.
+ otherwise the behaviour of power control should be the opposite way which is
+ the default policy of dw mshc.
+
Example:
rkdwmmc0@12200000 {
--
2.3.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 2/6] mmc: dw_mmc: cleanup power setting of set_ios callback
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-08-06 5:36 ` [PATCH 1/6] dt-bindings: rockchip-dw-mshc: add description of rockchip, power-invert Shawn Lin
@ 2016-08-06 5:36 ` Shawn Lin
2016-08-06 5:36 ` [PATCH 3/6] mmc: dw_mmc: split out dw_mci_set_power Shawn Lin
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:36 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
Remove the ret variable and combine the condition check
to simplify the code.
Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
drivers/mmc/host/dw_mmc.c | 28 ++++++++++------------------
1 file changed, 10 insertions(+), 18 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 32380d5..59a5e9c 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1281,7 +1281,6 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
struct dw_mci_slot *slot = mmc_priv(mmc);
const struct dw_mci_drv_data *drv_data = slot->host->drv_data;
u32 regs;
- int ret;
switch (ios->bus_width) {
case MMC_BUS_WIDTH_4:
@@ -1319,15 +1318,12 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
switch (ios->power_mode) {
case MMC_POWER_UP:
- if (!IS_ERR(mmc->supply.vmmc)) {
- ret = mmc_regulator_set_ocr(mmc, mmc->supply.vmmc,
- ios->vdd);
- if (ret) {
- dev_err(slot->host->dev,
- "failed to enable vmmc regulator\n");
- /*return, if failed turn on vmmc*/
- return;
- }
+ if (!IS_ERR(mmc->supply.vmmc) &&
+ mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd)) {
+ dev_err(slot->host->dev,
+ "failed to enable vmmc regulator\n");
+ /*return, if failed turn on vmmc*/
+ return;
}
set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags);
regs = mci_readl(slot->host, PWREN);
@@ -1336,14 +1332,10 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
break;
case MMC_POWER_ON:
if (!slot->host->vqmmc_enabled) {
- if (!IS_ERR(mmc->supply.vqmmc)) {
- ret = regulator_enable(mmc->supply.vqmmc);
- if (ret < 0)
- dev_err(slot->host->dev,
- "failed to enable vqmmc\n");
- else
- slot->host->vqmmc_enabled = true;
-
+ if (!IS_ERR(mmc->supply.vqmmc) &&
+ regulator_enable(mmc->supply.vqmmc)) {
+ dev_err(slot->host->dev,
+ "failed to enable vqmmc\n");
} else {
/* Keep track so we don't reset again */
slot->host->vqmmc_enabled = true;
--
2.3.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 3/6] mmc: dw_mmc: split out dw_mci_set_power
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-08-06 5:36 ` [PATCH 1/6] dt-bindings: rockchip-dw-mshc: add description of rockchip, power-invert Shawn Lin
2016-08-06 5:36 ` [PATCH 2/6] mmc: dw_mmc: cleanup power setting of set_ios callback Shawn Lin
@ 2016-08-06 5:36 ` Shawn Lin
2016-08-06 5:36 ` [PATCH 4/6] mmc: dw_mmc: split out dw_mci_set_power_reg Shawn Lin
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:36 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
The dw_mci_set_ios is a little complicated and lengthy,
let's split out the setting of power part. No functionality
change.
Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
drivers/mmc/host/dw_mmc.c | 87 ++++++++++++++++++++++++++---------------------
1 file changed, 49 insertions(+), 38 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 59a5e9c..0e5ed23 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1276,54 +1276,19 @@ static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq)
spin_unlock_bh(&host->lock);
}
-static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
+static int dw_mci_set_power(struct mmc_host *mmc, struct mmc_ios *ios)
{
struct dw_mci_slot *slot = mmc_priv(mmc);
- const struct dw_mci_drv_data *drv_data = slot->host->drv_data;
u32 regs;
- switch (ios->bus_width) {
- case MMC_BUS_WIDTH_4:
- slot->ctype = SDMMC_CTYPE_4BIT;
- break;
- case MMC_BUS_WIDTH_8:
- slot->ctype = SDMMC_CTYPE_8BIT;
- break;
- default:
- /* set default 1 bit mode */
- slot->ctype = SDMMC_CTYPE_1BIT;
- }
-
- regs = mci_readl(slot->host, UHS_REG);
-
- /* DDR mode set */
- if (ios->timing == MMC_TIMING_MMC_DDR52 ||
- ios->timing == MMC_TIMING_UHS_DDR50 ||
- ios->timing == MMC_TIMING_MMC_HS400)
- regs |= ((0x1 << slot->id) << 16);
- else
- regs &= ~((0x1 << slot->id) << 16);
-
- mci_writel(slot->host, UHS_REG, regs);
- slot->host->timing = ios->timing;
-
- /*
- * Use mirror of ios->clock to prevent race with mmc
- * core ios update when finding the minimum.
- */
- slot->clock = ios->clock;
-
- if (drv_data && drv_data->set_ios)
- drv_data->set_ios(slot->host, ios);
-
switch (ios->power_mode) {
case MMC_POWER_UP:
if (!IS_ERR(mmc->supply.vmmc) &&
mmc_regulator_set_ocr(mmc, mmc->supply.vmmc, ios->vdd)) {
dev_err(slot->host->dev,
"failed to enable vmmc regulator\n");
- /*return, if failed turn on vmmc*/
- return;
+
+ return -EINVAL;
}
set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags);
regs = mci_readl(slot->host, PWREN);
@@ -1369,6 +1334,52 @@ static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
break;
}
+ return 0;
+}
+
+static void dw_mci_set_ios(struct mmc_host *mmc, struct mmc_ios *ios)
+{
+ struct dw_mci_slot *slot = mmc_priv(mmc);
+ const struct dw_mci_drv_data *drv_data = slot->host->drv_data;
+ u32 regs;
+
+ switch (ios->bus_width) {
+ case MMC_BUS_WIDTH_4:
+ slot->ctype = SDMMC_CTYPE_4BIT;
+ break;
+ case MMC_BUS_WIDTH_8:
+ slot->ctype = SDMMC_CTYPE_8BIT;
+ break;
+ default:
+ /* set default 1 bit mode */
+ slot->ctype = SDMMC_CTYPE_1BIT;
+ }
+
+ regs = mci_readl(slot->host, UHS_REG);
+
+ /* DDR mode set */
+ if (ios->timing == MMC_TIMING_MMC_DDR52 ||
+ ios->timing == MMC_TIMING_UHS_DDR50 ||
+ ios->timing == MMC_TIMING_MMC_HS400)
+ regs |= ((0x1 << slot->id) << 16);
+ else
+ regs &= ~((0x1 << slot->id) << 16);
+
+ mci_writel(slot->host, UHS_REG, regs);
+ slot->host->timing = ios->timing;
+
+ /*
+ * Use mirror of ios->clock to prevent race with mmc
+ * core ios update when finding the minimum.
+ */
+ slot->clock = ios->clock;
+
+ if (drv_data && drv_data->set_ios)
+ drv_data->set_ios(slot->host, ios);
+
+ if (dw_mci_set_power(mmc, ios))
+ return;
+
if (slot->host->state == STATE_WAITING_CMD11_DONE && ios->clock != 0)
slot->host->state = STATE_IDLE;
}
--
2.3.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 4/6] mmc: dw_mmc: split out dw_mci_set_power_reg
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
` (2 preceding siblings ...)
2016-08-06 5:36 ` [PATCH 3/6] mmc: dw_mmc: split out dw_mci_set_power Shawn Lin
@ 2016-08-06 5:36 ` Shawn Lin
2016-08-06 5:37 ` [PATCH 5/6] mmc: dw_mmc: support inverted power control Shawn Lin
2016-08-06 5:37 ` [PATCH 6/6] mmc: dw_mmc-rockchip: add parsing of power control from DT Shawn Lin
5 siblings, 0 replies; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:36 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
Splite out dw_mci_set_power_reg to set PWREN register
in case that we need more complicated power control.
Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
drivers/mmc/host/dw_mmc.c | 26 ++++++++++++++++++--------
1 file changed, 18 insertions(+), 8 deletions(-)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 0e5ed23..c35a26a 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1276,10 +1276,25 @@ static void dw_mci_request(struct mmc_host *mmc, struct mmc_request *mrq)
spin_unlock_bh(&host->lock);
}
+static inline void dw_mci_set_power_reg(struct dw_mci_slot *slot,
+ bool enable)
+{
+ u32 regs;
+
+ if (enable) {
+ regs = mci_readl(slot->host, PWREN);
+ regs |= (1 << slot->id);
+ mci_writel(slot->host, PWREN, regs);
+ } else {
+ regs = mci_readl(slot->host, PWREN);
+ regs &= ~(1 << slot->id);
+ mci_writel(slot->host, PWREN, regs);
+ }
+}
+
static int dw_mci_set_power(struct mmc_host *mmc, struct mmc_ios *ios)
{
struct dw_mci_slot *slot = mmc_priv(mmc);
- u32 regs;
switch (ios->power_mode) {
case MMC_POWER_UP:
@@ -1291,9 +1306,7 @@ static int dw_mci_set_power(struct mmc_host *mmc, struct mmc_ios *ios)
return -EINVAL;
}
set_bit(DW_MMC_CARD_NEED_INIT, &slot->flags);
- regs = mci_readl(slot->host, PWREN);
- regs |= (1 << slot->id);
- mci_writel(slot->host, PWREN, regs);
+ dw_mci_set_power_reg(slot, true);
break;
case MMC_POWER_ON:
if (!slot->host->vqmmc_enabled) {
@@ -1325,10 +1338,7 @@ static int dw_mci_set_power(struct mmc_host *mmc, struct mmc_ios *ios)
if (!IS_ERR(mmc->supply.vqmmc) && slot->host->vqmmc_enabled)
regulator_disable(mmc->supply.vqmmc);
slot->host->vqmmc_enabled = false;
-
- regs = mci_readl(slot->host, PWREN);
- regs &= ~(1 << slot->id);
- mci_writel(slot->host, PWREN, regs);
+ dw_mci_set_power_reg(slot, false);
break;
default:
break;
--
2.3.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 5/6] mmc: dw_mmc: support inverted power control
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
` (3 preceding siblings ...)
2016-08-06 5:36 ` [PATCH 4/6] mmc: dw_mmc: split out dw_mci_set_power_reg Shawn Lin
@ 2016-08-06 5:37 ` Shawn Lin
2016-08-06 5:37 ` [PATCH 6/6] mmc: dw_mmc-rockchip: add parsing of power control from DT Shawn Lin
5 siblings, 0 replies; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:37 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
If DW_MMC_CARD_PWR_INVERT is set, we should configure
PWREN register on the opposite way as it means we need to
output high level from the power io to indicate the off state.
Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
drivers/mmc/host/dw_mmc.c | 3 +++
drivers/mmc/host/dw_mmc.h | 1 +
2 files changed, 4 insertions(+)
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index c35a26a..20d786c 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1281,6 +1281,9 @@ static inline void dw_mci_set_power_reg(struct dw_mci_slot *slot,
{
u32 regs;
+ if (test_bit(DW_MMC_CARD_PWR_INVERT, &slot->flags))
+ enable = !enable;
+
if (enable) {
regs = mci_readl(slot->host, PWREN);
regs |= (1 << slot->id);
diff --git a/drivers/mmc/host/dw_mmc.h b/drivers/mmc/host/dw_mmc.h
index 9e740bc..5719fd1 100644
--- a/drivers/mmc/host/dw_mmc.h
+++ b/drivers/mmc/host/dw_mmc.h
@@ -269,6 +269,7 @@ struct dw_mci_slot {
#define DW_MMC_CARD_NEED_INIT 1
#define DW_MMC_CARD_NO_LOW_PWR 2
#define DW_MMC_CARD_NO_USE_HOLD 3
+#define DW_MMC_CARD_PWR_INVERT 4
int id;
int sdio_id;
};
--
2.3.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH 6/6] mmc: dw_mmc-rockchip: add parsing of power control from DT
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
` (4 preceding siblings ...)
2016-08-06 5:37 ` [PATCH 5/6] mmc: dw_mmc: support inverted power control Shawn Lin
@ 2016-08-06 5:37 ` Shawn Lin
5 siblings, 0 replies; 7+ messages in thread
From: Shawn Lin @ 2016-08-06 5:37 UTC (permalink / raw)
To: Jaehoon Chung, Ulf Hansson, Rob Herring
Cc: devicetree-u79uwXL29TY76Z2rM5mHXA, Heiko Stuebner, Shawn Lin,
Brian Norris, linux-mmc-u79uwXL29TY76Z2rM5mHXA,
linux-kernel-u79uwXL29TY76Z2rM5mHXA, Doug Anderson,
linux-rockchip-IAPFreCvJWM7uuMidbF8XUB+6BGkLq7r
Defaultly the power io of dw_mmc is fixed which means we could
only output high level to indicate the power-on state. But that
is not always correct as the usage of power io should be board
specific. Let's expose it to dt for supporting this kind of
specific design.
Signed-off-by: Shawn Lin <shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
---
drivers/mmc/host/dw_mmc-rockchip.c | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/drivers/mmc/host/dw_mmc-rockchip.c b/drivers/mmc/host/dw_mmc-rockchip.c
index 25eae35..c5f5bb5 100644
--- a/drivers/mmc/host/dw_mmc-rockchip.c
+++ b/drivers/mmc/host/dw_mmc-rockchip.c
@@ -24,6 +24,7 @@ struct dw_mci_rockchip_priv_data {
struct clk *drv_clk;
struct clk *sample_clk;
int default_sample_phase;
+ bool power_invert;
};
static void dw_mci_rk3288_set_ios(struct dw_mci *host, struct mmc_ios *ios)
@@ -67,6 +68,10 @@ static void dw_mci_rk3288_set_ios(struct dw_mci *host, struct mmc_ios *ios)
if (!IS_ERR(priv->sample_clk))
clk_set_phase(priv->sample_clk, priv->default_sample_phase);
+ /* Make sure we need to invert the output of PWREN */
+ if (priv->power_invert)
+ set_bit(DW_MMC_CARD_PWR_INVERT, &host->cur_slot->flags);
+
/*
* Set the drive phase offset based on speed mode to achieve hold times.
*
@@ -267,6 +272,9 @@ static int dw_mci_rk3288_parse_dt(struct dw_mci *host)
&priv->default_sample_phase))
priv->default_sample_phase = 0;
+ if (of_property_read_bool(np, "rockchip,power-invert"))
+ priv->default_sample_phase = true;
+
priv->drv_clk = devm_clk_get(host->dev, "ciu-drive");
if (IS_ERR(priv->drv_clk))
dev_dbg(host->dev, "ciu_drv not available\n");
--
2.3.7
^ permalink raw reply related [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-08-06 5:37 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-08-06 5:36 [PATCH 0/6] Add support of inverting power control and some minor cleanup Shawn Lin
[not found] ` <1470461784-3955-1-git-send-email-shawn.lin-TNX95d0MmH7DzftRWevZcw@public.gmane.org>
2016-08-06 5:36 ` [PATCH 1/6] dt-bindings: rockchip-dw-mshc: add description of rockchip, power-invert Shawn Lin
2016-08-06 5:36 ` [PATCH 2/6] mmc: dw_mmc: cleanup power setting of set_ios callback Shawn Lin
2016-08-06 5:36 ` [PATCH 3/6] mmc: dw_mmc: split out dw_mci_set_power Shawn Lin
2016-08-06 5:36 ` [PATCH 4/6] mmc: dw_mmc: split out dw_mci_set_power_reg Shawn Lin
2016-08-06 5:37 ` [PATCH 5/6] mmc: dw_mmc: support inverted power control Shawn Lin
2016-08-06 5:37 ` [PATCH 6/6] mmc: dw_mmc-rockchip: add parsing of power control from DT Shawn Lin
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).