/* * QEMU model of the SiFive SPI Controller * * Copyright (c) 2021 Wind River Systems, Inc. * * Author: * Bin Meng * * This program is free software; you can redistribute it and/or modify it * under the terms and conditions of the GNU General Public License, * version 2 or later, as published by the Free Software Foundation. * * This program is distributed in the hope it will be useful, but WITHOUT * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for * more details. * * You should have received a copy of the GNU General Public License along with * this program. If not, see . */ #ifndef HW_SIFIVE_SPI_H #define HW_SIFIVE_SPI_H #include "qemu/fifo8.h" #include "hw/sysbus.h" #define SIFIVE_SPI_REG_NUM (0x78 / 4) #define TYPE_SIFIVE_SPI "sifive.spi" #define SIFIVE_SPI(obj) OBJECT_CHECK(SiFiveSPIState, (obj), TYPE_SIFIVE_SPI) typedef struct SiFiveSPIState { SysBusDevice parent_obj; MemoryRegion mmio; qemu_irq irq; uint32_t num_cs; qemu_irq *cs_lines; SSIBus *spi; Fifo8 tx_fifo; Fifo8 rx_fifo; uint32_t regs[SIFIVE_SPI_REG_NUM]; } SiFiveSPIState; #endif /* HW_SIFIVE_SPI_H */