2015-07-28 03:09:38

by Shawn Lin

[permalink] [raw]
Subject: [PATCH] mmc: dw_mmc: Fix coding style issues

This patch fixes the following issues reported by checkpatch.pl:
- use -EINVAL instead of -ENOSYS, to fix warning message:
"ENOSYS means 'invalid syscall nr' and nothing else"
- split lines whose length is greater than 80 characters
- avoid quoted string split across lines
- use min_t instead of min, to fix warning message:
"min() should probably be min_t(int, cnt, host->part_buf_count)"

Signed-off-by: Shawn Lin <[email protected]>
---

drivers/mmc/host/dw_mmc.c | 85 ++++++++++++++++++++++++++++++-----------------
1 file changed, 54 insertions(+), 31 deletions(-)

diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
index 40e9d8e..6aede38 100644
--- a/drivers/mmc/host/dw_mmc.c
+++ b/drivers/mmc/host/dw_mmc.c
@@ -235,8 +235,8 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
struct dw_mci *host = slot->host;
const struct dw_mci_drv_data *drv_data = slot->host->drv_data;
u32 cmdr;
- cmd->error = -EINPROGRESS;

+ cmd->error = -EINPROGRESS;
cmdr = cmd->opcode;

if (cmd->opcode == MMC_STOP_TRANSMISSION ||
@@ -371,6 +371,7 @@ static void dw_mci_start_command(struct dw_mci *host,
cmd->arg, cmd_flags);

mci_writel(host, CMDARG, cmd->arg);
+ /* Make sure CMDARG is configured before CMD */
wmb();
dw_mci_wait_while_busy(host, cmd_flags);

@@ -380,6 +381,7 @@ static void dw_mci_start_command(struct dw_mci *host,
static inline void send_stop_abort(struct dw_mci *host, struct mmc_data *data)
{
struct mmc_command *stop = data->stop ? data->stop : &host->stop_abort;
+
dw_mci_start_command(host, stop, host->stop_cmdr);
}

@@ -463,6 +465,7 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data,
unsigned int sg_len)
{
int i;
+
if (host->dma_64bit_address == 1) {
struct idmac_desc_64addr *desc = host->sg_cpu;

@@ -524,7 +527,7 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data,
desc->des0 |= cpu_to_le32(IDMAC_DES0_LD);
}

- wmb();
+ wmb(); /* drain writebuffer */
}

static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len)
@@ -542,7 +545,7 @@ static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len)
temp |= SDMMC_CTRL_USE_IDMAC;
mci_writel(host, CTRL, temp);

- wmb();
+ wmb(); /* drain writebuffer */

/* Enable the IDMAC */
temp = mci_readl(host, BMOD);
@@ -589,7 +592,9 @@ static int dw_mci_idmac_init(struct dw_mci *host)
host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc);

