xref: /openbmc/qemu/include/hw/sd/bcm2835_sdhost.h (revision db1015e9)
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