* [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent
@ 2016-04-27 16:51 Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 1/5] mmc: tmio: give read32/write32 functions more descriptive names Wolfram Sang
` (5 more replies)
0 siblings, 6 replies; 7+ messages in thread
From: Wolfram Sang @ 2016-04-27 16:51 UTC (permalink / raw)
To: linux-mmc; +Cc: Wolfram Sang, linux-renesas-soc, Ulf Hansson
It took me a little to discover that CTL_STATUS has a different handling than
the other registers. CTL_STATUS and CTL_STATUS2, both u16, are merged into a
virtual u32. However, CTL_STATUS2 was also directly accessed.
Clean this up, make this consistent, and document this. Making the driver less
complex and easier to work with.
Tested on Renesas R-Car Gen2 and Gen3.
Changes since V2:
* rebased to mmc/next. Sorry Ulf, my branch had an older version of your next
included and I missed the update :(
Wolfram Sang (5):
mmc: tmio: give read32/write32 functions more descriptive names
mmc: tmio: use BIT() within defines
mmc: tmio: use CTL_STATUS consistently
mmc: tmio/sdhi: distinguish between SCLKDIVEN and ILL_FUNC
mmc: tmio: document CTL_STATUS handling
drivers/mmc/host/sh_mobile_sdhi.c | 3 ++-
drivers/mmc/host/tmio_mmc.h | 56 ++++++++++++++++++++-------------------
drivers/mmc/host/tmio_mmc_pio.c | 24 ++++++++---------
3 files changed, 43 insertions(+), 40 deletions(-)
--
2.7.0
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v3 1/5] mmc: tmio: give read32/write32 functions more descriptive names
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
@ 2016-04-27 16:51 ` Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 2/5] mmc: tmio: use BIT() within defines Wolfram Sang
` (4 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2016-04-27 16:51 UTC (permalink / raw)
To: linux-mmc; +Cc: Wolfram Sang, linux-renesas-soc, Ulf Hansson, Simon Horman
From: Wolfram Sang <wsa+renesas@sang-engineering.com>
Looking at the backlogs, I am not the only one who missed that the above
functions do not read u32 from one register, but create a virtual u32
from reading to adjacent u16 registers (which depending on 'bus_shift'
can be up to 8 byte apart). Because this driver supports old hardware
for which we don't have documentation, I first wrongly assumed there was
a variant which had a few u32 registers. Let's give the functions more
descriptive names to make it more obvious what is happening.
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/mmc/host/tmio_mmc.h | 5 ++---
drivers/mmc/host/tmio_mmc_pio.c | 22 +++++++++++-----------
2 files changed, 13 insertions(+), 14 deletions(-)
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index 439fdad2bad91d..e75e5ca220bc0a 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -232,7 +232,7 @@ static inline void sd_ctrl_read16_rep(struct tmio_mmc_host *host, int addr,
readsw(host->ctl + (addr << host->bus_shift), buf, count);
}
-static inline u32 sd_ctrl_read32(struct tmio_mmc_host *host, int addr)
+static inline u32 sd_ctrl_read16_and_16_as_32(struct tmio_mmc_host *host, int addr)
{
return readw(host->ctl + (addr << host->bus_shift)) |
readw(host->ctl + ((addr + 2) << host->bus_shift)) << 16;
@@ -254,11 +254,10 @@ static inline void sd_ctrl_write16_rep(struct tmio_mmc_host *host, int addr,
writesw(host->ctl + (addr << host->bus_shift), buf, count);
}
-static inline void sd_ctrl_write32(struct tmio_mmc_host *host, int addr, u32 val)
+static inline void sd_ctrl_write32_as_16_and_16(struct tmio_mmc_host *host, int addr, u32 val)
{
writew(val, host->ctl + (addr << host->bus_shift));
writew(val >> 16, host->ctl + ((addr + 2) << host->bus_shift));
}
-
#endif
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
index 0b52ef1271a5cd..3635940bc31d1b 100644
--- a/drivers/mmc/host/tmio_mmc_pio.c
+++ b/drivers/mmc/host/tmio_mmc_pio.c
@@ -55,18 +55,18 @@
void tmio_mmc_enable_mmc_irqs(struct tmio_mmc_host *host, u32 i)
{
host->sdcard_irq_mask &= ~(i & TMIO_MASK_IRQ);
- sd_ctrl_write32(host, CTL_IRQ_MASK, host->sdcard_irq_mask);
+ sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, host->sdcard_irq_mask);
}
void tmio_mmc_disable_mmc_irqs(struct tmio_mmc_host *host, u32 i)
{
host->sdcard_irq_mask |= (i & TMIO_MASK_IRQ);
- sd_ctrl_write32(host, CTL_IRQ_MASK, host->sdcard_irq_mask);
+ sd_ctrl_write32_as_16_and_16(host, CTL_IRQ_MASK, host->sdcard_irq_mask);
}
static void tmio_mmc_ack_mmc_irqs(struct tmio_mmc_host *host, u32 i)
{
- sd_ctrl_write32(host, CTL_STATUS, ~i);
+ sd_ctrl_write32_as_16_and_16(host, CTL_STATUS, ~i);
}
static void tmio_mmc_init_sg(struct tmio_mmc_host *host, struct mmc_data *data)
@@ -375,7 +375,7 @@ static int tmio_mmc_start_command(struct tmio_mmc_host *host, struct mmc_command
tmio_mmc_enable_mmc_irqs(host, irq_mask);
/* Fire off the command */
- sd_ctrl_write32(host, CTL_ARG_REG, cmd->arg);
+ sd_ctrl_write32_as_16_and_16(host, CTL_ARG_REG, cmd->arg);
sd_ctrl_write16(host, CTL_SD_CMD, c);
return 0;
@@ -530,7 +530,7 @@ static void tmio_mmc_data_irq(struct tmio_mmc_host *host)
goto out;
if (host->chan_tx && (data->flags & MMC_DATA_WRITE) && !host->force_pio) {
- u32 status = sd_ctrl_read32(host, CTL_STATUS);
+ u32 status = sd_ctrl_read16_and_16_as_32(host, CTL_STATUS);
bool done = false;
/*
@@ -585,7 +585,7 @@ static void tmio_mmc_cmd_irq(struct tmio_mmc_host *host,
*/
for (i = 3, addr = CTL_RESPONSE ; i >= 0 ; i--, addr += 4)
- cmd->resp[i] = sd_ctrl_read32(host, addr);
+ cmd->resp[i] = sd_ctrl_read16_and_16_as_32(host, addr);
if (cmd->flags & MMC_RSP_136) {
cmd->resp[0] = (cmd->resp[0] << 8) | (cmd->resp[1] >> 24);
@@ -702,14 +702,14 @@ irqreturn_t tmio_mmc_irq(int irq, void *devid)
struct tmio_mmc_host *host = devid;
unsigned int ireg, status;
- status = sd_ctrl_read32(host, CTL_STATUS);
+ status = sd_ctrl_read16_and_16_as_32(host, CTL_STATUS);
ireg = status & TMIO_MASK_IRQ & ~host->sdcard_irq_mask;
pr_debug_status(status);
pr_debug_status(ireg);
/* Clear the status except the interrupt status */
- sd_ctrl_write32(host, CTL_STATUS, TMIO_MASK_IRQ);
+ sd_ctrl_write32_as_16_and_16(host, CTL_STATUS, TMIO_MASK_IRQ);
if (__tmio_mmc_card_detect_irq(host, ireg, status))
return IRQ_HANDLED;
@@ -944,7 +944,7 @@ static int tmio_mmc_get_ro(struct mmc_host *mmc)
return ret;
ret = !((pdata->flags & TMIO_MMC_WRPROTECT_DISABLE) ||
- (sd_ctrl_read32(host, CTL_STATUS) & TMIO_STAT_WRPROTECT));
+ (sd_ctrl_read16_and_16_as_32(host, CTL_STATUS) & TMIO_STAT_WRPROTECT));
return ret;
}
@@ -964,7 +964,7 @@ static int tmio_mmc_card_busy(struct mmc_host *mmc)
{
struct tmio_mmc_host *host = mmc_priv(mmc);
- return !(sd_ctrl_read32(host, CTL_STATUS2) & TMIO_STATUS2_DAT0);
+ return !(sd_ctrl_read16_and_16_as_32(host, CTL_STATUS2) & TMIO_STATUS2_DAT0);
}
static struct mmc_host_ops tmio_mmc_ops = {
@@ -1113,7 +1113,7 @@ int tmio_mmc_host_probe(struct tmio_mmc_host *_host,
tmio_mmc_clk_stop(_host);
tmio_mmc_reset(_host);
- _host->sdcard_irq_mask = sd_ctrl_read32(_host, CTL_IRQ_MASK);
+ _host->sdcard_irq_mask = sd_ctrl_read16_and_16_as_32(_host, CTL_IRQ_MASK);
tmio_mmc_disable_mmc_irqs(_host, TMIO_MASK_ALL);
/* Unmask the IRQs we want to know about */
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 2/5] mmc: tmio: use BIT() within defines
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 1/5] mmc: tmio: give read32/write32 functions more descriptive names Wolfram Sang
@ 2016-04-27 16:51 ` Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 3/5] mmc: tmio: use CTL_STATUS consistently Wolfram Sang
` (3 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2016-04-27 16:51 UTC (permalink / raw)
To: linux-mmc; +Cc: Wolfram Sang, linux-renesas-soc, Ulf Hansson, Simon Horman
From: Wolfram Sang <wsa+renesas@sang-engineering.com>
BIT() makes it easier to match the bits to the datasheet. This is
especially important here, since some variants have different names in
their datasheets (like with Renesas R-Car).
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/mmc/host/tmio_mmc.h | 44 +++++++++++++++++++++++---------------------
1 file changed, 23 insertions(+), 21 deletions(-)
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index e75e5ca220bc0a..74945c1a66ce81 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -49,27 +49,29 @@
#define CTL_RESET_SDIO 0x1e0
/* Definitions for values the CTRL_STATUS register can take. */
-#define TMIO_STAT_CMDRESPEND 0x00000001
-#define TMIO_STAT_DATAEND 0x00000004
-#define TMIO_STAT_CARD_REMOVE 0x00000008
-#define TMIO_STAT_CARD_INSERT 0x00000010
-#define TMIO_STAT_SIGSTATE 0x00000020
-#define TMIO_STAT_WRPROTECT 0x00000080
-#define TMIO_STAT_CARD_REMOVE_A 0x00000100
-#define TMIO_STAT_CARD_INSERT_A 0x00000200
-#define TMIO_STAT_SIGSTATE_A 0x00000400
-#define TMIO_STAT_CMD_IDX_ERR 0x00010000
-#define TMIO_STAT_CRCFAIL 0x00020000
-#define TMIO_STAT_STOPBIT_ERR 0x00040000
-#define TMIO_STAT_DATATIMEOUT 0x00080000
-#define TMIO_STAT_RXOVERFLOW 0x00100000
-#define TMIO_STAT_TXUNDERRUN 0x00200000
-#define TMIO_STAT_CMDTIMEOUT 0x00400000
-#define TMIO_STAT_RXRDY 0x01000000
-#define TMIO_STAT_TXRQ 0x02000000
-#define TMIO_STAT_ILL_FUNC 0x20000000
-#define TMIO_STAT_CMD_BUSY 0x40000000
-#define TMIO_STAT_ILL_ACCESS 0x80000000
+#define TMIO_STAT_CMDRESPEND BIT(0)
+#define TMIO_STAT_DATAEND BIT(2)
+#define TMIO_STAT_CARD_REMOVE BIT(3)
+#define TMIO_STAT_CARD_INSERT BIT(4)
+#define TMIO_STAT_SIGSTATE BIT(5)
+#define TMIO_STAT_WRPROTECT BIT(7)
+#define TMIO_STAT_CARD_REMOVE_A BIT(8)
+#define TMIO_STAT_CARD_INSERT_A BIT(9)
+#define TMIO_STAT_SIGSTATE_A BIT(10)
+
+/* These belong technically to CTRL_STATUS2, but the driver merges them */
+#define TMIO_STAT_CMD_IDX_ERR BIT(16)
+#define TMIO_STAT_CRCFAIL BIT(17)
+#define TMIO_STAT_STOPBIT_ERR BIT(18)
+#define TMIO_STAT_DATATIMEOUT BIT(19)
+#define TMIO_STAT_RXOVERFLOW BIT(20)
+#define TMIO_STAT_TXUNDERRUN BIT(21)
+#define TMIO_STAT_CMDTIMEOUT BIT(22)
+#define TMIO_STAT_RXRDY BIT(24)
+#define TMIO_STAT_TXRQ BIT(25)
+#define TMIO_STAT_ILL_FUNC BIT(29)
+#define TMIO_STAT_CMD_BUSY BIT(30)
+#define TMIO_STAT_ILL_ACCESS BIT(31)
#define TMIO_STATUS2_DAT0 BIT(7)
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 3/5] mmc: tmio: use CTL_STATUS consistently
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 1/5] mmc: tmio: give read32/write32 functions more descriptive names Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 2/5] mmc: tmio: use BIT() within defines Wolfram Sang
@ 2016-04-27 16:51 ` Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 4/5] mmc: tmio/sdhi: distinguish between SCLKDIVEN and ILL_FUNC Wolfram Sang
` (2 subsequent siblings)
5 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2016-04-27 16:51 UTC (permalink / raw)
To: linux-mmc; +Cc: Wolfram Sang, linux-renesas-soc, Ulf Hansson, Simon Horman
From: Wolfram Sang <wsa+renesas@sang-engineering.com>
To prevent confusion, use the virtual u32 CTL_STATUS in card_busy() the
same way as in other parts of this driver.
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/mmc/host/tmio_mmc.h | 3 +--
drivers/mmc/host/tmio_mmc_pio.c | 2 +-
2 files changed, 2 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index 74945c1a66ce81..55f251fdb78623 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -67,14 +67,13 @@
#define TMIO_STAT_RXOVERFLOW BIT(20)
#define TMIO_STAT_TXUNDERRUN BIT(21)
#define TMIO_STAT_CMDTIMEOUT BIT(22)
+#define TMIO_STAT_DAT0 BIT(23) /* only known on R-Car so far */
#define TMIO_STAT_RXRDY BIT(24)
#define TMIO_STAT_TXRQ BIT(25)
#define TMIO_STAT_ILL_FUNC BIT(29)
#define TMIO_STAT_CMD_BUSY BIT(30)
#define TMIO_STAT_ILL_ACCESS BIT(31)
-#define TMIO_STATUS2_DAT0 BIT(7)
-
#define CLK_CTL_DIV_MASK 0xff
#define CLK_CTL_SCLKEN BIT(8)
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
index 3635940bc31d1b..57d35074445968 100644
--- a/drivers/mmc/host/tmio_mmc_pio.c
+++ b/drivers/mmc/host/tmio_mmc_pio.c
@@ -964,7 +964,7 @@ static int tmio_mmc_card_busy(struct mmc_host *mmc)
{
struct tmio_mmc_host *host = mmc_priv(mmc);
- return !(sd_ctrl_read16_and_16_as_32(host, CTL_STATUS2) & TMIO_STATUS2_DAT0);
+ return !(sd_ctrl_read16_and_16_as_32(host, CTL_STATUS) & TMIO_STAT_DAT0);
}
static struct mmc_host_ops tmio_mmc_ops = {
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 4/5] mmc: tmio/sdhi: distinguish between SCLKDIVEN and ILL_FUNC
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
` (2 preceding siblings ...)
2016-04-27 16:51 ` [PATCH v3 3/5] mmc: tmio: use CTL_STATUS consistently Wolfram Sang
@ 2016-04-27 16:51 ` Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 5/5] mmc: tmio: document CTL_STATUS handling Wolfram Sang
2016-04-28 10:38 ` [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Ulf Hansson
5 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2016-04-27 16:51 UTC (permalink / raw)
To: linux-mmc; +Cc: Wolfram Sang, linux-renesas-soc, Ulf Hansson, Simon Horman
From: Wolfram Sang <wsa+renesas@sang-engineering.com>
This bit has a different meaning in SDHI and original TMIO. Document
that and use the proper naming.
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/mmc/host/sh_mobile_sdhi.c | 3 ++-
drivers/mmc/host/tmio_mmc.h | 3 ++-
drivers/mmc/host/tmio_mmc_pio.c | 2 +-
3 files changed, 5 insertions(+), 3 deletions(-)
diff --git a/drivers/mmc/host/sh_mobile_sdhi.c b/drivers/mmc/host/sh_mobile_sdhi.c
index 3bf68b48aa6d3b..f8ea3d1d6de382 100644
--- a/drivers/mmc/host/sh_mobile_sdhi.c
+++ b/drivers/mmc/host/sh_mobile_sdhi.c
@@ -244,7 +244,8 @@ static int sh_mobile_sdhi_wait_idle(struct tmio_mmc_host *host)
{
int timeout = 1000;
- while (--timeout && !(sd_ctrl_read16(host, CTL_STATUS2) & (1 << 13)))
+ while (--timeout && !(sd_ctrl_read16_and_16_as_32(host, CTL_STATUS)
+ & TMIO_STAT_SCLKDIVEN))
udelay(1);
if (!timeout) {
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index 55f251fdb78623..8dd5ea4be0a371 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -70,7 +70,8 @@
#define TMIO_STAT_DAT0 BIT(23) /* only known on R-Car so far */
#define TMIO_STAT_RXRDY BIT(24)
#define TMIO_STAT_TXRQ BIT(25)
-#define TMIO_STAT_ILL_FUNC BIT(29)
+#define TMIO_STAT_ILL_FUNC BIT(29) /* only when !TMIO_MMC_HAS_IDLE_WAIT */
+#define TMIO_STAT_SCLKDIVEN BIT(29) /* only when TMIO_MMC_HAS_IDLE_WAIT */
#define TMIO_STAT_CMD_BUSY BIT(30)
#define TMIO_STAT_ILL_ACCESS BIT(31)
diff --git a/drivers/mmc/host/tmio_mmc_pio.c b/drivers/mmc/host/tmio_mmc_pio.c
index 57d35074445968..95f22997f31a66 100644
--- a/drivers/mmc/host/tmio_mmc_pio.c
+++ b/drivers/mmc/host/tmio_mmc_pio.c
@@ -542,7 +542,7 @@ static void tmio_mmc_data_irq(struct tmio_mmc_host *host)
* waiting for one more interrupt fixes the problem.
*/
if (host->pdata->flags & TMIO_MMC_HAS_IDLE_WAIT) {
- if (status & TMIO_STAT_ILL_FUNC)
+ if (status & TMIO_STAT_SCLKDIVEN)
done = true;
} else {
if (!(status & TMIO_STAT_CMD_BUSY))
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* [PATCH v3 5/5] mmc: tmio: document CTL_STATUS handling
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
` (3 preceding siblings ...)
2016-04-27 16:51 ` [PATCH v3 4/5] mmc: tmio/sdhi: distinguish between SCLKDIVEN and ILL_FUNC Wolfram Sang
@ 2016-04-27 16:51 ` Wolfram Sang
2016-04-28 10:38 ` [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Ulf Hansson
5 siblings, 0 replies; 7+ messages in thread
From: Wolfram Sang @ 2016-04-27 16:51 UTC (permalink / raw)
To: linux-mmc; +Cc: Wolfram Sang, linux-renesas-soc, Ulf Hansson, Simon Horman
From: Wolfram Sang <wsa+renesas@sang-engineering.com>
Now that reading CTL_STATUS is consistent, we can remove CTL_STATUS2 and
document how this is handled internally.
Reviewed-by: Simon Horman <horms+renesas@verge.net.au>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
---
drivers/mmc/host/tmio_mmc.h | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/mmc/host/tmio_mmc.h b/drivers/mmc/host/tmio_mmc.h
index 8dd5ea4be0a371..1aac2ad8edf265 100644
--- a/drivers/mmc/host/tmio_mmc.h
+++ b/drivers/mmc/host/tmio_mmc.h
@@ -30,8 +30,9 @@
#define CTL_STOP_INTERNAL_ACTION 0x08
#define CTL_XFER_BLK_COUNT 0xa
#define CTL_RESPONSE 0x0c
+/* driver merges STATUS and following STATUS2 */
#define CTL_STATUS 0x1c
-#define CTL_STATUS2 0x1e
+/* driver merges IRQ_MASK and following IRQ_MASK2 */
#define CTL_IRQ_MASK 0x20
#define CTL_SD_CARD_CLK_CTL 0x24
#define CTL_SD_XFER_LEN 0x26
--
2.7.0
^ permalink raw reply related [flat|nested] 7+ messages in thread
* Re: [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
` (4 preceding siblings ...)
2016-04-27 16:51 ` [PATCH v3 5/5] mmc: tmio: document CTL_STATUS handling Wolfram Sang
@ 2016-04-28 10:38 ` Ulf Hansson
5 siblings, 0 replies; 7+ messages in thread
From: Ulf Hansson @ 2016-04-28 10:38 UTC (permalink / raw)
To: Wolfram Sang; +Cc: linux-mmc, linux-renesas-soc
On 27 April 2016 at 18:51, Wolfram Sang <wsa@the-dreams.de> wrote:
> It took me a little to discover that CTL_STATUS has a different handling than
> the other registers. CTL_STATUS and CTL_STATUS2, both u16, are merged into a
> virtual u32. However, CTL_STATUS2 was also directly accessed.
>
> Clean this up, make this consistent, and document this. Making the driver less
> complex and easier to work with.
>
> Tested on Renesas R-Car Gen2 and Gen3.
>
> Changes since V2:
>
> * rebased to mmc/next. Sorry Ulf, my branch had an older version of your next
> included and I missed the update :(
No worries! The re-spin was probably more work at your end than at mine. :-)
>
>
> Wolfram Sang (5):
> mmc: tmio: give read32/write32 functions more descriptive names
> mmc: tmio: use BIT() within defines
> mmc: tmio: use CTL_STATUS consistently
> mmc: tmio/sdhi: distinguish between SCLKDIVEN and ILL_FUNC
> mmc: tmio: document CTL_STATUS handling
>
> drivers/mmc/host/sh_mobile_sdhi.c | 3 ++-
> drivers/mmc/host/tmio_mmc.h | 56 ++++++++++++++++++++-------------------
> drivers/mmc/host/tmio_mmc_pio.c | 24 ++++++++---------
> 3 files changed, 43 insertions(+), 40 deletions(-)
>
> --
> 2.7.0
>
Thanks, applied for next!
Kind regards
Uffe
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2016-04-28 10:38 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2016-04-27 16:51 [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 1/5] mmc: tmio: give read32/write32 functions more descriptive names Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 2/5] mmc: tmio: use BIT() within defines Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 3/5] mmc: tmio: use CTL_STATUS consistently Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 4/5] mmc: tmio/sdhi: distinguish between SCLKDIVEN and ILL_FUNC Wolfram Sang
2016-04-27 16:51 ` [PATCH v3 5/5] mmc: tmio: document CTL_STATUS handling Wolfram Sang
2016-04-28 10:38 ` [PATCH v3 0/5] mmc: tmio: make CTL_STATUS handling consistent Ulf Hansson
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.