xref: /openbmc/qemu/include/hw/arm/msf2-soc.h (revision 3b76e185)
1ebc1fbb4SSubbaraya Sundeep /*
2ebc1fbb4SSubbaraya Sundeep  * Microsemi Smartfusion2 SoC
3ebc1fbb4SSubbaraya Sundeep  *
4ebc1fbb4SSubbaraya Sundeep  * Copyright (c) 2017 Subbaraya Sundeep <sundeep.lkml@gmail.com>
5ebc1fbb4SSubbaraya Sundeep  *
6ebc1fbb4SSubbaraya Sundeep  * Permission is hereby granted, free of charge, to any person obtaining a copy
7ebc1fbb4SSubbaraya Sundeep  * of this software and associated documentation files (the "Software"), to deal
8ebc1fbb4SSubbaraya Sundeep  * in the Software without restriction, including without limitation the rights
9ebc1fbb4SSubbaraya Sundeep  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10ebc1fbb4SSubbaraya Sundeep  * copies of the Software, and to permit persons to whom the Software is
11ebc1fbb4SSubbaraya Sundeep  * furnished to do so, subject to the following conditions:
12ebc1fbb4SSubbaraya Sundeep  *
13ebc1fbb4SSubbaraya Sundeep  * The above copyright notice and this permission notice shall be included in
14ebc1fbb4SSubbaraya Sundeep  * all copies or substantial portions of the Software.
15ebc1fbb4SSubbaraya Sundeep  *
16ebc1fbb4SSubbaraya Sundeep  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17ebc1fbb4SSubbaraya Sundeep  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18ebc1fbb4SSubbaraya Sundeep  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19ebc1fbb4SSubbaraya Sundeep  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20ebc1fbb4SSubbaraya Sundeep  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21ebc1fbb4SSubbaraya Sundeep  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22ebc1fbb4SSubbaraya Sundeep  * THE SOFTWARE.
23ebc1fbb4SSubbaraya Sundeep  */
24ebc1fbb4SSubbaraya Sundeep 
25ebc1fbb4SSubbaraya Sundeep #ifndef HW_ARM_MSF2_SOC_H
26ebc1fbb4SSubbaraya Sundeep #define HW_ARM_MSF2_SOC_H
27ebc1fbb4SSubbaraya Sundeep 
28ebc1fbb4SSubbaraya Sundeep #include "hw/arm/armv7m.h"
29ebc1fbb4SSubbaraya Sundeep #include "hw/timer/mss-timer.h"
30ebc1fbb4SSubbaraya Sundeep #include "hw/misc/msf2-sysreg.h"
31ebc1fbb4SSubbaraya Sundeep #include "hw/ssi/mss-spi.h"
3205b7374aSSubbaraya Sundeep #include "hw/net/msf2-emac.h"
339bfaf375SPeter Maydell #include "hw/clock.h"
34db1015e9SEduardo Habkost #include "qom/object.h"
35ebc1fbb4SSubbaraya Sundeep 
36ebc1fbb4SSubbaraya Sundeep #define TYPE_MSF2_SOC     "msf2-soc"
378063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(MSF2State, MSF2_SOC)
38ebc1fbb4SSubbaraya Sundeep 
39ebc1fbb4SSubbaraya Sundeep #define MSF2_NUM_SPIS         2
40ebc1fbb4SSubbaraya Sundeep #define MSF2_NUM_UARTS        2
41ebc1fbb4SSubbaraya Sundeep 
42ebc1fbb4SSubbaraya Sundeep /*
43ebc1fbb4SSubbaraya Sundeep  * System timer consists of two programmable 32-bit
44ebc1fbb4SSubbaraya Sundeep  * decrementing counters that generate individual interrupts to
45ebc1fbb4SSubbaraya Sundeep  * the Cortex-M3 processor
46ebc1fbb4SSubbaraya Sundeep  */
47ebc1fbb4SSubbaraya Sundeep #define MSF2_NUM_TIMERS       2
48ebc1fbb4SSubbaraya Sundeep 
49db1015e9SEduardo Habkost struct MSF2State {
50ebc1fbb4SSubbaraya Sundeep     /*< private >*/
51ebc1fbb4SSubbaraya Sundeep     SysBusDevice parent_obj;
52ebc1fbb4SSubbaraya Sundeep     /*< public >*/
53ebc1fbb4SSubbaraya Sundeep 
54ebc1fbb4SSubbaraya Sundeep     ARMv7MState armv7m;
55ebc1fbb4SSubbaraya Sundeep 
56ebc1fbb4SSubbaraya Sundeep     char *cpu_type;
57ebc1fbb4SSubbaraya Sundeep     char *part_name;
58ebc1fbb4SSubbaraya Sundeep     uint64_t envm_size;
59ebc1fbb4SSubbaraya Sundeep     uint64_t esram_size;
60ebc1fbb4SSubbaraya Sundeep 
619bfaf375SPeter Maydell     Clock *m3clk;
62*3b76e185SPeter Maydell     Clock *refclk;
63ebc1fbb4SSubbaraya Sundeep     uint8_t apb0div;
64ebc1fbb4SSubbaraya Sundeep     uint8_t apb1div;
65ebc1fbb4SSubbaraya Sundeep 
66ebc1fbb4SSubbaraya Sundeep     MSF2SysregState sysreg;
67ebc1fbb4SSubbaraya Sundeep     MSSTimerState timer;
68ebc1fbb4SSubbaraya Sundeep     MSSSpiState spi[MSF2_NUM_SPIS];
6905b7374aSSubbaraya Sundeep     MSF2EmacState emac;
70a4b1e9d3SPeter Maydell 
71a4b1e9d3SPeter Maydell     MemoryRegion nvm;
72a4b1e9d3SPeter Maydell     MemoryRegion nvm_alias;
73a4b1e9d3SPeter Maydell     MemoryRegion sram;
74db1015e9SEduardo Habkost };
75ebc1fbb4SSubbaraya Sundeep 
76ebc1fbb4SSubbaraya Sundeep #endif
77