tests/qtest/npcm7xx_sdhci: Access the card using its published address
Currently setup_sd_card() asks the card its address, but discard the response and use hardcoded 0x4567. Set the SDHC_CMD_RESPONSE bit to have the controller record the bus response, and read the response from the RSPREG0 register. Then we can select the card with its real address. Signed-off-by: Philippe Mathieu-Daudé <philmd@linaro.org> Tested-by: Cédric Le Goater <clg@redhat.com> Reviewed-by: Cédric Le Goater <clg@redhat.com> Message-Id: <20240702140842.54242-4-philmd@linaro.org>
This commit is contained in:
parent
f28cfc39d7
commit
3baae28150
@ -22,6 +22,7 @@
|
||||
#define SDHC_ARGUMENT 0x08
|
||||
#define SDHC_TRNMOD 0x0C
|
||||
#define SDHC_CMDREG 0x0E
|
||||
#define SDHC_RSPREG0 0x10
|
||||
#define SDHC_BDATA 0x20
|
||||
#define SDHC_PRNSTS 0x24
|
||||
#define SDHC_BLKGAP 0x2A
|
||||
@ -38,6 +39,7 @@
|
||||
#define SDHC_TRNS_MULTI 0x0020
|
||||
|
||||
/* CMD Reg */
|
||||
#define SDHC_CMD_RESPONSE (3 << 0)
|
||||
#define SDHC_CMD_DATA_PRESENT (1 << 5)
|
||||
#define SDHC_ALL_SEND_CID (2 << 8)
|
||||
#define SDHC_SEND_RELATIVE_ADDR (3 << 8)
|
||||
|
@ -30,6 +30,8 @@ char *sd_path;
|
||||
|
||||
static QTestState *setup_sd_card(void)
|
||||
{
|
||||
uint16_t rca;
|
||||
|
||||
QTestState *qts = qtest_initf(
|
||||
"-machine kudo-bmc "
|
||||
"-device sd-card,drive=drive0 "
|
||||
@ -43,8 +45,10 @@ static QTestState *setup_sd_card(void)
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_APP_CMD);
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0x41200000, 0, (41 << 8));
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_ALL_SEND_CID);
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_SEND_RELATIVE_ADDR);
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0x45670000, 0,
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, 0, 0, SDHC_SEND_RELATIVE_ADDR
|
||||
| SDHC_CMD_RESPONSE);
|
||||
rca = qtest_readl(qts, NPCM7XX_MMC_BA + SDHC_RSPREG0) >> 16;
|
||||
sdhci_cmd_regs(qts, NPCM7XX_MMC_BA, 0, 0, rca << 16, 0,
|
||||
SDHC_SELECT_DESELECT_CARD);
|
||||
|
||||
return qts;
|
||||
|
Loading…
Reference in New Issue
Block a user