Skip to contentSkip to conversation

mmc: omap: Use DIV_ROUND_UP instead of open coded

PATCH In review Axel Lin 2 participants 2 messages May 3, 2014 – May 14, 2014

Subsystems (2)
lore
Share & tools
lore

Axel Lin

author
#0 lore raw

PATCH v2 1/1 mmc: omap: Use DIV_ROUND_UP instead of open coded

Also uses NSEC_PER_SEC and USEC_PER_SEC instead of hard-coded value. This makes the intention more clear.

---
 drivers/mmc/host/omap.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/mmc/host/omap.c +5 -5
index 5c2e58b..81974ec 100644
@@ -177,7 +177,7 @@ static void mmc_omap_fclk_offdelay(struct mmc_omap_slot *slot)
 	unsigned long tick_ns;
 
 	if (slot != NULL && slot->host->fclk_enabled && slot->fclk_freq > 0) {
-		tick_ns = (1000000000 + slot->fclk_freq - 1) / slot->fclk_freq;
+		tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, slot->fclk_freq);
 		ndelay(8 * tick_ns);
 	}
 }
@@ -435,7 +435,7 @@ static void mmc_omap_send_stop_work(struct work_struct *work)
 	struct mmc_data *data = host->stop_data;
 	unsigned long tick_ns;
 
-	tick_ns = (1000000000 + slot->fclk_freq - 1)/slot->fclk_freq;
+	tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, slot->fclk_freq);
 	ndelay(8*tick_ns);
 
 	mmc_omap_start_command(host, data->stop);
@@ -477,7 +477,7 @@ mmc_omap_send_abort(struct mmc_omap_host *host, int maxloops)
 	u16 stat = 0;
 
 	/* Sending abort takes 80 clocks. Have some extra and round up */
-	timeout = (120*1000000 + slot->fclk_freq - 1)/slot->fclk_freq;
+	timeout = DIV_ROUND_UP(120 * USEC_PER_SEC, slot->fclk_freq);
 	restarts = 0;
 	while (restarts < maxloops) {
 		OMAP_MMC_WRITE(host, STAT, 0xFFFF);
@@ -677,8 +677,8 @@ mmc_omap_xfer_data(struct mmc_omap_host *host, int write)
 	if (n > host->buffer_bytes_left)
 		n = host->buffer_bytes_left;
 
-	nwords = n / 2;
-	nwords += n & 1; /* handle odd number of bytes to transfer */
+	/* Round up to handle odd number of bytes to transfer */
+	nwords = DIV_ROUND_UP(n, 2);
 
 	host->buffer_bytes_left -= n;
 	host->total_bytes_left -= n;
Signature · 1 line
1.8.3.2
#1 lore raw
Quoted 4 lines · Axel Lin

Also uses NSEC_PER_SEC and USEC_PER_SEC instead of hard-coded value. This makes the intention more clear.

Thanks Axel!

Will include this patch in the next PR to Chris.

Kind regards
Ulf Hansson

Quoted 51 lines
---
 drivers/mmc/host/omap.c | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)
drivers/mmc/host/omap.c +5 -6
index 5c2e58b..81974ec 100644
@@ -177,7 +177,7 @@ static void mmc_omap_fclk_offdelay(struct mmc_omap_slot *slot)
        unsigned long tick_ns;
 
        if (slot != NULL && slot->host->fclk_enabled && slot->fclk_freq > 0) {
-               tick_ns = (1000000000 + slot->fclk_freq - 1) / slot->fclk_freq;
+               tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, slot->fclk_freq);
                ndelay(8 * tick_ns);
        }
 }
@@ -435,7 +435,7 @@ static void mmc_omap_send_stop_work(struct work_struct *work)
        struct mmc_data *data = host->stop_data;
        unsigned long tick_ns;
 
-       tick_ns = (1000000000 + slot->fclk_freq - 1)/slot->fclk_freq;
+       tick_ns = DIV_ROUND_UP(NSEC_PER_SEC, slot->fclk_freq);
        ndelay(8*tick_ns);
 
        mmc_omap_start_command(host, data->stop);
@@ -477,7 +477,7 @@ mmc_omap_send_abort(struct mmc_omap_host *host, int maxloops)
        u16 stat = 0;
 
        /* Sending abort takes 80 clocks. Have some extra and round up */
-       timeout = (120*1000000 + slot->fclk_freq - 1)/slot->fclk_freq;
+       timeout = DIV_ROUND_UP(120 * USEC_PER_SEC, slot->fclk_freq);
        restarts = 0;
        while (restarts < maxloops) {
                OMAP_MMC_WRITE(host, STAT, 0xFFFF);
@@ -677,8 +677,8 @@ mmc_omap_xfer_data(struct mmc_omap_host *host, int write)
        if (n > host->buffer_bytes_left)
                n = host->buffer_bytes_left;
 
-       nwords = n / 2;
-       nwords += n & 1; /* handle odd number of bytes to transfer */
+       /* Round up to handle odd number of bytes to transfer */
+       nwords = DIV_ROUND_UP(n, 2);
 
        host->buffer_bytes_left -= n;
        host->total_bytes_left -= n;
--

1.8.3.2