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" 16*6a0238a4SJamin Lin #define TYPE_ASPEED_2400_SDHCI TYPE_ASPEED_SDHCI "-ast2400" 17*6a0238a4SJamin Lin #define TYPE_ASPEED_2500_SDHCI TYPE_ASPEED_SDHCI "-ast2500" 18*6a0238a4SJamin Lin #define TYPE_ASPEED_2600_SDHCI TYPE_ASPEED_SDHCI "-ast2600" 19*6a0238a4SJamin Lin OBJECT_DECLARE_TYPE(AspeedSDHCIState, AspeedSDHCIClass, ASPEED_SDHCI) 202bea128cSEddie James 212bea128cSEddie James #define ASPEED_SDHCI_NUM_SLOTS 2 222bea128cSEddie James #define ASPEED_SDHCI_NUM_REGS (ASPEED_SDHCI_REG_SIZE / sizeof(uint32_t)) 232bea128cSEddie James #define ASPEED_SDHCI_REG_SIZE 0x100 242bea128cSEddie James 25db1015e9SEduardo Habkost struct AspeedSDHCIState { 262bea128cSEddie James SysBusDevice parent; 272bea128cSEddie James 282bea128cSEddie James SDHCIState slots[ASPEED_SDHCI_NUM_SLOTS]; 290e2c24c6SAndrew Jeffery uint8_t num_slots; 302bea128cSEddie James 312bea128cSEddie James MemoryRegion iomem; 322bea128cSEddie James qemu_irq irq; 332bea128cSEddie James 342bea128cSEddie James uint32_t regs[ASPEED_SDHCI_NUM_REGS]; 35db1015e9SEduardo Habkost }; 362bea128cSEddie James 37*6a0238a4SJamin Lin struct AspeedSDHCIClass { 38*6a0238a4SJamin Lin SysBusDeviceClass parent_class; 39*6a0238a4SJamin Lin 40*6a0238a4SJamin Lin uint64_t capareg; 41*6a0238a4SJamin Lin }; 42*6a0238a4SJamin Lin 432bea128cSEddie James #endif /* ASPEED_SDHCI_H */ 44