All of lore.kernel.org
 help / color / mirror / Atom feed
* [PATCH v7 0/3] mmc: dw_mmc: add dw_mmc-k3
@ 2014-01-09 14:35 ` Zhangfei Gao
  0 siblings, 0 replies; 94+ messages in thread
From: Zhangfei Gao @ 2014-01-09 14:35 UTC (permalink / raw)
  To: Chris Ball, Arnd Bergmann, Mike Turquette, Rob Herring,
	Jaehoon Chung, Seungwon Jeon, Kumar Gala, Haojian Zhuang
  Cc: linux-mmc, linux-arm-kernel, patches, devicetree, Zhangfei Gao

v7:
0002:
use undefined local value in suspend/resume

v6:
0002:
Jaehoon pointed HIGHSPEED cap can be omitted if supports-highspeed is defined.
Seungwon mentioned clk operation should be called after suspend.
Remove k3_dwmmc_caps

V5:
0002:
Follow advice from Arnd, 
Update dt descirption and use of_property_for_each_u32 to get table number.

v4:
Follow Arnd's suggestion abstracting specific tuning to clock,
also because new version ip use different method and not use same tuning registers.

0001 acked by Jaehoon

v3:
0001: 
Put set/clear_bit DW_MMC_CARD_PRESENT in dw_mci_get_cd, 
Since dw_mci_request will check DW_MMC_CARD_PRESENT before sending cmd

0002:
Follow suggestion from Chris, Kumar and Seungwon
Sync to latest mmc-next, which is 3.12-rc2
Remove enum dw_mci_k3_type etc

v2:
Follow Jaehoon's suggestion
Use slot-gpio.c handle cd pin
Move table out to dts
other suggestion


Zhangfei Gao (3):
  mmc: dw_mmc: use slot-gpio to handle cd pin
  mmc: dw_mmc: add dw_mmc-k3 for k3 platform
  clk: hisilicon: add hi3620_mmc_clks

 .../bindings/arm/hisilicon/hisilicon.txt           |   14 ++
 .../devicetree/bindings/clock/hi3620-clock.txt     |    1 +
 .../devicetree/bindings/mmc/k3-dw-mshc.txt         |   60 +++++
 drivers/clk/hisilicon/clk-hi3620.c                 |  262 ++++++++++++++++++++
 drivers/mmc/host/Kconfig                           |   10 +
 drivers/mmc/host/Makefile                          |    1 +
 drivers/mmc/host/dw_mmc-k3.c                       |  126 ++++++++++
 drivers/mmc/host/dw_mmc.c                          |   48 +++-
 include/dt-bindings/clock/hi3620-clock.h           |    5 +
 9 files changed, 514 insertions(+), 13 deletions(-)
 create mode 100644 Documentation/devicetree/bindings/mmc/k3-dw-mshc.txt
 create mode 100644 drivers/mmc/host/dw_mmc-k3.c

-- 
1.7.9.5


^ permalink raw reply	[flat|nested] 94+ messages in thread
* [PATCH v2] mmc: dw_mmc: fix dw_mci_get_cd
@ 2014-01-16  2:31 Zhangfei Gao
  2014-01-16 12:48   ` Zhangfei Gao
  0 siblings, 1 reply; 94+ messages in thread
From: Zhangfei Gao @ 2014-01-16  2:31 UTC (permalink / raw)
  To: Russell King - ARM Linux, Kevin Hilman, Sachin Kamat, Chris Ball,
	Arnd Bergmann, Mike Turquette, Jaehoon Chung, Seungwon Jeon
  Cc: linux-mmc, linux-arm-kernel, patches, Zhangfei Gao

Introduced from commit bf626e5550f24aec24975a0e85ad8e572ca76a6b
CDETECT is ignored since negated return value of mmc_gpio_get_cd(mmc)
can not be checked by IS_ERR_VALUE.
Add spin_lock_bh(&host->lock) for atomic accessing DW_MMC_CARD_PRESENT,
otherwise sd detect may occasionally fail.

Signed-off-by: Zhangfei Gao <zhangfei.gao@linaro.org>
Reported-by: Kevin Hilman <khilman@linaro.org>
Reviewed-by: Sachin Kamat <sachin.kamat@linaro.org>
Tested-by: Sachin Kamat <sachin.kamat@linaro.org>
---
 .../devicetree/bindings/mmc/synopsys-dw-mshc.txt   |    2 ++
 drivers/mmc/host/dw_mmc.c                          |   12 +++++++++---
 2 files changed, 11 insertions(+), 3 deletions(-)

