1*5ae74402SAlistair Francis /* 2*5ae74402SAlistair Francis * STM32F2XX SPI 3*5ae74402SAlistair Francis * 4*5ae74402SAlistair Francis * Copyright (c) 2014 Alistair Francis <alistair@alistair23.me> 5*5ae74402SAlistair Francis * 6*5ae74402SAlistair Francis * Permission is hereby granted, free of charge, to any person obtaining a copy 7*5ae74402SAlistair Francis * of this software and associated documentation files (the "Software"), to deal 8*5ae74402SAlistair Francis * in the Software without restriction, including without limitation the rights 9*5ae74402SAlistair Francis * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10*5ae74402SAlistair Francis * copies of the Software, and to permit persons to whom the Software is 11*5ae74402SAlistair Francis * furnished to do so, subject to the following conditions: 12*5ae74402SAlistair Francis * 13*5ae74402SAlistair Francis * The above copyright notice and this permission notice shall be included in 14*5ae74402SAlistair Francis * all copies or substantial portions of the Software. 15*5ae74402SAlistair Francis * 16*5ae74402SAlistair Francis * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17*5ae74402SAlistair Francis * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18*5ae74402SAlistair Francis * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19*5ae74402SAlistair Francis * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20*5ae74402SAlistair Francis * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21*5ae74402SAlistair Francis * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22*5ae74402SAlistair Francis * THE SOFTWARE. 23*5ae74402SAlistair Francis */ 24*5ae74402SAlistair Francis 25*5ae74402SAlistair Francis #ifndef HW_STM32F2XX_SPI_H 26*5ae74402SAlistair Francis #define HW_STM32F2XX_SPI_H 27*5ae74402SAlistair Francis 28*5ae74402SAlistair Francis #include "hw/sysbus.h" 29*5ae74402SAlistair Francis #include "hw/hw.h" 30*5ae74402SAlistair Francis #include "hw/ssi/ssi.h" 31*5ae74402SAlistair Francis 32*5ae74402SAlistair Francis #define STM_SPI_CR1 0x00 33*5ae74402SAlistair Francis #define STM_SPI_CR2 0x04 34*5ae74402SAlistair Francis #define STM_SPI_SR 0x08 35*5ae74402SAlistair Francis #define STM_SPI_DR 0x0C 36*5ae74402SAlistair Francis #define STM_SPI_CRCPR 0x10 37*5ae74402SAlistair Francis #define STM_SPI_RXCRCR 0x14 38*5ae74402SAlistair Francis #define STM_SPI_TXCRCR 0x18 39*5ae74402SAlistair Francis #define STM_SPI_I2SCFGR 0x1C 40*5ae74402SAlistair Francis #define STM_SPI_I2SPR 0x20 41*5ae74402SAlistair Francis 42*5ae74402SAlistair Francis #define STM_SPI_CR1_SPE (1 << 6) 43*5ae74402SAlistair Francis #define STM_SPI_CR1_MSTR (1 << 2) 44*5ae74402SAlistair Francis 45*5ae74402SAlistair Francis #define STM_SPI_SR_RXNE 1 46*5ae74402SAlistair Francis 47*5ae74402SAlistair Francis #define TYPE_STM32F2XX_SPI "stm32f2xx-spi" 48*5ae74402SAlistair Francis #define STM32F2XX_SPI(obj) \ 49*5ae74402SAlistair Francis OBJECT_CHECK(STM32F2XXSPIState, (obj), TYPE_STM32F2XX_SPI) 50*5ae74402SAlistair Francis 51*5ae74402SAlistair Francis typedef struct { 52*5ae74402SAlistair Francis /* <private> */ 53*5ae74402SAlistair Francis SysBusDevice parent_obj; 54*5ae74402SAlistair Francis 55*5ae74402SAlistair Francis /* <public> */ 56*5ae74402SAlistair Francis MemoryRegion mmio; 57*5ae74402SAlistair Francis 58*5ae74402SAlistair Francis uint32_t spi_cr1; 59*5ae74402SAlistair Francis uint32_t spi_cr2; 60*5ae74402SAlistair Francis uint32_t spi_sr; 61*5ae74402SAlistair Francis uint32_t spi_dr; 62*5ae74402SAlistair Francis uint32_t spi_crcpr; 63*5ae74402SAlistair Francis uint32_t spi_rxcrcr; 64*5ae74402SAlistair Francis uint32_t spi_txcrcr; 65*5ae74402SAlistair Francis uint32_t spi_i2scfgr; 66*5ae74402SAlistair Francis uint32_t spi_i2spr; 67*5ae74402SAlistair Francis 68*5ae74402SAlistair Francis qemu_irq irq; 69*5ae74402SAlistair Francis SSIBus *ssi; 70*5ae74402SAlistair Francis } STM32F2XXSPIState; 71*5ae74402SAlistair Francis 72*5ae74402SAlistair Francis #endif /* HW_STM32F2XX_SPI_H */ 73