143ddc182SClement Deschamps /* 243ddc182SClement Deschamps * Raspberry Pi (BCM2835) SD Host Controller 343ddc182SClement Deschamps * 443ddc182SClement Deschamps * Copyright (c) 2017 Antfield SAS 543ddc182SClement Deschamps * 643ddc182SClement Deschamps * Authors: 743ddc182SClement Deschamps * Clement Deschamps <clement.deschamps@antfield.fr> 843ddc182SClement Deschamps * Luc Michel <luc.michel@antfield.fr> 943ddc182SClement Deschamps * 1043ddc182SClement Deschamps * This work is licensed under the terms of the GNU GPL, version 2 or later. 1143ddc182SClement Deschamps * See the COPYING file in the top-level directory. 1243ddc182SClement Deschamps */ 1343ddc182SClement Deschamps 1443ddc182SClement Deschamps #ifndef BCM2835_SDHOST_H 1543ddc182SClement Deschamps #define BCM2835_SDHOST_H 1643ddc182SClement Deschamps 1743ddc182SClement Deschamps #include "hw/sysbus.h" 1843ddc182SClement Deschamps #include "hw/sd/sd.h" 19*db1015e9SEduardo Habkost #include "qom/object.h" 2043ddc182SClement Deschamps 2143ddc182SClement Deschamps #define TYPE_BCM2835_SDHOST "bcm2835-sdhost" 22*db1015e9SEduardo Habkost typedef struct BCM2835SDHostState BCM2835SDHostState; 2343ddc182SClement Deschamps #define BCM2835_SDHOST(obj) \ 2443ddc182SClement Deschamps OBJECT_CHECK(BCM2835SDHostState, (obj), TYPE_BCM2835_SDHOST) 2543ddc182SClement Deschamps 2643ddc182SClement Deschamps #define BCM2835_SDHOST_FIFO_LEN 16 2743ddc182SClement Deschamps 28*db1015e9SEduardo Habkost struct BCM2835SDHostState { 2943ddc182SClement Deschamps SysBusDevice busdev; 3043ddc182SClement Deschamps SDBus sdbus; 3143ddc182SClement Deschamps MemoryRegion iomem; 3243ddc182SClement Deschamps 3343ddc182SClement Deschamps uint32_t cmd; 3443ddc182SClement Deschamps uint32_t cmdarg; 3543ddc182SClement Deschamps uint32_t status; 3643ddc182SClement Deschamps uint32_t rsp[4]; 3743ddc182SClement Deschamps uint32_t config; 3843ddc182SClement Deschamps uint32_t edm; 3943ddc182SClement Deschamps uint32_t vdd; 4043ddc182SClement Deschamps uint32_t hbct; 4143ddc182SClement Deschamps uint32_t hblc; 4243ddc182SClement Deschamps int32_t fifo_pos; 4343ddc182SClement Deschamps int32_t fifo_len; 4443ddc182SClement Deschamps uint32_t fifo[BCM2835_SDHOST_FIFO_LEN]; 4543ddc182SClement Deschamps uint32_t datacnt; 4643ddc182SClement Deschamps 4743ddc182SClement Deschamps qemu_irq irq; 48*db1015e9SEduardo Habkost }; 4943ddc182SClement Deschamps 5043ddc182SClement Deschamps #endif 51