173af5d11SAlistair Francis /* 273af5d11SAlistair Francis * STM32F2XX USART 373af5d11SAlistair Francis * 473af5d11SAlistair Francis * Copyright (c) 2014 Alistair Francis <alistair@alistair23.me> 573af5d11SAlistair Francis * 673af5d11SAlistair Francis * Permission is hereby granted, free of charge, to any person obtaining a copy 773af5d11SAlistair Francis * of this software and associated documentation files (the "Software"), to deal 873af5d11SAlistair Francis * in the Software without restriction, including without limitation the rights 973af5d11SAlistair Francis * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 1073af5d11SAlistair Francis * copies of the Software, and to permit persons to whom the Software is 1173af5d11SAlistair Francis * furnished to do so, subject to the following conditions: 1273af5d11SAlistair Francis * 1373af5d11SAlistair Francis * The above copyright notice and this permission notice shall be included in 1473af5d11SAlistair Francis * all copies or substantial portions of the Software. 1573af5d11SAlistair Francis * 1673af5d11SAlistair Francis * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 1773af5d11SAlistair Francis * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 1873af5d11SAlistair Francis * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 1973af5d11SAlistair Francis * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 2073af5d11SAlistair Francis * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 2173af5d11SAlistair Francis * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 2273af5d11SAlistair Francis * THE SOFTWARE. 2373af5d11SAlistair Francis */ 2473af5d11SAlistair Francis 2573af5d11SAlistair Francis #ifndef HW_STM32F2XX_USART_H 2673af5d11SAlistair Francis #define HW_STM32F2XX_USART_H 2773af5d11SAlistair Francis 2873af5d11SAlistair Francis #include "hw/sysbus.h" 29*4d43a603SMarc-André Lureau #include "chardev/char-fe.h" 3073af5d11SAlistair Francis #include "hw/hw.h" 3173af5d11SAlistair Francis 3273af5d11SAlistair Francis #define USART_SR 0x00 3373af5d11SAlistair Francis #define USART_DR 0x04 3473af5d11SAlistair Francis #define USART_BRR 0x08 3573af5d11SAlistair Francis #define USART_CR1 0x0C 3673af5d11SAlistair Francis #define USART_CR2 0x10 3773af5d11SAlistair Francis #define USART_CR3 0x14 3873af5d11SAlistair Francis #define USART_GTPR 0x18 3973af5d11SAlistair Francis 4073af5d11SAlistair Francis #define USART_SR_RESET 0x00C00000 4173af5d11SAlistair Francis 4273af5d11SAlistair Francis #define USART_SR_TXE (1 << 7) 4373af5d11SAlistair Francis #define USART_SR_TC (1 << 6) 4473af5d11SAlistair Francis #define USART_SR_RXNE (1 << 5) 4573af5d11SAlistair Francis 4673af5d11SAlistair Francis #define USART_CR1_UE (1 << 13) 4773af5d11SAlistair Francis #define USART_CR1_RXNEIE (1 << 5) 4873af5d11SAlistair Francis #define USART_CR1_TE (1 << 3) 4973af5d11SAlistair Francis #define USART_CR1_RE (1 << 2) 5073af5d11SAlistair Francis 5173af5d11SAlistair Francis #define TYPE_STM32F2XX_USART "stm32f2xx-usart" 5273af5d11SAlistair Francis #define STM32F2XX_USART(obj) \ 5373af5d11SAlistair Francis OBJECT_CHECK(STM32F2XXUsartState, (obj), TYPE_STM32F2XX_USART) 5473af5d11SAlistair Francis 5573af5d11SAlistair Francis typedef struct { 5673af5d11SAlistair Francis /* <private> */ 5773af5d11SAlistair Francis SysBusDevice parent_obj; 5873af5d11SAlistair Francis 5973af5d11SAlistair Francis /* <public> */ 6073af5d11SAlistair Francis MemoryRegion mmio; 6173af5d11SAlistair Francis 6273af5d11SAlistair Francis uint32_t usart_sr; 6373af5d11SAlistair Francis uint32_t usart_dr; 6473af5d11SAlistair Francis uint32_t usart_brr; 6573af5d11SAlistair Francis uint32_t usart_cr1; 6673af5d11SAlistair Francis uint32_t usart_cr2; 6773af5d11SAlistair Francis uint32_t usart_cr3; 6873af5d11SAlistair Francis uint32_t usart_gtpr; 6973af5d11SAlistair Francis 70becdfa00SMarc-André Lureau CharBackend chr; 7173af5d11SAlistair Francis qemu_irq irq; 7273af5d11SAlistair Francis } STM32F2XXUsartState; 7373af5d11SAlistair Francis #endif /* HW_STM32F2XX_USART_H */ 74