diff mbox

mmc: core: negotiate ocr during resume

Message ID loom.20130404T163258-423@post.gmane.org (mailing list archive)
State New, archived
Headers show

Commit Message

Prasanna NAVARATNA April 4, 2013, 2:35 p.m. UTC
From f43005e05f1e9d93705ec6b3ab98cfa5215c1896 Mon Sep 17 00:00:00 2001
From: Prasanna NAVARATNA <prasanna.navaratna@broadcom.com>
Date: Thu, 4 Apr 2013 19:55:19 +0530
Subject: [PATCH] mmc: core: negotiate ocr during resume

Save the card ocr into struct mmc_card when read from sd card and
negotiate ocr mask during mmc_sd_init_card with host->ocr & card->ocr.
---
 drivers/mmc/core/sd.c    |    7 +++++++
 include/linux/mmc/card.h |    1 +
 2 files changed, 8 insertions(+), 0 deletions(-)

specific */
diff mbox

Patch

diff --git a/drivers/mmc/core/sd.c b/drivers/mmc/core/sd.c
index 9e645e1..8ee27e8 100644
--- a/drivers/mmc/core/sd.c
+++ b/drivers/mmc/core/sd.c
@@ -910,6 +910,10 @@  static int mmc_sd_init_card(struct mmc_host *host, u32 
ocr,
 	BUG_ON(!host);
 	WARN_ON(!host->claimed);
 
+	/* Negotiate OCR with oldcard->ocr */
+	if (oldcard)
+		ocr &= oldcard->ocr;
+
 	err = mmc_sd_get_cid(host, ocr, cid, &rocr);
 	if (err)
 		return err;
@@ -1185,6 +1189,9 @@  int mmc_attach_sd(struct mmc_host *host)
 		ocr &= ~MMC_VDD_165_195;
 	}
 
+	/* Save the card OCR */
+	host->card->ocr = ocr;
+
 	host->ocr = mmc_select_voltage(host, ocr);
 
 	/*
diff --git a/include/linux/mmc/card.h b/include/linux/mmc/card.h
index f31725b..1bbec2f 100644
--- a/include/linux/mmc/card.h
+++ b/include/linux/mmc/card.h
@@ -273,6 +273,7 @@  struct mmc_card {
 	u32			raw_cid[4];	/* raw card CID */
 	u32			raw_csd[4];	/* raw card CSD */
 	u32			raw_scr[2];	/* raw card SCR */
+	u32			ocr;		/* card OCR */
 	struct mmc_cid		cid;		/* card identification */
 	struct mmc_csd		csd;		/* card specific */
 	struct mmc_ext_csd	ext_csd;	/* mmc v4 extended card