xref: /openbmc/qemu/include/hw/ssi/mss-spi.h (revision c122bca9)
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