diff --git a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
index 8f3f13315358..18b0819bafe0 100644
--- a/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
+++ b/Documentation/devicetree/bindings/mmc/synopsys-dw-mshc.txt
@@ -73,6 +73,8 @@ Optional properties:
 
 * caps2-mmc-hs200-1_2v: Supports mmc HS200 SDR 1.2V mode
 
+* caps2-mmc-cd-active-high: cd pin is high when card present
+
 * broken-cd: as documented in mmc core bindings.
 
 * vmmc-supply: The phandle to the regulator to use for vmmc.  If this is
diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index a776f24f4311..ad65b895d34c 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -1033,7 +1033,8 @@ static int dw_mci_get_cd(struct mmc_host *mmc)
 	int present;
 	struct dw_mci_slot *slot = mmc_priv(mmc);
 	struct dw_mci_board *brd = slot->host->pdata;
-	int gpio_cd = !mmc_gpio_get_cd(mmc);
+	struct dw_mci *host = slot->host;
+	int gpio_cd = mmc_gpio_get_cd(mmc);
 
 	/* Use platform get_cd function, else try onboard card detect */
 	if (brd->quirks & DW_MCI_QUIRK_BROKEN_CARD_DETECTION)
@@ -1041,11 +1042,12 @@ static int dw_mci_get_cd(struct mmc_host *mmc)
 	else if (brd->get_cd)
 		present = !brd->get_cd(slot->id);
 	else if (!IS_ERR_VALUE(gpio_cd))
-		present = !!gpio_cd;
+		present = gpio_cd;
 	else
 		present = (mci_readl(slot->host, CDETECT) & (1 << slot->id))
 			== 0 ? 1 : 0;
 
+	spin_lock_bh(&host->lock);
 	if (present) {
 		set_bit(DW_MMC_CARD_PRESENT, &slot->flags);
 		dev_dbg(&mmc->class_dev, "card is present\n");
@@ -1053,6 +1055,7 @@ static int dw_mci_get_cd(struct mmc_host *mmc)
 		clear_bit(DW_MMC_CARD_PRESENT, &slot->flags);
 		dev_dbg(&mmc->class_dev, "card is not present\n");
 	}
+	spin_unlock_bh(&host->lock);
 
 	return present;
 }
@@ -2081,7 +2084,7 @@ static int dw_mci_of_get_wp_gpio(struct device *dev, u8 slot)
 	return gpio;
 }
 
-/* find the cd gpio for a given slot; or -1 if none specified */
+/* find the cd gpio for a given slot */
 static void dw_mci_of_get_cd_gpio(struct device *dev, u8 slot,
 					struct mmc_host *mmc)
 {
@@ -2411,6 +2414,9 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
 	if (of_find_property(np, "caps2-mmc-hs200-1_2v", NULL))
 		pdata->caps2 |= MMC_CAP2_HS200_1_2V_SDR;
 
+	if (of_find_property(np, "caps2-mmc-cd-active-high", NULL))
+		pdata->caps2 |= MMC_CAP2_CD_ACTIVE_HIGH;
+
 	return pdata;
 }
 
-- 
1.7.9.5


^ permalink raw reply related	[flat|nested] 94+ messages in thread

end of thread, other threads:[~2014-01-17 14:25 UTC | newest]