/* Forward link the descriptor list */
- for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) {
+ for (i = 0, p = host->sg_cpu;
+ i < host->ring_size - 1;
+ i++, p++) {
p->des3 = cpu_to_le32(host->sg_dma +
(sizeof(struct idmac_desc) * (i + 1)));
p->des1 = 0;
@@ -718,7 +723,7 @@ static void dw_mci_adjust_fifoth(struct dw_mci *host, struct mmc_data *data)
u32 fifo_width = 1 << host->data_shift;
u32 blksz_depth = blksz / fifo_width, fifoth_val;
u32 msize = 0, rx_wmark = 1, tx_wmark, tx_wmark_invers;
- int idx = (sizeof(mszs) / sizeof(mszs[0])) - 1;
+ int idx = ARRAY_SIZE(mszs) - 1;

tx_wmark = (host->fifo_depth) / 2;
tx_wmark_invers = host->fifo_depth - tx_wmark;
@@ -843,6 +848,7 @@ static int dw_mci_submit_data_dma(struct dw_mci *host, struct mmc_data *data)
static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
{
unsigned long irqflags;
+ int flags = SG_MITER_ATOMIC;
u32 temp;

data->error = -EINPROGRESS;
@@ -859,7 +865,6 @@ static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
}

if (dw_mci_submit_data_dma(host, data)) {
- int flags = SG_MITER_ATOMIC;
if (host->data->flags & MMC_DATA_READ)
flags |= SG_MITER_TO_SG;
else
@@ -906,6 +911,7 @@ static void mci_send_cmd(struct dw_mci_slot *slot, u32 cmd, u32 arg)
unsigned int cmd_status = 0;

mci_writel(host, CMDARG, arg);
+ /* Make sure CMDARG is configured before CMD */
wmb();
dw_mci_wait_while_busy(host, cmd);
mci_writel(host, CMD, SDMMC_CMD_START | cmd);
@@ -1019,6 +1025,7 @@ static void __dw_mci_start_request(struct dw_mci *host,

if (data) {
dw_mci_submit_data(host, data);
+ /* drain writebuffer */
wmb();
}

@@ -1384,14 +1391,15 @@ static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
struct dw_mci_slot *slot = mmc_priv(mmc);
struct dw_mci *host = slot->host;
const struct dw_mci_drv_data *drv_data = host->drv_data;
- int err = -ENOSYS;
+ int err = -EINVAL;

if (drv_data && drv_data->execute_tuning)
err = drv_data->execute_tuning(slot);
return err;
}

-static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios)
+static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc,
+ struct mmc_ios *ios)
{
struct dw_mci_slot *slot = mmc_priv(mmc);
struct dw_mci *host = slot->host;
@@ -1743,7 +1751,7 @@ static int dw_mci_push_part_bytes(struct dw_mci *host, void *buf, int cnt)
/* pull first bytes from part_buf, only use during pull */
static int dw_mci_pull_part_bytes(struct dw_mci *host, void *buf, int cnt)
{
- cnt = min(cnt, (int)host->part_buf_count);
+ cnt = min_t(int, cnt, host->part_buf_count);
if (cnt) {
memcpy(buf, (void *)&host->part_buf + host->part_buf_start,
cnt);
@@ -1769,6 +1777,7 @@ static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt)
/* try and push anything in the part_buf */
if (unlikely(host->part_buf_count)) {
int len = dw_mci_push_part_bytes(host, buf, cnt);
+
buf += len;
cnt -= len;
if (host->part_buf_count == 2) {
@@ -1795,6 +1804,7 @@ static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt)
#endif
{
u16 *pdata = buf;
+
for (; cnt >= 2; cnt -= 2)
mci_fifo_writew(host->fifo_reg, *pdata++);
buf = pdata;
@@ -1819,6 +1829,7 @@ static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt)
int len = min(cnt & -2, (int)sizeof(aligned_buf));
int items = len >> 1;
int i;
+
for (i = 0; i < items; ++i)
aligned_buf[i] = mci_fifo_readw(host->fifo_reg);
/* memcpy from aligned buffer into output buffer */
@@ -1830,6 +1841,7 @@ static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt)
#endif
{
u16 *pdata = buf;
+
for (; cnt >= 2; cnt -= 2)
*pdata++ = mci_fifo_readw(host->fifo_reg);
buf = pdata;
@@ -1848,6 +1860,7 @@ static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt)
/* try and push anything in the part_buf */
if (unlikely(host->part_buf_count)) {
int len = dw_mci_push_part_bytes(host, buf, cnt);
+
buf += len;
cnt -= len;
if (host->part_buf_count == 4) {
@@ -1874,6 +1887,7 @@ static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt)
#endif
{
u32 *pdata = buf;
+
for (; cnt >= 4; cnt -= 4)
mci_fifo_writel(host->fifo_reg, *pdata++);
buf = pdata;
@@ -1898,6 +1912,7 @@ static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt)
int len = min(cnt & -4, (int)sizeof(aligned_buf));
int items = len >> 2;
int i;
+
for (i = 0; i < items; ++i)
aligned_buf[i] = mci_fifo_readl(host->fifo_reg);
/* memcpy from aligned buffer into output buffer */
@@ -1909,6 +1924,7 @@ static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt)
#endif
{
u32 *pdata = buf;
+
for (; cnt >= 4; cnt -= 4)
*pdata++ = mci_fifo_readl(host->fifo_reg);
buf = pdata;
@@ -1927,6 +1943,7 @@ static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt)
/* try and push anything in the part_buf */
if (unlikely(host->part_buf_count)) {
int len = dw_mci_push_part_bytes(host, buf, cnt);
+
buf += len;
cnt -= len;

@@ -1954,6 +1971,7 @@ static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt)
#endif
{
u64 *pdata = buf;
+
for (; cnt >= 8; cnt -= 8)
mci_fifo_writeq(host->fifo_reg, *pdata++);
buf = pdata;
@@ -1978,6 +1996,7 @@ static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt)
int len = min(cnt & -8, (int)sizeof(aligned_buf));
int items = len >> 3;
int i;
+
for (i = 0; i < items; ++i)
aligned_buf[i] = mci_fifo_readq(host->fifo_reg);

@@ -1990,6 +2009,7 @@ static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt)
#endif
{
u64 *pdata = buf;
+
for (; cnt >= 8; cnt -= 8)
*pdata++ = mci_fifo_readq(host->fifo_reg);
buf = pdata;
@@ -2065,7 +2085,7 @@ static void dw_mci_read_data_pio(struct dw_mci *host, bool dto)
done:
sg_miter_stop(sg_miter);
host->sg = NULL;
- smp_wmb();
+ smp_wmb(); /* drain writebuffer */
set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
}

@@ -2119,7 +2139,7 @@ static void dw_mci_write_data_pio(struct dw_mci *host)
done:
sg_miter_stop(sg_miter);
host->sg = NULL;
- smp_wmb();
+ smp_wmb(); /* drain writebuffer */
set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
}

@@ -2128,6 +2148,7 @@ static void dw_mci_cmd_interrupt(struct dw_mci *host, u32 status)
if (!host->cmd_status)
host->cmd_status = status;

+ /* drain writebuffer */
smp_wmb();

set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
@@ -2192,7 +2213,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
if (pending & DW_MCI_CMD_ERROR_FLAGS) {
mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS);
host->cmd_status = pending;
- smp_wmb();
+ smp_wmb(); /* drain writebuffer */
set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
}

@@ -2200,7 +2221,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
/* if there is an error report DATA_ERROR */
mci_writel(host, RINTSTS, DW_MCI_DATA_ERROR_FLAGS);
host->data_status = pending;
- smp_wmb();
+ smp_wmb(); /* drain writebuffer */
set_bit(EVENT_DATA_ERROR, &host->pending_events);
tasklet_schedule(&host->tasklet);
}
@@ -2209,7 +2230,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
mci_writel(host, RINTSTS, SDMMC_INT_DATA_OVER);
if (!host->data_status)
host->data_status = pending;
- smp_wmb();
+ smp_wmb(); /* drain writebuffer */
if (host->dir_status == DW_MCI_RECV_STATUS) {
if (host->sg != NULL)
dw_mci_read_data_pio(host, true);
@@ -2473,8 +2494,8 @@ static void dw_mci_init_dma(struct dw_mci *host)
if (host->dma_ops->init && host->dma_ops->start &&
host->dma_ops->stop && host->dma_ops->cleanup) {
if (host->dma_ops->init(host)) {
- dev_err(host->dev, "%s: Unable to initialize "
- "DMA Controller.\n", __func__);
+ dev_err(host->dev, "%s: Unable to initialize DMA Controller.\n",
+ __func__);
goto no_dma;
}
} else {
@@ -2488,7 +2509,6 @@ static void dw_mci_init_dma(struct dw_mci *host)
no_dma:
dev_info(host->dev, "Using PIO mode.\n");
host->use_dma = 0;
- return;
}

static bool dw_mci_ctrl_reset(struct dw_mci *host, u32 reset)
@@ -2542,6 +2562,7 @@ static bool dw_mci_reset(struct dw_mci *host)
if (host->use_dma) {
unsigned long timeout = jiffies + msecs_to_jiffies(500);
u32 status;
+
do {
status = mci_readl(host, STATUS);
if (!(status & SDMMC_STATUS_DMA_REQ))
@@ -2551,8 +2572,8 @@ static bool dw_mci_reset(struct dw_mci *host)

if (status & SDMMC_STATUS_DMA_REQ) {
dev_err(host->dev,
- "%s: Timeout waiting for dma_req to "
- "clear during reset\n", __func__);
+ "%s: Timeout waiting for dma_req to clear during reset\n",
+ __func__);
goto ciu_out;
}

@@ -2563,8 +2584,8 @@ static bool dw_mci_reset(struct dw_mci *host)
} else {
/* if the controller reset bit did clear, then set clock regs */
if (!(mci_readl(host, CTRL) & SDMMC_CTRL_RESET)) {
- dev_err(host->dev, "%s: fifo/dma reset bits didn't "
- "clear but ciu was reset, doing clock update\n",
+ dev_err(host->dev,
+ "%s: fifo/dma reset bits didn't clear but ciu was reset, doing clock update\n",
__func__);
goto ciu_out;
}
@@ -2625,8 +2646,8 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
/* find out number of slots supported */
if (of_property_read_u32(dev->of_node, "num-slots",
&pdata->num_slots)) {
- dev_info(dev, "num-slots property not found, "
- "assuming 1 slot is available\n");
+ dev_info(dev,
+ "num-slots property not found, assuming 1 slot is available\n");
pdata->num_slots = 1;
}

@@ -2636,8 +2657,8 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
pdata->quirks |= of_quirks[idx].id;

if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth))
- dev_info(dev, "fifo-depth property not found, using "
- "value of FIFOTH register as default\n");
+ dev_info(dev,
+ "fifo-depth property not found, using value of FIFOTH register as default\n");

of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms);

