svn commit: r311693 - head/sys/dev/sdhci

Ian Lepore ian at FreeBSD.org
Sun Jan 8 18:28:08 UTC 2017


Author: ian
Date: Sun Jan  8 18:28:06 2017
New Revision: 311693
URL: https://svnweb.freebsd.org/changeset/base/311693

Log:
  Now that the PRESENT_STATE register is only used for the inhibit bits loop
  in this function, eliminate the state variable and restructure the loop to
  read the register just once at the top of the loop.
  
  Suggested by:	skra

Modified:
  head/sys/dev/sdhci/sdhci.c

Modified: head/sys/dev/sdhci/sdhci.c
==============================================================================
--- head/sys/dev/sdhci/sdhci.c	Sun Jan  8 18:17:35 2017	(r311692)
+++ head/sys/dev/sdhci/sdhci.c	Sun Jan  8 18:28:06 2017	(r311693)
@@ -821,7 +821,7 @@ static void
 sdhci_start_command(struct sdhci_slot *slot, struct mmc_command *cmd)
 {
 	int flags, timeout;
-	uint32_t mask, state;
+	uint32_t mask;
 
 	slot->curcmd = cmd;
 	slot->cmd_done = 0;
@@ -836,8 +836,6 @@ sdhci_start_command(struct sdhci_slot *s
 		return;
 	}
 
-	/* Read controller present state. */
-	state = RD4(slot, SDHCI_PRESENT_STATE);
 	/* Do not issue command if there is no card, clock or power.
 	 * Controller will not detect timeout without clock active. */
 	if (!SDHCI_GET_CARD_PRESENT(slot->bus, slot) ||
@@ -866,7 +864,7 @@ sdhci_start_command(struct sdhci_slot *s
 	 *  (It's usually more like 20-30ms in the real world.)
 	 */
 	timeout = 250;
-	while (state & mask) {
+	while (mask & RD4(slot, SDHCI_PRESENT_STATE)) {
 		if (timeout == 0) {
 			slot_printf(slot, "Controller never released "
 			    "inhibit bit(s).\n");
@@ -877,7 +875,6 @@ sdhci_start_command(struct sdhci_slot *s
 		}
 		timeout--;
 		DELAY(1000);
-		state = RD4(slot, SDHCI_PRESENT_STATE);
 	}
 
 	/* Prepare command flags. */


More information about the svn-src-head mailing list