xref: /qemu/include/hw/misc/stm32f4xx_exti.h (revision db1015e92e04835c9eb50c29625fe566d1202dbd)
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 
25e64d8c83SAlistair Francis #ifndef HW_STM_EXTI_H
26e64d8c83SAlistair Francis #define HW_STM_EXTI_H
27e64d8c83SAlistair Francis 
28e64d8c83SAlistair Francis #include "hw/sysbus.h"
29e64d8c83SAlistair Francis #include "hw/hw.h"
30*db1015e9SEduardo Habkost #include "qom/object.h"
31e64d8c83SAlistair Francis 
32e64d8c83SAlistair Francis #define EXTI_IMR   0x00
33e64d8c83SAlistair Francis #define EXTI_EMR   0x04
34e64d8c83SAlistair Francis #define EXTI_RTSR  0x08
35e64d8c83SAlistair Francis #define EXTI_FTSR  0x0C
36e64d8c83SAlistair Francis #define EXTI_SWIER 0x10
37e64d8c83SAlistair Francis #define EXTI_PR    0x14
38e64d8c83SAlistair Francis 
39e64d8c83SAlistair Francis #define TYPE_STM32F4XX_EXTI "stm32f4xx-exti"
40*db1015e9SEduardo Habkost typedef struct STM32F4xxExtiState STM32F4xxExtiState;
41e64d8c83SAlistair Francis #define STM32F4XX_EXTI(obj) \
42e64d8c83SAlistair Francis     OBJECT_CHECK(STM32F4xxExtiState, (obj), TYPE_STM32F4XX_EXTI)
43e64d8c83SAlistair Francis 
44e64d8c83SAlistair Francis #define NUM_GPIO_EVENT_IN_LINES 16
45e64d8c83SAlistair Francis #define NUM_INTERRUPT_OUT_LINES 16
46e64d8c83SAlistair Francis 
47*db1015e9SEduardo Habkost struct STM32F4xxExtiState {
48e64d8c83SAlistair Francis     SysBusDevice parent_obj;
49e64d8c83SAlistair Francis 
50e64d8c83SAlistair Francis     MemoryRegion mmio;
51e64d8c83SAlistair Francis 
52e64d8c83SAlistair Francis     uint32_t exti_imr;
53e64d8c83SAlistair Francis     uint32_t exti_emr;
54e64d8c83SAlistair Francis     uint32_t exti_rtsr;
55e64d8c83SAlistair Francis     uint32_t exti_ftsr;
56e64d8c83SAlistair Francis     uint32_t exti_swier;
57e64d8c83SAlistair Francis     uint32_t exti_pr;
58e64d8c83SAlistair Francis 
59e64d8c83SAlistair Francis     qemu_irq irq[NUM_INTERRUPT_OUT_LINES];
60*db1015e9SEduardo Habkost };
61e64d8c83SAlistair Francis 
62e64d8c83SAlistair Francis #endif
63