2bea128c3d
The Aspeed SOCs have two SD/MMC controllers. Add a device that encapsulates both of these controllers and models the Aspeed-specific registers and behavior. Tested by reading from mmcblk0 in Linux: qemu-system-arm -machine romulus-bmc -nographic \ -drive file=flash-romulus,format=raw,if=mtd \ -device sd-card,drive=sd0 -drive file=_tmp/kernel,format=raw,if=sd,id=sd0 Signed-off-by: Eddie James <eajames@linux.ibm.com> Reviewed-by: Cédric Le Goater <clg@kaod.org> Reviewed-by: Joel Stanley <joel@jms.id.au> Signed-off-by: Cédric Le Goater <clg@kaod.org> Message-id: 20190925143248.10000-3-clg@kaod.org [clg: - changed the controller MMIO window size to 0x1000 - moved the MMIO mapping of the SDHCI slots at the SoC level - merged code to add SD drives on the SD buses at the machine level ] Signed-off-by: Cédric Le Goater <clg@kaod.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
35 lines
833 B
C
35 lines
833 B
C
/*
|
|
* Aspeed SD Host Controller
|
|
* Eddie James <eajames@linux.ibm.com>
|
|
*
|
|
* Copyright (C) 2019 IBM Corp
|
|
* SPDX-License-Identifer: GPL-2.0-or-later
|
|
*/
|
|
|
|
#ifndef ASPEED_SDHCI_H
|
|
#define ASPEED_SDHCI_H
|
|
|
|
#include "hw/sd/sdhci.h"
|
|
|
|
#define TYPE_ASPEED_SDHCI "aspeed.sdhci"
|
|
#define ASPEED_SDHCI(obj) OBJECT_CHECK(AspeedSDHCIState, (obj), \
|
|
TYPE_ASPEED_SDHCI)
|
|
|
|
#define ASPEED_SDHCI_CAPABILITIES 0x01E80080
|
|
#define ASPEED_SDHCI_NUM_SLOTS 2
|
|
#define ASPEED_SDHCI_NUM_REGS (ASPEED_SDHCI_REG_SIZE / sizeof(uint32_t))
|
|
#define ASPEED_SDHCI_REG_SIZE 0x100
|
|
|
|
typedef struct AspeedSDHCIState {
|
|
SysBusDevice parent;
|
|
|
|
SDHCIState slots[ASPEED_SDHCI_NUM_SLOTS];
|
|
|
|
MemoryRegion iomem;
|
|
qemu_irq irq;
|
|
|
|
uint32_t regs[ASPEED_SDHCI_NUM_REGS];
|
|
} AspeedSDHCIState;
|
|
|
|
#endif /* ASPEED_SDHCI_H */
|