@@ -2874,11 +2895,11 @@ int dw_mci_probe(struct dw_mci *host)
mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER |
SDMMC_INT_TXDR | SDMMC_INT_RXDR |
DW_MCI_ERROR_FLAGS);
- mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci interrupt */
+ /* Enable mci interrupt */
+ mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE);

- dev_info(host->dev, "DW MMC controller at irq %d, "
- "%d bit host data width, "
- "%u deep fifo\n",
+ dev_info(host->dev,
+ "DW MMC controller at irq %d,%d bit host data width,%u deep fifo\n",
host->irq, width, fifo_size);

/* We need at least one slot to succeed */
@@ -2893,8 +2914,9 @@ int dw_mci_probe(struct dw_mci *host)
if (init_slots) {
dev_info(host->dev, "%d slots initialized\n", init_slots);
} else {
- dev_dbg(host->dev, "attempted to initialize %d slots, "
- "but failed on all\n", host->num_slots);
+ dev_dbg(host->dev,
+ "attempted to initialize %d slots, but failed on all\n",
+ host->num_slots);
goto err_dmaunmap;
}

@@ -2992,6 +3014,7 @@ int dw_mci_resume(struct dw_mci *host)

for (i = 0; i < host->num_slots; i++) {
struct dw_mci_slot *slot = host->slot[i];
+
if (!slot)
continue;
if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
--
2.3.7


2015-08-03 04:07:32

by Jaehoon Chung

[permalink] [raw]
Subject: Re: [PATCH] mmc: dw_mmc: Fix coding style issues

Hi, Shawn.

On 07/28/2015 12:06 PM, Shawn Lin wrote:
> This patch fixes the following issues reported by checkpatch.pl:
> - use -EINVAL instead of -ENOSYS, to fix warning message:
> "ENOSYS means 'invalid syscall nr' and nothing else"
> - split lines whose length is greater than 80 characters
> - avoid quoted string split across lines
> - use min_t instead of min, to fix warning message:
> "min() should probably be min_t(int, cnt, host->part_buf_count)"

Thanks for fixing coding style.
But i will apply this patch(https://patchwork.kernel.org/patch/6672581/).
So if you can fix with this patch, then it's helpful to me.
If you can't, i will modify your patch before applying.
How about?

>
> Signed-off-by: Shawn Lin <[email protected]>
> ---
>
> drivers/mmc/host/dw_mmc.c | 85 ++++++++++++++++++++++++++++++-----------------
> 1 file changed, 54 insertions(+), 31 deletions(-)
>
> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
> index 40e9d8e..6aede38 100644
> --- a/drivers/mmc/host/dw_mmc.c
> +++ b/drivers/mmc/host/dw_mmc.c
> @@ -235,8 +235,8 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
> struct dw_mci *host = slot->host;
> const struct dw_mci_drv_data *drv_data = slot->host->drv_data;
> u32 cmdr;
> - cmd->error = -EINPROGRESS;
>
> + cmd->error = -EINPROGRESS;
> cmdr = cmd->opcode;
>
> if (cmd->opcode == MMC_STOP_TRANSMISSION ||
> @@ -371,6 +371,7 @@ static void dw_mci_start_command(struct dw_mci *host,
> cmd->arg, cmd_flags);
>
> mci_writel(host, CMDARG, cmd->arg);
> + /* Make sure CMDARG is configured before CMD */
> wmb();
> dw_mci_wait_while_busy(host, cmd_flags);
>
> @@ -380,6 +381,7 @@ static void dw_mci_start_command(struct dw_mci *host,
> static inline void send_stop_abort(struct dw_mci *host, struct mmc_data *data)
> {
> struct mmc_command *stop = data->stop ? data->stop : &host->stop_abort;
> +
> dw_mci_start_command(host, stop, host->stop_cmdr);
> }
>
> @@ -463,6 +465,7 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data,
> unsigned int sg_len)
> {
> int i;
> +
> if (host->dma_64bit_address == 1) {
> struct idmac_desc_64addr *desc = host->sg_cpu;
>
> @@ -524,7 +527,7 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data,
> desc->des0 |= cpu_to_le32(IDMAC_DES0_LD);
> }
>
> - wmb();
> + wmb(); /* drain writebuffer */
> }
>
> static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len)
> @@ -542,7 +545,7 @@ static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len)
> temp |= SDMMC_CTRL_USE_IDMAC;
> mci_writel(host, CTRL, temp);
>
> - wmb();
> + wmb(); /* drain writebuffer */
>
> /* Enable the IDMAC */
> temp = mci_readl(host, BMOD);
> @@ -589,7 +592,9 @@ static int dw_mci_idmac_init(struct dw_mci *host)
> host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc);
>
> /* Forward link the descriptor list */
> - for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) {
> + for (i = 0, p = host->sg_cpu;
> + i < host->ring_size - 1;
> + i++, p++) {
> p->des3 = cpu_to_le32(host->sg_dma +
> (sizeof(struct idmac_desc) * (i + 1)));
> p->des1 = 0;
> @@ -718,7 +723,7 @@ static void dw_mci_adjust_fifoth(struct dw_mci *host, struct mmc_data *data)
> u32 fifo_width = 1 << host->data_shift;
> u32 blksz_depth = blksz / fifo_width, fifoth_val;
> u32 msize = 0, rx_wmark = 1, tx_wmark, tx_wmark_invers;
> - int idx = (sizeof(mszs) / sizeof(mszs[0])) - 1;
> + int idx = ARRAY_SIZE(mszs) - 1;
>
> tx_wmark = (host->fifo_depth) / 2;
> tx_wmark_invers = host->fifo_depth - tx_wmark;
> @@ -843,6 +848,7 @@ static int dw_mci_submit_data_dma(struct dw_mci *host, struct mmc_data *data)
> static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
> {
> unsigned long irqflags;
> + int flags = SG_MITER_ATOMIC;
> u32 temp;
>
> data->error = -EINPROGRESS;
> @@ -859,7 +865,6 @@ static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
> }
>
> if (dw_mci_submit_data_dma(host, data)) {
> - int flags = SG_MITER_ATOMIC;
> if (host->data->flags & MMC_DATA_READ)
> flags |= SG_MITER_TO_SG;
> else
> @@ -906,6 +911,7 @@ static void mci_send_cmd(struct dw_mci_slot *slot, u32 cmd, u32 arg)
> unsigned int cmd_status = 0;
>
> mci_writel(host, CMDARG, arg);
> + /* Make sure CMDARG is configured before CMD */
> wmb();
> dw_mci_wait_while_busy(host, cmd);
> mci_writel(host, CMD, SDMMC_CMD_START | cmd);
> @@ -1019,6 +1025,7 @@ static void __dw_mci_start_request(struct dw_mci *host,
>
> if (data) {
> dw_mci_submit_data(host, data);
> + /* drain writebuffer */
> wmb();

I think good that you have consistency for above comment.
wmb(); /* drain writebuffer */
or
/* drain writebuffer */
wmb();

What do you want?

Best Regards,
Jaehoon Chung

> }
>
> @@ -1384,14 +1391,15 @@ static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
> struct dw_mci_slot *slot = mmc_priv(mmc);
> struct dw_mci *host = slot->host;
> const struct dw_mci_drv_data *drv_data = host->drv_data;
> - int err = -ENOSYS;
> + int err = -EINVAL;
>
> if (drv_data && drv_data->execute_tuning)
> err = drv_data->execute_tuning(slot);
> return err;
> }
>
> -static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios)
> +static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc,
> + struct mmc_ios *ios)
> {
> struct dw_mci_slot *slot = mmc_priv(mmc);
> struct dw_mci *host = slot->host;
> @@ -1743,7 +1751,7 @@ static int dw_mci_push_part_bytes(struct dw_mci *host, void *buf, int cnt)
> /* pull first bytes from part_buf, only use during pull */
> static int dw_mci_pull_part_bytes(struct dw_mci *host, void *buf, int cnt)
> {
> - cnt = min(cnt, (int)host->part_buf_count);
> + cnt = min_t(int, cnt, host->part_buf_count);
> if (cnt) {
> memcpy(buf, (void *)&host->part_buf + host->part_buf_start,
> cnt);
> @@ -1769,6 +1777,7 @@ static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt)
> /* try and push anything in the part_buf */
> if (unlikely(host->part_buf_count)) {
> int len = dw_mci_push_part_bytes(host, buf, cnt);
> +
> buf += len;
> cnt -= len;
> if (host->part_buf_count == 2) {
> @@ -1795,6 +1804,7 @@ static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt)
> #endif
> {
> u16 *pdata = buf;
> +
> for (; cnt >= 2; cnt -= 2)
> mci_fifo_writew(host->fifo_reg, *pdata++);
> buf = pdata;
> @@ -1819,6 +1829,7 @@ static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt)
> int len = min(cnt & -2, (int)sizeof(aligned_buf));
> int items = len >> 1;
> int i;
> +
> for (i = 0; i < items; ++i)
> aligned_buf[i] = mci_fifo_readw(host->fifo_reg);
> /* memcpy from aligned buffer into output buffer */
> @@ -1830,6 +1841,7 @@ static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt)
> #endif
> {
> u16 *pdata = buf;
> +
> for (; cnt >= 2; cnt -= 2)
> *pdata++ = mci_fifo_readw(host->fifo_reg);
> buf = pdata;
> @@ -1848,6 +1860,7 @@ static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt)
> /* try and push anything in the part_buf */
> if (unlikely(host->part_buf_count)) {
> int len = dw_mci_push_part_bytes(host, buf, cnt);
> +
> buf += len;
> cnt -= len;
> if (host->part_buf_count == 4) {
> @@ -1874,6 +1887,7 @@ static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt)
> #endif
> {
> u32 *pdata = buf;
> +
> for (; cnt >= 4; cnt -= 4)
> mci_fifo_writel(host->fifo_reg, *pdata++);
> buf = pdata;
> @@ -1898,6 +1912,7 @@ static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt)
> int len = min(cnt & -4, (int)sizeof(aligned_buf));
> int items = len >> 2;
> int i;
> +
> for (i = 0; i < items; ++i)
> aligned_buf[i] = mci_fifo_readl(host->fifo_reg);
> /* memcpy from aligned buffer into output buffer */
> @@ -1909,6 +1924,7 @@ static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt)
> #endif
> {
> u32 *pdata = buf;
> +
> for (; cnt >= 4; cnt -= 4)
> *pdata++ = mci_fifo_readl(host->fifo_reg);
> buf = pdata;
> @@ -1927,6 +1943,7 @@ static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt)
> /* try and push anything in the part_buf */
> if (unlikely(host->part_buf_count)) {
> int len = dw_mci_push_part_bytes(host, buf, cnt);
> +
> buf += len;
> cnt -= len;
>
> @@ -1954,6 +1971,7 @@ static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt)
> #endif
> {
> u64 *pdata = buf;
> +
> for (; cnt >= 8; cnt -= 8)
> mci_fifo_writeq(host->fifo_reg, *pdata++);
> buf = pdata;
> @@ -1978,6 +1996,7 @@ static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt)
> int len = min(cnt & -8, (int)sizeof(aligned_buf));
> int items = len >> 3;
> int i;
> +
> for (i = 0; i < items; ++i)
> aligned_buf[i] = mci_fifo_readq(host->fifo_reg);
>
> @@ -1990,6 +2009,7 @@ static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt)
> #endif
> {
> u64 *pdata = buf;
> +
> for (; cnt >= 8; cnt -= 8)
> *pdata++ = mci_fifo_readq(host->fifo_reg);
> buf = pdata;
> @@ -2065,7 +2085,7 @@ static void dw_mci_read_data_pio(struct dw_mci *host, bool dto)
> done:
> sg_miter_stop(sg_miter);
> host->sg = NULL;
> - smp_wmb();
> + smp_wmb(); /* drain writebuffer */
> set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
> }
>
> @@ -2119,7 +2139,7 @@ static void dw_mci_write_data_pio(struct dw_mci *host)
> done:
> sg_miter_stop(sg_miter);
> host->sg = NULL;
> - smp_wmb();
> + smp_wmb(); /* drain writebuffer */
> set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
> }
>
> @@ -2128,6 +2148,7 @@ static void dw_mci_cmd_interrupt(struct dw_mci *host, u32 status)
> if (!host->cmd_status)
> host->cmd_status = status;
>
> + /* drain writebuffer */
> smp_wmb();
>
> set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
> @@ -2192,7 +2213,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
> if (pending & DW_MCI_CMD_ERROR_FLAGS) {
> mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS);
> host->cmd_status = pending;
> - smp_wmb();
> + smp_wmb(); /* drain writebuffer */
> set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
> }
>
> @@ -2200,7 +2221,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
> /* if there is an error report DATA_ERROR */
> mci_writel(host, RINTSTS, DW_MCI_DATA_ERROR_FLAGS);
> host->data_status = pending;
> - smp_wmb();
> + smp_wmb(); /* drain writebuffer */
> set_bit(EVENT_DATA_ERROR, &host->pending_events);
> tasklet_schedule(&host->tasklet);
> }
> @@ -2209,7 +2230,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
> mci_writel(host, RINTSTS, SDMMC_INT_DATA_OVER);
> if (!host->data_status)
> host->data_status = pending;
> - smp_wmb();
> + smp_wmb(); /* drain writebuffer */
> if (host->dir_status == DW_MCI_RECV_STATUS) {
> if (host->sg != NULL)
> dw_mci_read_data_pio(host, true);
> @@ -2473,8 +2494,8 @@ static void dw_mci_init_dma(struct dw_mci *host)
> if (host->dma_ops->init && host->dma_ops->start &&
> host->dma_ops->stop && host->dma_ops->cleanup) {
> if (host->dma_ops->init(host)) {
> - dev_err(host->dev, "%s: Unable to initialize "
> - "DMA Controller.\n", __func__);
> + dev_err(host->dev, "%s: Unable to initialize DMA Controller.\n",
> + __func__);
> goto no_dma;
> }
> } else {
> @@ -2488,7 +2509,6 @@ static void dw_mci_init_dma(struct dw_mci *host)
> no_dma:
> dev_info(host->dev, "Using PIO mode.\n");
> host->use_dma = 0;
> - return;
> }
>
> static bool dw_mci_ctrl_reset(struct dw_mci *host, u32 reset)
> @@ -2542,6 +2562,7 @@ static bool dw_mci_reset(struct dw_mci *host)
> if (host->use_dma) {
> unsigned long timeout = jiffies + msecs_to_jiffies(500);
> u32 status;
> +
> do {
> status = mci_readl(host, STATUS);
> if (!(status & SDMMC_STATUS_DMA_REQ))
> @@ -2551,8 +2572,8 @@ static bool dw_mci_reset(struct dw_mci *host)
>
> if (status & SDMMC_STATUS_DMA_REQ) {
> dev_err(host->dev,
> - "%s: Timeout waiting for dma_req to "
> - "clear during reset\n", __func__);
> + "%s: Timeout waiting for dma_req to clear during reset\n",
> + __func__);
> goto ciu_out;
> }
>
> @@ -2563,8 +2584,8 @@ static bool dw_mci_reset(struct dw_mci *host)
> } else {
> /* if the controller reset bit did clear, then set clock regs */
> if (!(mci_readl(host, CTRL) & SDMMC_CTRL_RESET)) {
> - dev_err(host->dev, "%s: fifo/dma reset bits didn't "
> - "clear but ciu was reset, doing clock update\n",
> + dev_err(host->dev,
> + "%s: fifo/dma reset bits didn't clear but ciu was reset, doing clock update\n",
> __func__);
> goto ciu_out;
> }
> @@ -2625,8 +2646,8 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
> /* find out number of slots supported */
> if (of_property_read_u32(dev->of_node, "num-slots",
> &pdata->num_slots)) {
> - dev_info(dev, "num-slots property not found, "
> - "assuming 1 slot is available\n");
> + dev_info(dev,
> + "num-slots property not found, assuming 1 slot is available\n");
> pdata->num_slots = 1;
> }
>
> @@ -2636,8 +2657,8 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
> pdata->quirks |= of_quirks[idx].id;
>
> if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth))
> - dev_info(dev, "fifo-depth property not found, using "
> - "value of FIFOTH register as default\n");
> + dev_info(dev,
> + "fifo-depth property not found, using value of FIFOTH register as default\n");
>
> of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms);
>
> @@ -2874,11 +2895,11 @@ int dw_mci_probe(struct dw_mci *host)
> mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER |
> SDMMC_INT_TXDR | SDMMC_INT_RXDR |
> DW_MCI_ERROR_FLAGS);
> - mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci interrupt */
> + /* Enable mci interrupt */
> + mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE);
>
> - dev_info(host->dev, "DW MMC controller at irq %d, "
> - "%d bit host data width, "
> - "%u deep fifo\n",
> + dev_info(host->dev,
> + "DW MMC controller at irq %d,%d bit host data width,%u deep fifo\n",
> host->irq, width, fifo_size);
>
> /* We need at least one slot to succeed */
> @@ -2893,8 +2914,9 @@ int dw_mci_probe(struct dw_mci *host)
> if (init_slots) {
> dev_info(host->dev, "%d slots initialized\n", init_slots);
> } else {
> - dev_dbg(host->dev, "attempted to initialize %d slots, "
> - "but failed on all\n", host->num_slots);
> + dev_dbg(host->dev,
> + "attempted to initialize %d slots, but failed on all\n",
> + host->num_slots);
> goto err_dmaunmap;
> }
>
> @@ -2992,6 +3014,7 @@ int dw_mci_resume(struct dw_mci *host)
>
> for (i = 0; i < host->num_slots; i++) {
> struct dw_mci_slot *slot = host->slot[i];
> +
> if (!slot)
> continue;
> if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
>

2015-08-03 06:29:58

by Shawn Lin

[permalink] [raw]
Subject: Re: [PATCH] mmc: dw_mmc: Fix coding style issues

On 2015-8-3 12:07, Jaehoon Chung wrote:
> Hi, Shawn.
>
> On 07/28/2015 12:06 PM, Shawn Lin wrote:
>> This patch fixes the following issues reported by checkpatch.pl:
>> - use -EINVAL instead of -ENOSYS, to fix warning message:
>> "ENOSYS means 'invalid syscall nr' and nothing else"
>> - split lines whose length is greater than 80 characters
>> - avoid quoted string split across lines
>> - use min_t instead of min, to fix warning message:
>> "min() should probably be min_t(int, cnt, host->part_buf_count)"
>
> Thanks for fixing coding style.
> But i will apply this patch(https://patchwork.kernel.org/patch/6672581/).
> So if you can fix with this patch, then it's helpful to me.
> If you can't, i will modify your patch before applying.
> How about?
>

Okay, I will fix with this patch and resend it.

>>
>> Signed-off-by: Shawn Lin <[email protected]>
>> ---
>>
>> drivers/mmc/host/dw_mmc.c | 85 ++++++++++++++++++++++++++++++-----------------
>> 1 file changed, 54 insertions(+), 31 deletions(-)
>>
>> diff --git a/drivers/mmc/host/dw_mmc.c b/drivers/mmc/host/dw_mmc.c
>> index 40e9d8e..6aede38 100644
>> --- a/drivers/mmc/host/dw_mmc.c
>> +++ b/drivers/mmc/host/dw_mmc.c
>> @@ -235,8 +235,8 @@ static u32 dw_mci_prepare_command(struct mmc_host *mmc, struct mmc_command *cmd)
>> struct dw_mci *host = slot->host;
>> const struct dw_mci_drv_data *drv_data = slot->host->drv_data;
>> u32 cmdr;
>> - cmd->error = -EINPROGRESS;
>>
>> + cmd->error = -EINPROGRESS;
>> cmdr = cmd->opcode;
>>
>> if (cmd->opcode == MMC_STOP_TRANSMISSION ||
>> @@ -371,6 +371,7 @@ static void dw_mci_start_command(struct dw_mci *host,
>> cmd->arg, cmd_flags);
>>
>> mci_writel(host, CMDARG, cmd->arg);
>> + /* Make sure CMDARG is configured before CMD */
>> wmb();
>> dw_mci_wait_while_busy(host, cmd_flags);
>>
>> @@ -380,6 +381,7 @@ static void dw_mci_start_command(struct dw_mci *host,
>> static inline void send_stop_abort(struct dw_mci *host, struct mmc_data *data)
>> {
>> struct mmc_command *stop = data->stop ? data->stop : &host->stop_abort;
>> +
>> dw_mci_start_command(host, stop, host->stop_cmdr);
>> }
>>
>> @@ -463,6 +465,7 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data,
>> unsigned int sg_len)
>> {
>> int i;
>> +
>> if (host->dma_64bit_address == 1) {
>> struct idmac_desc_64addr *desc = host->sg_cpu;
>>
>> @@ -524,7 +527,7 @@ static void dw_mci_translate_sglist(struct dw_mci *host, struct mmc_data *data,
>> desc->des0 |= cpu_to_le32(IDMAC_DES0_LD);
>> }
>>
>> - wmb();
>> + wmb(); /* drain writebuffer */
>> }
>>
>> static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len)
>> @@ -542,7 +545,7 @@ static void dw_mci_idmac_start_dma(struct dw_mci *host, unsigned int sg_len)
>> temp |= SDMMC_CTRL_USE_IDMAC;
>> mci_writel(host, CTRL, temp);
>>
>> - wmb();
>> + wmb(); /* drain writebuffer */
>>
>> /* Enable the IDMAC */
>> temp = mci_readl(host, BMOD);
>> @@ -589,7 +592,9 @@ static int dw_mci_idmac_init(struct dw_mci *host)
>> host->ring_size = PAGE_SIZE / sizeof(struct idmac_desc);
>>
>> /* Forward link the descriptor list */
>> - for (i = 0, p = host->sg_cpu; i < host->ring_size - 1; i++, p++) {
>> + for (i = 0, p = host->sg_cpu;
>> + i < host->ring_size - 1;
>> + i++, p++) {
>> p->des3 = cpu_to_le32(host->sg_dma +
>> (sizeof(struct idmac_desc) * (i + 1)));
>> p->des1 = 0;
>> @@ -718,7 +723,7 @@ static void dw_mci_adjust_fifoth(struct dw_mci *host, struct mmc_data *data)
>> u32 fifo_width = 1 << host->data_shift;
>> u32 blksz_depth = blksz / fifo_width, fifoth_val;
>> u32 msize = 0, rx_wmark = 1, tx_wmark, tx_wmark_invers;
>> - int idx = (sizeof(mszs) / sizeof(mszs[0])) - 1;
>> + int idx = ARRAY_SIZE(mszs) - 1;
>>
>> tx_wmark = (host->fifo_depth) / 2;
>> tx_wmark_invers = host->fifo_depth - tx_wmark;
>> @@ -843,6 +848,7 @@ static int dw_mci_submit_data_dma(struct dw_mci *host, struct mmc_data *data)
>> static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
>> {
>> unsigned long irqflags;
>> + int flags = SG_MITER_ATOMIC;
>> u32 temp;
>>
>> data->error = -EINPROGRESS;
>> @@ -859,7 +865,6 @@ static void dw_mci_submit_data(struct dw_mci *host, struct mmc_data *data)
>> }
>>
>> if (dw_mci_submit_data_dma(host, data)) {
>> - int flags = SG_MITER_ATOMIC;
>> if (host->data->flags & MMC_DATA_READ)
>> flags |= SG_MITER_TO_SG;
>> else
>> @@ -906,6 +911,7 @@ static void mci_send_cmd(struct dw_mci_slot *slot, u32 cmd, u32 arg)
>> unsigned int cmd_status = 0;
>>
>> mci_writel(host, CMDARG, arg);
>> + /* Make sure CMDARG is configured before CMD */
>> wmb();
>> dw_mci_wait_while_busy(host, cmd);
>> mci_writel(host, CMD, SDMMC_CMD_START | cmd);
>> @@ -1019,6 +1025,7 @@ static void __dw_mci_start_request(struct dw_mci *host,
>>
>> if (data) {
>> dw_mci_submit_data(host, data);
>> + /* drain writebuffer */
>> wmb();
>
> I think good that you have consistency for above comment.
> wmb(); /* drain writebuffer */
> or
> /* drain writebuffer */
> wmb();
>
> What do you want?
>
> Best Regards,
> Jaehoon Chung
>
>> }
>>
>> @@ -1384,14 +1391,15 @@ static int dw_mci_execute_tuning(struct mmc_host *mmc, u32 opcode)
>> struct dw_mci_slot *slot = mmc_priv(mmc);
>> struct dw_mci *host = slot->host;
>> const struct dw_mci_drv_data *drv_data = host->drv_data;
>> - int err = -ENOSYS;
>> + int err = -EINVAL;
>>
>> if (drv_data && drv_data->execute_tuning)
>> err = drv_data->execute_tuning(slot);
>> return err;
>> }
>>
>> -static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc, struct mmc_ios *ios)
>> +static int dw_mci_prepare_hs400_tuning(struct mmc_host *mmc,
>> + struct mmc_ios *ios)
>> {
>> struct dw_mci_slot *slot = mmc_priv(mmc);
>> struct dw_mci *host = slot->host;
>> @@ -1743,7 +1751,7 @@ static int dw_mci_push_part_bytes(struct dw_mci *host, void *buf, int cnt)
>> /* pull first bytes from part_buf, only use during pull */
>> static int dw_mci_pull_part_bytes(struct dw_mci *host, void *buf, int cnt)
>> {
>> - cnt = min(cnt, (int)host->part_buf_count);
>> + cnt = min_t(int, cnt, host->part_buf_count);
>> if (cnt) {
>> memcpy(buf, (void *)&host->part_buf + host->part_buf_start,
>> cnt);
>> @@ -1769,6 +1777,7 @@ static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt)
>> /* try and push anything in the part_buf */
>> if (unlikely(host->part_buf_count)) {
>> int len = dw_mci_push_part_bytes(host, buf, cnt);
>> +
>> buf += len;
>> cnt -= len;
>> if (host->part_buf_count == 2) {
>> @@ -1795,6 +1804,7 @@ static void dw_mci_push_data16(struct dw_mci *host, void *buf, int cnt)
>> #endif
>> {
>> u16 *pdata = buf;
>> +
>> for (; cnt >= 2; cnt -= 2)
>> mci_fifo_writew(host->fifo_reg, *pdata++);
>> buf = pdata;
>> @@ -1819,6 +1829,7 @@ static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt)
>> int len = min(cnt & -2, (int)sizeof(aligned_buf));
>> int items = len >> 1;
>> int i;
>> +
>> for (i = 0; i < items; ++i)
>> aligned_buf[i] = mci_fifo_readw(host->fifo_reg);
>> /* memcpy from aligned buffer into output buffer */
>> @@ -1830,6 +1841,7 @@ static void dw_mci_pull_data16(struct dw_mci *host, void *buf, int cnt)
>> #endif
>> {
>> u16 *pdata = buf;
>> +
>> for (; cnt >= 2; cnt -= 2)
>> *pdata++ = mci_fifo_readw(host->fifo_reg);
>> buf = pdata;
>> @@ -1848,6 +1860,7 @@ static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt)
>> /* try and push anything in the part_buf */
>> if (unlikely(host->part_buf_count)) {
>> int len = dw_mci_push_part_bytes(host, buf, cnt);
>> +
>> buf += len;
>> cnt -= len;
>> if (host->part_buf_count == 4) {
>> @@ -1874,6 +1887,7 @@ static void dw_mci_push_data32(struct dw_mci *host, void *buf, int cnt)
>> #endif
>> {
>> u32 *pdata = buf;
>> +
>> for (; cnt >= 4; cnt -= 4)
>> mci_fifo_writel(host->fifo_reg, *pdata++);
>> buf = pdata;
>> @@ -1898,6 +1912,7 @@ static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt)
>> int len = min(cnt & -4, (int)sizeof(aligned_buf));
>> int items = len >> 2;
>> int i;
>> +
>> for (i = 0; i < items; ++i)
>> aligned_buf[i] = mci_fifo_readl(host->fifo_reg);
>> /* memcpy from aligned buffer into output buffer */
>> @@ -1909,6 +1924,7 @@ static void dw_mci_pull_data32(struct dw_mci *host, void *buf, int cnt)
>> #endif
>> {
>> u32 *pdata = buf;
>> +
>> for (; cnt >= 4; cnt -= 4)
>> *pdata++ = mci_fifo_readl(host->fifo_reg);
>> buf = pdata;
>> @@ -1927,6 +1943,7 @@ static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt)
>> /* try and push anything in the part_buf */
>> if (unlikely(host->part_buf_count)) {
>> int len = dw_mci_push_part_bytes(host, buf, cnt);
>> +
>> buf += len;
>> cnt -= len;
>>
>> @@ -1954,6 +1971,7 @@ static void dw_mci_push_data64(struct dw_mci *host, void *buf, int cnt)
>> #endif
>> {
>> u64 *pdata = buf;
>> +
>> for (; cnt >= 8; cnt -= 8)
>> mci_fifo_writeq(host->fifo_reg, *pdata++);
>> buf = pdata;
>> @@ -1978,6 +1996,7 @@ static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt)
>> int len = min(cnt & -8, (int)sizeof(aligned_buf));
>> int items = len >> 3;
>> int i;
>> +
>> for (i = 0; i < items; ++i)
>> aligned_buf[i] = mci_fifo_readq(host->fifo_reg);
>>
>> @@ -1990,6 +2009,7 @@ static void dw_mci_pull_data64(struct dw_mci *host, void *buf, int cnt)
>> #endif
>> {
>> u64 *pdata = buf;
>> +
>> for (; cnt >= 8; cnt -= 8)
>> *pdata++ = mci_fifo_readq(host->fifo_reg);
>> buf = pdata;
>> @@ -2065,7 +2085,7 @@ static void dw_mci_read_data_pio(struct dw_mci *host, bool dto)
>> done:
>> sg_miter_stop(sg_miter);
>> host->sg = NULL;
>> - smp_wmb();
>> + smp_wmb(); /* drain writebuffer */
>> set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
>> }
>>
>> @@ -2119,7 +2139,7 @@ static void dw_mci_write_data_pio(struct dw_mci *host)
>> done:
>> sg_miter_stop(sg_miter);
>> host->sg = NULL;
>> - smp_wmb();
>> + smp_wmb(); /* drain writebuffer */
>> set_bit(EVENT_XFER_COMPLETE, &host->pending_events);
>> }
>>
>> @@ -2128,6 +2148,7 @@ static void dw_mci_cmd_interrupt(struct dw_mci *host, u32 status)
>> if (!host->cmd_status)
>> host->cmd_status = status;
>>
>> + /* drain writebuffer */
>> smp_wmb();
>>
>> set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
>> @@ -2192,7 +2213,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
>> if (pending & DW_MCI_CMD_ERROR_FLAGS) {
>> mci_writel(host, RINTSTS, DW_MCI_CMD_ERROR_FLAGS);
>> host->cmd_status = pending;
>> - smp_wmb();
>> + smp_wmb(); /* drain writebuffer */
>> set_bit(EVENT_CMD_COMPLETE, &host->pending_events);
>> }
>>
>> @@ -2200,7 +2221,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
>> /* if there is an error report DATA_ERROR */
>> mci_writel(host, RINTSTS, DW_MCI_DATA_ERROR_FLAGS);
>> host->data_status = pending;
>> - smp_wmb();
>> + smp_wmb(); /* drain writebuffer */
>> set_bit(EVENT_DATA_ERROR, &host->pending_events);
>> tasklet_schedule(&host->tasklet);
>> }
>> @@ -2209,7 +2230,7 @@ static irqreturn_t dw_mci_interrupt(int irq, void *dev_id)
>> mci_writel(host, RINTSTS, SDMMC_INT_DATA_OVER);
>> if (!host->data_status)
>> host->data_status = pending;
>> - smp_wmb();
>> + smp_wmb(); /* drain writebuffer */
>> if (host->dir_status == DW_MCI_RECV_STATUS) {
>> if (host->sg != NULL)
>> dw_mci_read_data_pio(host, true);
>> @@ -2473,8 +2494,8 @@ static void dw_mci_init_dma(struct dw_mci *host)
>> if (host->dma_ops->init && host->dma_ops->start &&
>> host->dma_ops->stop && host->dma_ops->cleanup) {
>> if (host->dma_ops->init(host)) {
>> - dev_err(host->dev, "%s: Unable to initialize "
>> - "DMA Controller.\n", __func__);
>> + dev_err(host->dev, "%s: Unable to initialize DMA Controller.\n",
>> + __func__);
>> goto no_dma;
>> }
>> } else {
>> @@ -2488,7 +2509,6 @@ static void dw_mci_init_dma(struct dw_mci *host)
>> no_dma:
>> dev_info(host->dev, "Using PIO mode.\n");
>> host->use_dma = 0;
>> - return;
>> }
>>
>> static bool dw_mci_ctrl_reset(struct dw_mci *host, u32 reset)
>> @@ -2542,6 +2562,7 @@ static bool dw_mci_reset(struct dw_mci *host)
>> if (host->use_dma) {
>> unsigned long timeout = jiffies + msecs_to_jiffies(500);
>> u32 status;
>> +
>> do {
>> status = mci_readl(host, STATUS);
>> if (!(status & SDMMC_STATUS_DMA_REQ))
>> @@ -2551,8 +2572,8 @@ static bool dw_mci_reset(struct dw_mci *host)
>>
>> if (status & SDMMC_STATUS_DMA_REQ) {
>> dev_err(host->dev,
>> - "%s: Timeout waiting for dma_req to "
>> - "clear during reset\n", __func__);
>> + "%s: Timeout waiting for dma_req to clear during reset\n",
>> + __func__);
>> goto ciu_out;
>> }
>>
>> @@ -2563,8 +2584,8 @@ static bool dw_mci_reset(struct dw_mci *host)
>> } else {
>> /* if the controller reset bit did clear, then set clock regs */
>> if (!(mci_readl(host, CTRL) & SDMMC_CTRL_RESET)) {
>> - dev_err(host->dev, "%s: fifo/dma reset bits didn't "
>> - "clear but ciu was reset, doing clock update\n",
>> + dev_err(host->dev,
>> + "%s: fifo/dma reset bits didn't clear but ciu was reset, doing clock update\n",
>> __func__);
>> goto ciu_out;
>> }
>> @@ -2625,8 +2646,8 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
>> /* find out number of slots supported */
>> if (of_property_read_u32(dev->of_node, "num-slots",
>> &pdata->num_slots)) {
>> - dev_info(dev, "num-slots property not found, "
>> - "assuming 1 slot is available\n");
>> + dev_info(dev,
>> + "num-slots property not found, assuming 1 slot is available\n");
>> pdata->num_slots = 1;
>> }
>>
>> @@ -2636,8 +2657,8 @@ static struct dw_mci_board *dw_mci_parse_dt(struct dw_mci *host)
>> pdata->quirks |= of_quirks[idx].id;
>>
>> if (of_property_read_u32(np, "fifo-depth", &pdata->fifo_depth))
>> - dev_info(dev, "fifo-depth property not found, using "
>> - "value of FIFOTH register as default\n");
>> + dev_info(dev,
>> + "fifo-depth property not found, using value of FIFOTH register as default\n");
>>
>> of_property_read_u32(np, "card-detect-delay", &pdata->detect_delay_ms);
>>
>> @@ -2874,11 +2895,11 @@ int dw_mci_probe(struct dw_mci *host)
>> mci_writel(host, INTMASK, SDMMC_INT_CMD_DONE | SDMMC_INT_DATA_OVER |
>> SDMMC_INT_TXDR | SDMMC_INT_RXDR |
>> DW_MCI_ERROR_FLAGS);
>> - mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE); /* Enable mci interrupt */
>> + /* Enable mci interrupt */
>> + mci_writel(host, CTRL, SDMMC_CTRL_INT_ENABLE);
>>
>> - dev_info(host->dev, "DW MMC controller at irq %d, "
>> - "%d bit host data width, "
>> - "%u deep fifo\n",
>> + dev_info(host->dev,
>> + "DW MMC controller at irq %d,%d bit host data width,%u deep fifo\n",
>> host->irq, width, fifo_size);
>>
>> /* We need at least one slot to succeed */
>> @@ -2893,8 +2914,9 @@ int dw_mci_probe(struct dw_mci *host)
>> if (init_slots) {
>> dev_info(host->dev, "%d slots initialized\n", init_slots);
>> } else {
>> - dev_dbg(host->dev, "attempted to initialize %d slots, "
>> - "but failed on all\n", host->num_slots);
>> + dev_dbg(host->dev,
>> + "attempted to initialize %d slots, but failed on all\n",
>> + host->num_slots);
>> goto err_dmaunmap;
>> }
>>
>> @@ -2992,6 +3014,7 @@ int dw_mci_resume(struct dw_mci *host)
>>
>> for (i = 0; i < host->num_slots; i++) {
>> struct dw_mci_slot *slot = host->slot[i];
>> +
>> if (!slot)
>> continue;
>> if (slot->mmc->pm_flags & MMC_PM_KEEP_POWER) {
>>
>
>
>
>