Thread overview: 94+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2014-01-09 14:35 [PATCH v7 0/3] mmc: dw_mmc: add dw_mmc-k3 Zhangfei Gao
2014-01-09 14:35 ` Zhangfei Gao
2014-01-09 14:35 ` [PATCH 1/3] mmc: dw_mmc: use slot-gpio to handle cd pin Zhangfei Gao
2014-01-09 14:35   ` Zhangfei Gao
2014-01-09 14:38   ` Arnd Bergmann
2014-01-09 14:38     ` Arnd Bergmann
2014-01-14 15:58   ` Kevin Hilman
2014-01-14 15:58     ` Kevin Hilman
2014-01-14 17:23     ` Olof Johansson
2014-01-14 17:23       ` Olof Johansson
2014-01-15  1:09       ` zhangfei
2014-01-15  1:09         ` zhangfei
2014-01-15  5:16         ` zhangfei
2014-01-15  5:16           ` zhangfei
2014-01-15  7:15     ` [PATCH] mmc: dw_mmc: fix dw_mci_get_cd Zhangfei Gao
2014-01-15  7:15       ` Zhangfei Gao
2014-01-15  7:31       ` zhangfei
2014-01-15  7:31         ` zhangfei
2014-01-15 10:07       ` Zhangfei Gao
2014-01-15 10:07         ` Zhangfei Gao
2014-01-15 11:58         ` Seungwon Jeon
2014-01-15 11:58           ` Seungwon Jeon
2014-01-15 12:10           ` zhangfei
2014-01-15 12:10             ` zhangfei
2014-01-15 12:26             ` Seungwon Jeon
2014-01-15 12:26               ` Seungwon Jeon
2014-01-15 13:56               ` zhangfei
2014-01-15 13:56                 ` zhangfei
2014-01-15 13:59                 ` Arnd Bergmann
2014-01-15 13:59                   ` Arnd Bergmann
2014-01-15 14:20                   ` Arnd Bergmann
2014-01-15 14:20                     ` Arnd Bergmann
2014-01-15 15:36                     ` zhangfei
2014-01-15 15:36                       ` zhangfei
2014-01-15 16:01                   ` Russell King - ARM Linux
2014-01-15 16:01                     ` Russell King - ARM Linux
2014-01-15 16:07                     ` Arnd Bergmann
2014-01-15 16:07                       ` Arnd Bergmann
2014-01-15 16:22                       ` Russell King - ARM Linux
2014-01-15 16:22                         ` Russell King - ARM Linux
2014-01-16  2:10                         ` zhangfei
2014-01-16  2:10                           ` zhangfei
2014-01-16 11:12                         ` Arnd Bergmann
2014-01-16 11:12                           ` Arnd Bergmann
2014-01-16 11:25                           ` Russell King - ARM Linux
2014-01-16 11:25                             ` Russell King - ARM Linux
2014-01-15 14:38                 ` Seungwon Jeon
2014-01-15 14:38                   ` Seungwon Jeon
2014-01-15 15:32                   ` zhangfei
2014-01-15 15:32                     ` zhangfei
2014-01-15 15:51                     ` Zhangfei Gao
2014-01-15 15:51                       ` Zhangfei Gao
2014-01-15 15:59                       ` Russell King - ARM Linux
2014-01-15 15:59                         ` Russell King - ARM Linux
2014-01-15 15:54                     ` Arnd Bergmann
2014-01-15 15:54                       ` Arnd Bergmann
     [not found] ` <1389278112-7099-1-git-send-email-zhangfei.gao-QSEj5FYQhm4dnm+yROfE0A@public.gmane.org>
2014-01-09 14:35   ` [PATCH 2/3] mmc: dw_mmc: add dw_mmc-k3 for k3 platform Zhangfei Gao
2014-01-09 14:35     ` Zhangfei Gao
2014-01-09 14:45     ` Arnd Bergmann
2014-01-09 14:45       ` Arnd Bergmann
2014-01-10 13:39     ` Seungwon Jeon
2014-01-10 13:39       ` Seungwon Jeon
2014-01-10 14:12       ` zhangfei
2014-01-10 14:12         ` zhangfei
2014-01-13  2:09         ` Seungwon Jeon
2014-01-13  2:09           ` Seungwon Jeon
2014-01-13  2:37           ` zhangfei
2014-01-13  2:37             ` zhangfei
2014-01-13  5:32             ` Seungwon Jeon
2014-01-13  5:32               ` Seungwon Jeon
2014-01-13  8:30               ` zhangfei
2014-01-13  8:30                 ` zhangfei
2014-01-14  9:38                 ` Seungwon Jeon
2014-01-14  9:38                   ` Seungwon Jeon
2014-01-14  9:47                   ` zhangfei
2014-01-14  9:47                     ` zhangfei
2014-01-09 14:35 ` [PATCH 3/3] clk: hisilicon: add hi3620_mmc_clks Zhangfei Gao
2014-01-09 14:35   ` Zhangfei Gao
2014-01-09 14:38   ` Arnd Bergmann
2014-01-09 14:38     ` Arnd Bergmann
2014-01-10  3:41 ` [PATCH v7 0/3] mmc: dw_mmc: add dw_mmc-k3 Jaehoon Chung
2014-01-10  3:41   ` Jaehoon Chung
2014-01-12 16:35 ` Chris Ball
2014-01-12 16:35   ` Chris Ball
2014-01-13  1:00   ` Zhangfei Gao
2014-01-13  1:00     ` Zhangfei Gao
2014-01-16  2:31 [PATCH v2] mmc: dw_mmc: fix dw_mci_get_cd Zhangfei Gao
2014-01-16 12:48 ` [PATCH] " Zhangfei Gao
2014-01-16 12:48   ` Zhangfei Gao
2014-01-16 18:29   ` Kevin Hilman
2014-01-16 18:29     ` Kevin Hilman
2014-01-17 12:35     ` Seungwon Jeon
2014-01-17 12:35       ` Seungwon Jeon
2014-01-17 14:25       ` Chris Ball
2014-01-17 14:25         ` Chris Ball

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.