1268ee7deSSubbaraya Sundeep /* 2268ee7deSSubbaraya Sundeep * Microsemi SmartFusion2 SPI 3268ee7deSSubbaraya Sundeep * 4268ee7deSSubbaraya Sundeep * Copyright (c) 2017 Subbaraya Sundeep <sundeep.lkml@gmail.com> 5268ee7deSSubbaraya Sundeep * 6268ee7deSSubbaraya Sundeep * Permission is hereby granted, free of charge, to any person obtaining a copy 7268ee7deSSubbaraya Sundeep * of this software and associated documentation files (the "Software"), to deal 8268ee7deSSubbaraya Sundeep * in the Software without restriction, including without limitation the rights 9268ee7deSSubbaraya Sundeep * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10268ee7deSSubbaraya Sundeep * copies of the Software, and to permit persons to whom the Software is 11268ee7deSSubbaraya Sundeep * furnished to do so, subject to the following conditions: 12268ee7deSSubbaraya Sundeep * 13268ee7deSSubbaraya Sundeep * The above copyright notice and this permission notice shall be included in 14268ee7deSSubbaraya Sundeep * all copies or substantial portions of the Software. 15268ee7deSSubbaraya Sundeep * 16268ee7deSSubbaraya Sundeep * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17268ee7deSSubbaraya Sundeep * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18268ee7deSSubbaraya Sundeep * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19268ee7deSSubbaraya Sundeep * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20268ee7deSSubbaraya Sundeep * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21268ee7deSSubbaraya Sundeep * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22268ee7deSSubbaraya Sundeep * THE SOFTWARE. 23268ee7deSSubbaraya Sundeep */ 24268ee7deSSubbaraya Sundeep 25268ee7deSSubbaraya Sundeep #ifndef HW_MSS_SPI_H 26268ee7deSSubbaraya Sundeep #define HW_MSS_SPI_H 27268ee7deSSubbaraya Sundeep 28268ee7deSSubbaraya Sundeep #include "hw/sysbus.h" 29268ee7deSSubbaraya Sundeep #include "hw/ssi/ssi.h" 30268ee7deSSubbaraya Sundeep #include "qemu/fifo32.h" 31db1015e9SEduardo Habkost #include "qom/object.h" 32268ee7deSSubbaraya Sundeep 33268ee7deSSubbaraya Sundeep #define TYPE_MSS_SPI "mss-spi" 34*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(MSSSpiState, MSS_SPI) 35268ee7deSSubbaraya Sundeep 36268ee7deSSubbaraya Sundeep #define R_SPI_MAX 16 37268ee7deSSubbaraya Sundeep 38db1015e9SEduardo Habkost struct MSSSpiState { 39268ee7deSSubbaraya Sundeep SysBusDevice parent_obj; 40268ee7deSSubbaraya Sundeep 41268ee7deSSubbaraya Sundeep MemoryRegion mmio; 42268ee7deSSubbaraya Sundeep 43268ee7deSSubbaraya Sundeep qemu_irq irq; 44268ee7deSSubbaraya Sundeep 45268ee7deSSubbaraya Sundeep qemu_irq cs_line; 46268ee7deSSubbaraya Sundeep 47268ee7deSSubbaraya Sundeep SSIBus *spi; 48268ee7deSSubbaraya Sundeep 49268ee7deSSubbaraya Sundeep Fifo32 rx_fifo; 50268ee7deSSubbaraya Sundeep Fifo32 tx_fifo; 51268ee7deSSubbaraya Sundeep 52268ee7deSSubbaraya Sundeep int fifo_depth; 53268ee7deSSubbaraya Sundeep uint32_t frame_count; 54268ee7deSSubbaraya Sundeep bool enabled; 55268ee7deSSubbaraya Sundeep 56268ee7deSSubbaraya Sundeep uint32_t regs[R_SPI_MAX]; 57db1015e9SEduardo Habkost }; 58268ee7deSSubbaraya Sundeep 59268ee7deSSubbaraya Sundeep #endif /* HW_MSS_SPI_H */ 60