mirror of
				https://github.com/qemu/qemu.git
				synced 2025-10-31 12:07:31 +00:00 
			
		
		
		
	 2bea128c3d
			
		
	
	
		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 */
 |