1
From 4db17b380b240cf51601e99a85977b2b18221ba3 Mon Sep 17 00:00:00 2001
2
From: =?UTF-8?q?Juha=20Riihim=C3=A4ki?= <juha.riihimaki@nokia.com>
3
Date: Mon, 18 Feb 2013 16:58:23 +0000
4
Subject: [PATCH 03/70] sd: Allow sd_init callers to specify whether card is
7
Add a parameter to sd_init() which allows the caller to specify
8
whether the card is MMC or SD.
10
TODO: maybe we should have an sd_init() and an mmc_init()
13
TODO: these mmc patches need to be integrated with the ones
14
Vincent Palatin proposed.
16
hw/sd/milkymist-memcard.c | 2 +-
17
hw/sd/omap_mmc.c | 4 ++--
19
hw/sd/pxa2xx_mmci.c | 2 +-
22
hw/sd/ssi-sd.c | 5 +----
23
include/hw/sd.h | 2 +-
24
8 files changed, 9 insertions(+), 12 deletions(-)
26
diff --git a/hw/sd/milkymist-memcard.c b/hw/sd/milkymist-memcard.c
27
index d1168c9..6522eca 100644
28
--- a/hw/sd/milkymist-memcard.c
29
+++ b/hw/sd/milkymist-memcard.c
30
@@ -254,7 +254,7 @@ static int milkymist_memcard_init(SysBusDevice *dev)
33
dinfo = drive_get_next(IF_SD);
34
- s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false);
35
+ s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false, false);
36
if (s->card == NULL) {
39
diff --git a/hw/sd/omap_mmc.c b/hw/sd/omap_mmc.c
40
index 937a478..ca26d21 100644
41
--- a/hw/sd/omap_mmc.c
42
+++ b/hw/sd/omap_mmc.c
43
@@ -592,7 +592,7 @@ struct omap_mmc_s *omap_mmc_init(hwaddr base,
44
memory_region_add_subregion(sysmem, base, &s->iomem);
46
/* Instantiate the storage */
47
- s->card = sd_init(bd, false);
48
+ s->card = sd_init(bd, false, false);
49
if (s->card == NULL) {
52
@@ -620,7 +620,7 @@ struct omap_mmc_s *omap2_mmc_init(struct omap_target_agent_s *ta,
53
omap_l4_attach(ta, 0, &s->iomem);
55
/* Instantiate the storage */
56
- s->card = sd_init(bd, false);
57
+ s->card = sd_init(bd, false, false);
58
if (s->card == NULL) {
61
diff --git a/hw/sd/pl181.c b/hw/sd/pl181.c
62
index c35896d..d22f6e2 100644
65
@@ -490,7 +490,7 @@ static int pl181_init(SysBusDevice *sbd)
66
sysbus_init_irq(sbd, &s->irq[1]);
67
qdev_init_gpio_out(dev, s->cardstatus, 2);
68
dinfo = drive_get_next(IF_SD);
69
- s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false);
70
+ s->card = sd_init(dinfo ? dinfo->bdrv : NULL, false, false);
71
if (s->card == NULL) {
74
diff --git a/hw/sd/pxa2xx_mmci.c b/hw/sd/pxa2xx_mmci.c
75
index b9d8b1a..85eb86d 100644
76
--- a/hw/sd/pxa2xx_mmci.c
77
+++ b/hw/sd/pxa2xx_mmci.c
78
@@ -538,7 +538,7 @@ PXA2xxMMCIState *pxa2xx_mmci_init(MemoryRegion *sysmem,
79
memory_region_add_subregion(sysmem, base, &s->iomem);
81
/* Instantiate the actual storage */
82
- s->card = sd_init(bd, false);
83
+ s->card = sd_init(bd, false, false);
84
if (s->card == NULL) {
87
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
88
index 617ae51..ce7f57f 100644
91
@@ -488,7 +488,7 @@ static const VMStateDescription sd_vmstate = {
92
whether card should be in SSI or MMC/SD mode. It is also up to the
93
board to ensure that ssi transfers only occur when the chip select
95
-SDState *sd_init(BlockDriverState *bs, bool is_spi)
96
+SDState *sd_init(BlockDriverState *bs, bool is_spi, bool is_mmc)
100
diff --git a/hw/sd/sdhci.c b/hw/sd/sdhci.c
101
index 0906a1d..6b5172d 100644
104
@@ -1165,7 +1165,7 @@ static void sdhci_initfn(Object *obj)
107
di = drive_get_next(IF_SD);
108
- s->card = sd_init(di ? di->bdrv : NULL, false);
109
+ s->card = sd_init(di ? di->bdrv : NULL, false, false);
110
if (s->card == NULL) {
113
diff --git a/hw/sd/ssi-sd.c b/hw/sd/ssi-sd.c
114
index 1bb56c4..f11e02e 100644
117
@@ -245,10 +245,7 @@ static int ssi_sd_init(SSISlave *dev)
119
s->mode = SSI_SD_CMD;
120
dinfo = drive_get_next(IF_SD);
121
- s->sd = sd_init(dinfo ? dinfo->bdrv : NULL, true);
122
- if (s->sd == NULL) {
125
+ s->sd = sd_init(dinfo ? dinfo->bdrv : NULL, true, false);
126
register_savevm(&dev->qdev, "ssi_sd", -1, 1, ssi_sd_save, ssi_sd_load, s);
129
diff --git a/include/hw/sd.h b/include/hw/sd.h
130
index 4ef822f..562eaa2 100644
131
--- a/include/hw/sd.h
132
+++ b/include/hw/sd.h
133
@@ -68,7 +68,7 @@ typedef struct {
135
typedef struct SDState SDState;
137
-SDState *sd_init(BlockDriverState *bs, bool is_spi);
138
+SDState *sd_init(BlockDriverState *bs, bool is_spi, bool is_mmc);
139
void sd_reset(SDState *sd);
140
int sd_do_command(SDState *sd, SDRequest *req,