xref: /openbmc/qemu/include/hw/misc/stm32f4xx_exti.h (revision 52581c71)
1e64d8c83SAlistair Francis /*
2e64d8c83SAlistair Francis  * STM32F4XX EXTI
3e64d8c83SAlistair Francis  *
4e64d8c83SAlistair Francis  * Copyright (c) 2014 Alistair Francis <alistair@alistair23.me>
5e64d8c83SAlistair Francis  *
6e64d8c83SAlistair Francis  * Permission is hereby granted, free of charge, to any person obtaining a copy
7e64d8c83SAlistair Francis  * of this software and associated documentation files (the "Software"), to deal
8e64d8c83SAlistair Francis  * in the Software without restriction, including without limitation the rights
9e64d8c83SAlistair Francis  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
10e64d8c83SAlistair Francis  * copies of the Software, and to permit persons to whom the Software is
11e64d8c83SAlistair Francis  * furnished to do so, subject to the following conditions:
12e64d8c83SAlistair Francis  *
13e64d8c83SAlistair Francis  * The above copyright notice and this permission notice shall be included in
14e64d8c83SAlistair Francis  * all copies or substantial portions of the Software.
15e64d8c83SAlistair Francis  *
16e64d8c83SAlistair Francis  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
17e64d8c83SAlistair Francis  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
18e64d8c83SAlistair Francis  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
19e64d8c83SAlistair Francis  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
20e64d8c83SAlistair Francis  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
21e64d8c83SAlistair Francis  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
22e64d8c83SAlistair Francis  * THE SOFTWARE.
23e64d8c83SAlistair Francis  */
24e64d8c83SAlistair Francis 
25*52581c71SMarkus Armbruster #ifndef HW_STM32F4XX_EXTI_H
26*52581c71SMarkus Armbruster #define HW_STM32F4XX_EXTI_H
27e64d8c83SAlistair Francis 
28e64d8c83SAlistair Francis #include "hw/sysbus.h"
29db1015e9SEduardo Habkost #include "qom/object.h"
30e64d8c83SAlistair Francis 
31e64d8c83SAlistair Francis #define EXTI_IMR   0x00
32e64d8c83SAlistair Francis #define EXTI_EMR   0x04
33e64d8c83SAlistair Francis #define EXTI_RTSR  0x08
34e64d8c83SAlistair Francis #define EXTI_FTSR  0x0C
35e64d8c83SAlistair Francis #define EXTI_SWIER 0x10
36e64d8c83SAlistair Francis #define EXTI_PR    0x14
37e64d8c83SAlistair Francis 
38e64d8c83SAlistair Francis #define TYPE_STM32F4XX_EXTI "stm32f4xx-exti"
398063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(STM32F4xxExtiState, STM32F4XX_EXTI)
40e64d8c83SAlistair Francis 
41e64d8c83SAlistair Francis #define NUM_GPIO_EVENT_IN_LINES 16
42e64d8c83SAlistair Francis #define NUM_INTERRUPT_OUT_LINES 16
43e64d8c83SAlistair Francis 
44db1015e9SEduardo Habkost struct STM32F4xxExtiState {
45e64d8c83SAlistair Francis     SysBusDevice parent_obj;
46e64d8c83SAlistair Francis 
47e64d8c83SAlistair Francis     MemoryRegion mmio;
48e64d8c83SAlistair Francis 
49e64d8c83SAlistair Francis     uint32_t exti_imr;
50e64d8c83SAlistair Francis     uint32_t exti_emr;
51e64d8c83SAlistair Francis     uint32_t exti_rtsr;
52e64d8c83SAlistair Francis     uint32_t exti_ftsr;
53e64d8c83SAlistair Francis     uint32_t exti_swier;
54e64d8c83SAlistair Francis     uint32_t exti_pr;
55e64d8c83SAlistair Francis 
56e64d8c83SAlistair Francis     qemu_irq irq[NUM_INTERRUPT_OUT_LINES];
57db1015e9SEduardo Habkost };
58e64d8c83SAlistair Francis 
59e64d8c83SAlistair Francis #endif
60