* [PATCH v3 0/4] mmx: mxs-mmc: Some cleanups and fixes for the MXS MMC subsystem
@ 2011-12-08 9:44 Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 1/4] mmc: mxs-mmc: Fix grammatical error in comment Lothar Waßmann
` (3 more replies)
0 siblings, 4 replies; 5+ messages in thread
From: Lothar Waßmann @ 2011-12-08 9:44 UTC (permalink / raw)
To: Shawn Guo
Cc: Sascha Hauer, linux-mmc, linux-kernel, Chris Ball,
Lothar Waßmann
Lothar WaÃmann (4):
Fix grammatical error in comment
Some cleanups for the MMC driver
Check the return codes of clk_enable() and mxs_reset_block()
Add an appropriate MODULE_ALIAS
Changes wrt v2:
- add missing Acked-by's
- changed subject-prefix
drivers/mmc/host/mxs-mmc.c | 87 +++++++++++++++++++++++++++------------------
1 file changed, 54 insertions(+), 33 deletions(-)
^ permalink raw reply [flat|nested] 5+ messages in thread
* [PATCH v3 1/4] mmc: mxs-mmc: Fix grammatical error in comment
2011-12-08 9:44 [PATCH v3 0/4] mmx: mxs-mmc: Some cleanups and fixes for the MXS MMC subsystem Lothar Waßmann
@ 2011-12-08 9:44 ` Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 2/4] mmc: mxs-mmc: Some cleanups for the MMC driver Lothar Waßmann
` (2 subsequent siblings)
3 siblings, 0 replies; 5+ messages in thread
From: Lothar Waßmann @ 2011-12-08 9:44 UTC (permalink / raw)
To: Shawn Guo
Cc: Sascha Hauer, linux-mmc, linux-kernel, Chris Ball,
Lothar Waßmann
Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
---
arch/arm/mach-mxs/clock-mx28.c | 2 +-
1 files changed, 1 insertions(+), 1 deletions(-)
diff --git a/arch/arm/mach-mxs/clock-mx28.c b/arch/arm/mach-mxs/clock-mx28.c
index da6e4aa..fc86b04 100644
--- a/arch/arm/mach-mxs/clock-mx28.c
+++ b/arch/arm/mach-mxs/clock-mx28.c
@@ -554,7 +554,7 @@ static struct clk rtc_clk = {
.parent = &ref_xtal_clk,
};
-/* usb_clk gate is controlled in DIGCTRL other than CLKCTRL */
+/* usb_clk gate is controlled in DIGCTRL rather than CLKCTRL */
static struct clk usb0_clk = {
.enable_reg = DIGCTRL_BASE_ADDR,
.enable_shift = 2,
--
1.5.6.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 2/4] mmc: mxs-mmc: Some cleanups for the MMC driver
2011-12-08 9:44 [PATCH v3 0/4] mmx: mxs-mmc: Some cleanups and fixes for the MXS MMC subsystem Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 1/4] mmc: mxs-mmc: Fix grammatical error in comment Lothar Waßmann
@ 2011-12-08 9:44 ` Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 3/4] mmc: mxs-mmc: Check the return codes of clk_enable() and mxs_reset_block() Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 4/4] mmc: mxs-mmc: Add an appropriate MODULE_ALIAS Lothar Waßmann
3 siblings, 0 replies; 5+ messages in thread
From: Lothar Waßmann @ 2011-12-08 9:44 UTC (permalink / raw)
To: Shawn Guo
Cc: Sascha Hauer, linux-mmc, linux-kernel, Chris Ball,
Lothar Waßmann
- Remove bogus parens around numerical arguments in #define's
- When defining bit masks, use the #def for the shift count
instead of repeating the numbers
- Remove 'break' at end of switch statement
Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
---
drivers/mmc/host/mxs-mmc.c | 60 ++++++++++++++++++++++++---------------------
1 file changed, 32 insertions(+), 28 deletions(-)
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 99b449d..a9b70d2 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -47,7 +47,7 @@
#define DRIVER_NAME "mxs-mmc"
/* card detect polling timeout */
-#define MXS_MMC_DETECT_TIMEOUT (HZ/2)
+#define MXS_MMC_DETECT_TIMEOUT (HZ / 2)
#define SSP_VERSION_LATEST 4
#define ssp_is_old() (host->version < SSP_VERSION_LATEST)
@@ -59,39 +59,43 @@
#define BM_SSP_CTRL0_IGNORE_CRC (1 << 26)
#define BM_SSP_CTRL0_READ (1 << 25)
#define BM_SSP_CTRL0_DATA_XFER (1 << 24)
-#define BP_SSP_CTRL0_BUS_WIDTH (22)
-#define BM_SSP_CTRL0_BUS_WIDTH (0x3 << 22)
+#define BP_SSP_CTRL0_BUS_WIDTH 22
+#define BM_SSP_CTRL0_BUS_WIDTH (0x3 << BP_SSP_CTRL0_BUS_WIDTH)
#define BM_SSP_CTRL0_WAIT_FOR_IRQ (1 << 21)
#define BM_SSP_CTRL0_LONG_RESP (1 << 19)
#define BM_SSP_CTRL0_GET_RESP (1 << 17)
#define BM_SSP_CTRL0_ENABLE (1 << 16)
-#define BP_SSP_CTRL0_XFER_COUNT (0)
-#define BM_SSP_CTRL0_XFER_COUNT (0xffff)
+#define BP_SSP_CTRL0_XFER_COUNT 0
+#define BM_SSP_CTRL0_XFER_COUNT 0xffff
#define HW_SSP_CMD0 0x010
#define BM_SSP_CMD0_DBL_DATA_RATE_EN (1 << 25)
#define BM_SSP_CMD0_SLOW_CLKING_EN (1 << 22)
#define BM_SSP_CMD0_CONT_CLKING_EN (1 << 21)
#define BM_SSP_CMD0_APPEND_8CYC (1 << 20)
-#define BP_SSP_CMD0_BLOCK_SIZE (16)
-#define BM_SSP_CMD0_BLOCK_SIZE (0xf << 16)
-#define BP_SSP_CMD0_BLOCK_COUNT (8)
-#define BM_SSP_CMD0_BLOCK_COUNT (0xff << 8)
-#define BP_SSP_CMD0_CMD (0)
-#define BM_SSP_CMD0_CMD (0xff)
+#define BP_SSP_CMD0_BLOCK_SIZE 16
+#define BM_SSP_CMD0_BLOCK_SIZE (0xf << BP_SSP_CMD0_BLOCK_SIZE)
+#define BP_SSP_CMD0_BLOCK_COUNT 8
+#define BM_SSP_CMD0_BLOCK_COUNT \
+ (0xff << BP_SSP_CMD0_BLOCK_COUNT)
+#define BP_SSP_CMD0_CMD 0
+#define BM_SSP_CMD0_CMD 0xff
#define HW_SSP_CMD1 0x020
#define HW_SSP_XFER_SIZE 0x030
#define HW_SSP_BLOCK_SIZE 0x040
-#define BP_SSP_BLOCK_SIZE_BLOCK_COUNT (4)
-#define BM_SSP_BLOCK_SIZE_BLOCK_COUNT (0xffffff << 4)
-#define BP_SSP_BLOCK_SIZE_BLOCK_SIZE (0)
-#define BM_SSP_BLOCK_SIZE_BLOCK_SIZE (0xf)
+#define BP_SSP_BLOCK_SIZE_BLOCK_COUNT 4
+#define BM_SSP_BLOCK_SIZE_BLOCK_COUNT \
+ (0xffffff << BP_SSP_BLOCK_SIZE_BLOCK_COUNT)
+#define BP_SSP_BLOCK_SIZE_BLOCK_SIZE 0
+#define BM_SSP_BLOCK_SIZE_BLOCK_SIZE 0xf
#define HW_SSP_TIMING (ssp_is_old() ? 0x050 : 0x070)
-#define BP_SSP_TIMING_TIMEOUT (16)
-#define BM_SSP_TIMING_TIMEOUT (0xffff << 16)
-#define BP_SSP_TIMING_CLOCK_DIVIDE (8)
-#define BM_SSP_TIMING_CLOCK_DIVIDE (0xff << 8)
-#define BP_SSP_TIMING_CLOCK_RATE (0)
-#define BM_SSP_TIMING_CLOCK_RATE (0xff)
+#define BP_SSP_TIMING_TIMEOUT 16
+#define BM_SSP_TIMING_TIMEOUT \
+ (0xffff << BP_SSP_TIMING_TIMEOUT)
+#define BP_SSP_TIMING_CLOCK_DIVIDE 8
+#define BM_SSP_TIMING_CLOCK_DIVIDE \
+ (0xff << BP_SSP_TIMING_CLOCK_DIVIDE)
+#define BP_SSP_TIMING_CLOCK_RATE 0
+#define BM_SSP_TIMING_CLOCK_RATE 0xff
#define HW_SSP_CTRL1 (ssp_is_old() ? 0x060 : 0x080)
#define BM_SSP_CTRL1_SDIO_IRQ (1 << 31)
#define BM_SSP_CTRL1_SDIO_IRQ_EN (1 << 30)
@@ -111,10 +115,11 @@
#define BM_SSP_CTRL1_FIFO_OVERRUN_IRQ_EN (1 << 14)
#define BM_SSP_CTRL1_DMA_ENABLE (1 << 13)
#define BM_SSP_CTRL1_POLARITY (1 << 9)
-#define BP_SSP_CTRL1_WORD_LENGTH (4)
-#define BM_SSP_CTRL1_WORD_LENGTH (0xf << 4)
-#define BP_SSP_CTRL1_SSP_MODE (0)
-#define BM_SSP_CTRL1_SSP_MODE (0xf)
+#define BP_SSP_CTRL1_WORD_LENGTH 4
+#define BM_SSP_CTRL1_WORD_LENGTH \
+ (0xf << BP_SSP_CTRL1_WORD_LENGTH)
+#define BP_SSP_CTRL1_SSP_MODE 0
+#define BM_SSP_CTRL1_SSP_MODE 0xf
#define HW_SSP_SDRESP0 (ssp_is_old() ? 0x080 : 0x0a0)
#define HW_SSP_SDRESP1 (ssp_is_old() ? 0x090 : 0x0b0)
#define HW_SSP_SDRESP2 (ssp_is_old() ? 0x0a0 : 0x0c0)
@@ -123,7 +128,7 @@
#define BM_SSP_STATUS_CARD_DETECT (1 << 28)
#define BM_SSP_STATUS_SDIO_IRQ (1 << 17)
#define HW_SSP_VERSION (cpu_is_mx23() ? 0x110 : 0x130)
-#define BP_SSP_VERSION_MAJOR (24)
+#define BP_SSP_VERSION_MAJOR 24
#define BF_SSP(value, field) (((value) << BP_SSP_##field) & BM_SSP_##field)
@@ -151,7 +156,7 @@ struct mxs_mmc_host {
struct clk *clk;
unsigned int clk_rate;
- struct dma_chan *dmach;
+ struct dma_chan *dmach;
struct mxs_dma_data dma_data;
unsigned int dma_dir;
u32 ssp_pio_words[SSP_PIO_NUM];
@@ -550,7 +555,6 @@ static void mxs_mmc_start_cmd(struct mxs_mmc_host *host,
default:
dev_warn(mmc_dev(host->mmc),
"%s: unknown MMC command\n", __func__);
- break;
}
}
--
1.5.6.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 3/4] mmc: mxs-mmc: Check the return codes of clk_enable() and mxs_reset_block()
2011-12-08 9:44 [PATCH v3 0/4] mmx: mxs-mmc: Some cleanups and fixes for the MXS MMC subsystem Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 1/4] mmc: mxs-mmc: Fix grammatical error in comment Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 2/4] mmc: mxs-mmc: Some cleanups for the MMC driver Lothar Waßmann
@ 2011-12-08 9:44 ` Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 4/4] mmc: mxs-mmc: Add an appropriate MODULE_ALIAS Lothar Waßmann
3 siblings, 0 replies; 5+ messages in thread
From: Lothar Waßmann @ 2011-12-08 9:44 UTC (permalink / raw)
To: Shawn Guo
Cc: Sascha Hauer, linux-mmc, linux-kernel, Chris Ball,
Lothar Waßmann
Add an int return value to mxs_mmc_reset(), so that the return code of
mxs_reset_block() can be promoted to the caller.
Also check the return code of clk_enable() in the probe function.
Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/mmc/host/mxs-mmc.c | 26 +++++++++++++++++++++-----
1 files changed, 21 insertions(+), 5 deletions(-)
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index a9b70d2..0003d03 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -190,11 +190,14 @@ static int mxs_mmc_get_cd(struct mmc_host *mmc)
BM_SSP_STATUS_CARD_DETECT);
}
-static void mxs_mmc_reset(struct mxs_mmc_host *host)
+static int mxs_mmc_reset(struct mxs_mmc_host *host)
{
+ int ret;
u32 ctrl0, ctrl1;
- mxs_reset_block(host->base);
+ ret = mxs_reset_block(host->base);
+ if (ret)
+ return ret;
ctrl0 = BM_SSP_CTRL0_IGNORE_CRC;
ctrl1 = BF_SSP(0x3, CTRL1_SSP_MODE) |
@@ -219,6 +222,7 @@ static void mxs_mmc_reset(struct mxs_mmc_host *host)
writel(ctrl0, host->base + HW_SSP_CTRL0);
writel(ctrl1, host->base + HW_SSP_CTRL1);
+ return 0;
}
static void mxs_mmc_start_cmd(struct mxs_mmc_host *host,
@@ -717,9 +721,19 @@ static int mxs_mmc_probe(struct platform_device *pdev)
ret = PTR_ERR(host->clk);
goto out_iounmap;
}
- clk_enable(host->clk);
+ ret = clk_enable(host->clk);
+ if (ret) {
+ dev_err(mmc_dev(host->mmc),
+ "%s: failed to enable clock: %d\n", __func__, ret);
+ goto out_clk_put;
+ }
- mxs_mmc_reset(host);
+ ret = mxs_mmc_reset(host);
+ if (ret) {
+ dev_err(mmc_dev(host->mmc),
+ "%s: failed to reset controller: %d\n", __func__, ret);
+ goto out_clk_put;
+ }
dma_cap_zero(mask);
dma_cap_set(DMA_SLAVE, mask);
@@ -834,7 +848,9 @@ static int mxs_mmc_resume(struct device *dev)
struct mxs_mmc_host *host = mmc_priv(mmc);
int ret = 0;
- clk_enable(host->clk);
+ ret = clk_enable(host->clk);
+ if (ret)
+ return ret;
ret = mmc_resume_host(mmc);
--
1.5.6.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
* [PATCH v3 4/4] mmc: mxs-mmc: Add an appropriate MODULE_ALIAS
2011-12-08 9:44 [PATCH v3 0/4] mmx: mxs-mmc: Some cleanups and fixes for the MXS MMC subsystem Lothar Waßmann
` (2 preceding siblings ...)
2011-12-08 9:44 ` [PATCH v3 3/4] mmc: mxs-mmc: Check the return codes of clk_enable() and mxs_reset_block() Lothar Waßmann
@ 2011-12-08 9:44 ` Lothar Waßmann
3 siblings, 0 replies; 5+ messages in thread
From: Lothar Waßmann @ 2011-12-08 9:44 UTC (permalink / raw)
To: Shawn Guo
Cc: Sascha Hauer, linux-mmc, linux-kernel, Chris Ball,
Lothar Waßmann
Signed-off-by: Lothar Waßmann <LW@KARO-electronics.de>
Acked-by: Shawn Guo <shawn.guo@linaro.org>
Acked-by: Wolfram Sang <w.sang@pengutronix.de>
---
drivers/mmc/host/mxs-mmc.c | 1 +
1 files changed, 1 insertions(+), 0 deletions(-)
diff --git a/drivers/mmc/host/mxs-mmc.c b/drivers/mmc/host/mxs-mmc.c
index 0003d03..1ba08ae 100644
--- a/drivers/mmc/host/mxs-mmc.c
+++ b/drivers/mmc/host/mxs-mmc.c
@@ -891,3 +891,4 @@ module_exit(mxs_mmc_exit);
MODULE_DESCRIPTION("FREESCALE MXS MMC peripheral");
MODULE_AUTHOR("Freescale Semiconductor");
MODULE_LICENSE("GPL");
+MODULE_ALIAS("platform:mxs-mmc");
--
1.5.6.5
^ permalink raw reply related [flat|nested] 5+ messages in thread
end of thread, other threads:[~2011-12-08 9:44 UTC | newest]
Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-12-08 9:44 [PATCH v3 0/4] mmx: mxs-mmc: Some cleanups and fixes for the MXS MMC subsystem Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 1/4] mmc: mxs-mmc: Fix grammatical error in comment Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 2/4] mmc: mxs-mmc: Some cleanups for the MMC driver Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 3/4] mmc: mxs-mmc: Check the return codes of clk_enable() and mxs_reset_block() Lothar Waßmann
2011-12-08 9:44 ` [PATCH v3 4/4] mmc: mxs-mmc: Add an appropriate MODULE_ALIAS Lothar Waßmann
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).