Re: [PATCH] MMC: Select only one voltage bit in OCR response

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Russell King wrote:

Maybe something like "ocr &= 3 << bit;" would be more approriate?
Russell? Comments? Do you still have the offending card?

It wasn't my cards, but was reported by several other folk.  I don't think
we can revert on this without breakage.

However, we should probably ensure that we don't end up setting voltage
bits which the cards don't support.  So maybe masking the resulting OCR
value with the received combined OCR would be a good idea?  Such as:

Isn't this exactly what Timo is proposing above?

Cheers,
Juha

diff --git a/drivers/mmc/mmc.c b/drivers/mmc/mmc.c
index ee8863c..45e0598 100644
--- a/drivers/mmc/mmc.c
+++ b/drivers/mmc/mmc.c
@@ -467,23 +467,24 @@ static inline void mmc_delay(unsigned in
  */
 static u32 mmc_select_voltage(struct mmc_host *host, u32 ocr)
 {
+	u32 selected_ocr;
 	int bit;
- ocr &= host->ocr_avail;
+	selected_ocr = ocr & host->ocr_avail;
- bit = ffs(ocr);
+	bit = ffs(selected_ocr);
 	if (bit) {
 		bit -= 1;
- ocr = 3 << bit;
+		selected_ocr = 3 << bit;
host->ios.vdd = bit;
 		mmc_set_ios(host);
 	} else {
-		ocr = 0;
+		selected_ocr = 0;
 	}
- return ocr;
+	return selected_ocr & ocr;
 }
-
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to [email protected]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at  http://www.tux.org/lkml/

[Index of Archives]     [Kernel Newbies]     [Netfilter]     [Bugtraq]     [Photo]     [Stuff]     [Gimp]     [Yosemite News]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Video 4 Linux]     [Linux for the blind]     [Linux Resources]
  Powered by Linux