From: "Philippe Mathieu-Daudé" <philmd@linaro.org>
To: qemu-devel@nongnu.org
Cc: qemu-arm@nongnu.org, "Peter Maydell" <peter.maydell@linaro.org>,
"Andrew Jeffery" <andrew@codeconstruct.com.au>,
qemu-block@nongnu.org, "Cédric Le Goater" <clg@kaod.org>,
"Bin Meng" <bmeng.cn@gmail.com>, "Joel Stanley" <joel@jms.id.au>,
"Philippe Mathieu-Daudé" <philmd@linaro.org>,
"Jamin Lin" <jamin_lin@aspeedtech.com>,
"Steven Lee" <steven_lee@aspeedtech.com>,
"Troy Lee" <leetroy@gmail.com>
Subject: [PATCH v47 13/19] hw/sd/sdcard: Migrate ExtCSD 'modes' register
Date: Tue, 9 Jul 2024 17:25:50 +0200 [thread overview]
Message-ID: <20240709152556.52896-14-philmd@linaro.org> (raw)
In-Reply-To: <20240709152556.52896-1-philmd@linaro.org>
Spec v4.3, chapter 8.4 "Extended CSD register":
The Extended CSD register defines the card properties
and selected modes. It is 512 bytes long. The most
significant 320 bytes are the Properties segment, which
defines the card capabilities and cannot be modified by
the host. The lower 192 bytes are the Modes segment,
which defines the configuration the card is working in.
Only migrate the Modes segment (192 lower bytes).
Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org>
---
hw/sd/sd.c | 27 ++++++++++++++++++++++++++-
1 file changed, 26 insertions(+), 1 deletion(-)
diff --git a/hw/sd/sd.c b/hw/sd/sd.c
index 2a687977d1..a391f12b2a 100644
--- a/hw/sd/sd.c
+++ b/hw/sd/sd.c
@@ -124,7 +124,13 @@ struct SDState {
uint16_t rca;
uint32_t card_status;
uint8_t sd_status[64];
- uint8_t ext_csd[512];
+ union {
+ uint8_t ext_csd[512];
+ struct {
+ uint8_t ext_csd_rw[192]; /* Modes segment */
+ uint8_t ext_csd_ro[320]; /* Properties segment */
+ };
+ };
/* Static properties */
@@ -881,6 +887,24 @@ static const VMStateDescription sd_ocr_vmstate = {
},
};
+static bool vmstate_needed_for_emmc(void *opaque)
+{
+ SDState *sd = opaque;
+
+ return sd_is_emmc(sd);
+}
+
+static const VMStateDescription emmc_extcsd_vmstate = {
+ .name = "sd-card/ext_csd_modes-state",
+ .version_id = 1,
+ .minimum_version_id = 1,
+ .needed = vmstate_needed_for_emmc,
+ .fields = (const VMStateField[]) {
+ VMSTATE_UINT8_ARRAY(ext_csd_rw, SDState, 192),
+ VMSTATE_END_OF_LIST()
+ },
+};
+
static int sd_vmstate_pre_load(void *opaque)
{
SDState *sd = opaque;
@@ -928,6 +952,7 @@ static const VMStateDescription sd_vmstate = {
},
.subsections = (const VMStateDescription * const []) {
&sd_ocr_vmstate,
+ &emmc_extcsd_vmstate,
NULL
},
};
--
2.41.0
next prev parent reply other threads:[~2024-07-09 15:28 UTC|newest]
Thread overview: 31+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-07-09 15:25 [PATCH v47 00/19] hw/sd/sdcard: Add eMMC support Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 01/19] hw/sd/sdcard: Basis for " Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 02/19] hw/sd/sdcard: Register generic command handlers Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 03/19] hw/sd/sdcard: Register unimplemented " Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 04/19] hw/sd/sdcard: Implement emmc_set_cid() Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 05/19] hw/sd/sdcard: Implement emmc_set_csd() Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 06/19] hw/sd/sdcard: Add emmc_cmd_SET_RELATIVE_ADDR handler (CMD3) Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 07/19] hw/sd/sdcard: Fix SET_BLOCK_COUNT command argument on eMMC (CMD23) Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 08/19] hw/sd/sdcard: Add mmc_cmd_PROGRAM_CID handler (CMD26) Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 09/19] hw/sd/sdcard: Implement eMMC sleep state (CMD5) Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 10/19] hw/sd/sdcard: Add emmc_cmd_SEND_EXT_CSD handler (CMD8) Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 11/19] hw/sd/sdcard: Add eMMC 'boot-size' property Philippe Mathieu-Daudé
2024-07-09 15:45 ` Cédric Le Goater
2024-07-09 15:25 ` [PATCH v47 12/19] hw/sd/sdcard: Simplify EXT_CSD values for spec v4.3 Philippe Mathieu-Daudé
2024-07-09 15:43 ` Cédric Le Goater
2024-07-09 21:33 ` Philippe Mathieu-Daudé
2024-07-09 15:25 ` Philippe Mathieu-Daudé [this message]
2024-07-09 15:25 ` [PATCH v47 14/19] hw/sd/sdcard: Add mmc SWITCH function support (CMD6) Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 15/19] hw/sd/sdcard: Implement eMMC 'boot-mode' Philippe Mathieu-Daudé
2024-07-09 15:25 ` [Aspeed PATCH v47 16/19] hw/sd/sdcard: Support boot area in emmc image Philippe Mathieu-Daudé
2024-07-09 15:51 ` Cédric Le Goater
2024-07-09 15:25 ` [Aspeed PATCH v47 17/19] hw/sd/sdcard: Subtract bootarea size from blk Philippe Mathieu-Daudé
2024-07-09 15:25 ` [Aspeed PATCH v47 18/19] hw/sd/sdcard: Add boot config support Philippe Mathieu-Daudé
2024-07-09 15:52 ` Cédric Le Goater
2024-07-09 16:17 ` Philippe Mathieu-Daudé
2024-07-09 15:25 ` [PATCH v47 19/19] hw/sd/sdcard: Enable TYPE_EMMC card model Philippe Mathieu-Daudé
2024-07-09 15:42 ` Cédric Le Goater
2024-07-09 15:58 ` [PATCH v47 00/19] hw/sd/sdcard: Add eMMC support Cédric Le Goater
2024-07-09 21:39 ` Philippe Mathieu-Daudé
2024-07-10 4:58 ` Cédric Le Goater
2024-07-10 8:09 ` Cédric Le Goater
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240709152556.52896-14-philmd@linaro.org \
--to=philmd@linaro.org \
--cc=andrew@codeconstruct.com.au \
--cc=bmeng.cn@gmail.com \
--cc=clg@kaod.org \
--cc=jamin_lin@aspeedtech.com \
--cc=joel@jms.id.au \
--cc=leetroy@gmail.com \
--cc=peter.maydell@linaro.org \
--cc=qemu-arm@nongnu.org \
--cc=qemu-block@nongnu.org \
--cc=qemu-devel@nongnu.org \
--cc=steven_lee@aspeedtech.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).