12bea128cSEddie James /* 22bea128cSEddie James * Aspeed SD Host Controller 32bea128cSEddie James * Eddie James <eajames@linux.ibm.com> 42bea128cSEddie James * 52bea128cSEddie James * Copyright (C) 2019 IBM Corp 65054ba10SRyan Finnie * SPDX-License-Identifier: GPL-2.0-or-later 72bea128cSEddie James */ 82bea128cSEddie James 92bea128cSEddie James #ifndef ASPEED_SDHCI_H 102bea128cSEddie James #define ASPEED_SDHCI_H 112bea128cSEddie James 122bea128cSEddie James #include "hw/sd/sdhci.h" 13db1015e9SEduardo Habkost #include "qom/object.h" 142bea128cSEddie James 152bea128cSEddie James #define TYPE_ASPEED_SDHCI "aspeed.sdhci" 166a0238a4SJamin Lin #define TYPE_ASPEED_2400_SDHCI TYPE_ASPEED_SDHCI "-ast2400" 176a0238a4SJamin Lin #define TYPE_ASPEED_2500_SDHCI TYPE_ASPEED_SDHCI "-ast2500" 186a0238a4SJamin Lin #define TYPE_ASPEED_2600_SDHCI TYPE_ASPEED_SDHCI "-ast2600" 19*83991b91SJamin Lin #define TYPE_ASPEED_2700_SDHCI TYPE_ASPEED_SDHCI "-ast2700" 206a0238a4SJamin Lin OBJECT_DECLARE_TYPE(AspeedSDHCIState, AspeedSDHCIClass, ASPEED_SDHCI) 212bea128cSEddie James 222bea128cSEddie James #define ASPEED_SDHCI_NUM_SLOTS 2 232bea128cSEddie James #define ASPEED_SDHCI_NUM_REGS (ASPEED_SDHCI_REG_SIZE / sizeof(uint32_t)) 242bea128cSEddie James #define ASPEED_SDHCI_REG_SIZE 0x100 252bea128cSEddie James 26db1015e9SEduardo Habkost struct AspeedSDHCIState { 272bea128cSEddie James SysBusDevice parent; 282bea128cSEddie James 292bea128cSEddie James SDHCIState slots[ASPEED_SDHCI_NUM_SLOTS]; 300e2c24c6SAndrew Jeffery uint8_t num_slots; 312bea128cSEddie James 322bea128cSEddie James MemoryRegion iomem; 332bea128cSEddie James qemu_irq irq; 342bea128cSEddie James 352bea128cSEddie James uint32_t regs[ASPEED_SDHCI_NUM_REGS]; 36db1015e9SEduardo Habkost }; 372bea128cSEddie James 386a0238a4SJamin Lin struct AspeedSDHCIClass { 396a0238a4SJamin Lin SysBusDeviceClass parent_class; 406a0238a4SJamin Lin 416a0238a4SJamin Lin uint64_t capareg; 426a0238a4SJamin Lin }; 436a0238a4SJamin Lin 442bea128cSEddie James #endif /* ASPEED_SDHCI_H */ 45