15ae74402SAlistair Francis /* 25ae74402SAlistair Francis * STM32F2XX SPI 35ae74402SAlistair Francis * 45ae74402SAlistair Francis * Copyright (c) 2014 Alistair Francis <alistair@alistair23.me> 55ae74402SAlistair Francis * 65ae74402SAlistair Francis * Permission is hereby granted, free of charge, to any person obtaining a copy 75ae74402SAlistair Francis * of this software and associated documentation files (the "Software"), to deal 85ae74402SAlistair Francis * in the Software without restriction, including without limitation the rights 95ae74402SAlistair Francis * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 105ae74402SAlistair Francis * copies of the Software, and to permit persons to whom the Software is 115ae74402SAlistair Francis * furnished to do so, subject to the following conditions: 125ae74402SAlistair Francis * 135ae74402SAlistair Francis * The above copyright notice and this permission notice shall be included in 145ae74402SAlistair Francis * all copies or substantial portions of the Software. 155ae74402SAlistair Francis * 165ae74402SAlistair Francis * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 175ae74402SAlistair Francis * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 185ae74402SAlistair Francis * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 195ae74402SAlistair Francis * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 205ae74402SAlistair Francis * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 215ae74402SAlistair Francis * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 225ae74402SAlistair Francis * THE SOFTWARE. 235ae74402SAlistair Francis */ 245ae74402SAlistair Francis 255ae74402SAlistair Francis #ifndef HW_STM32F2XX_SPI_H 265ae74402SAlistair Francis #define HW_STM32F2XX_SPI_H 275ae74402SAlistair Francis 285ae74402SAlistair Francis #include "hw/sysbus.h" 295ae74402SAlistair Francis #include "hw/ssi/ssi.h" 30db1015e9SEduardo Habkost #include "qom/object.h" 315ae74402SAlistair Francis 325ae74402SAlistair Francis #define STM_SPI_CR1 0x00 335ae74402SAlistair Francis #define STM_SPI_CR2 0x04 345ae74402SAlistair Francis #define STM_SPI_SR 0x08 355ae74402SAlistair Francis #define STM_SPI_DR 0x0C 365ae74402SAlistair Francis #define STM_SPI_CRCPR 0x10 375ae74402SAlistair Francis #define STM_SPI_RXCRCR 0x14 385ae74402SAlistair Francis #define STM_SPI_TXCRCR 0x18 395ae74402SAlistair Francis #define STM_SPI_I2SCFGR 0x1C 405ae74402SAlistair Francis #define STM_SPI_I2SPR 0x20 415ae74402SAlistair Francis 425ae74402SAlistair Francis #define STM_SPI_CR1_SPE (1 << 6) 435ae74402SAlistair Francis #define STM_SPI_CR1_MSTR (1 << 2) 445ae74402SAlistair Francis 455ae74402SAlistair Francis #define STM_SPI_SR_RXNE 1 465ae74402SAlistair Francis 475ae74402SAlistair Francis #define TYPE_STM32F2XX_SPI "stm32f2xx-spi" 48*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(STM32F2XXSPIState, STM32F2XX_SPI) 495ae74402SAlistair Francis 50db1015e9SEduardo Habkost struct STM32F2XXSPIState { 515ae74402SAlistair Francis /* <private> */ 525ae74402SAlistair Francis SysBusDevice parent_obj; 535ae74402SAlistair Francis 545ae74402SAlistair Francis /* <public> */ 555ae74402SAlistair Francis MemoryRegion mmio; 565ae74402SAlistair Francis 575ae74402SAlistair Francis uint32_t spi_cr1; 585ae74402SAlistair Francis uint32_t spi_cr2; 595ae74402SAlistair Francis uint32_t spi_sr; 605ae74402SAlistair Francis uint32_t spi_dr; 615ae74402SAlistair Francis uint32_t spi_crcpr; 625ae74402SAlistair Francis uint32_t spi_rxcrcr; 635ae74402SAlistair Francis uint32_t spi_txcrcr; 645ae74402SAlistair Francis uint32_t spi_i2scfgr; 655ae74402SAlistair Francis uint32_t spi_i2spr; 665ae74402SAlistair Francis 675ae74402SAlistair Francis qemu_irq irq; 685ae74402SAlistair Francis SSIBus *ssi; 69db1015e9SEduardo Habkost }; 705ae74402SAlistair Francis 715ae74402SAlistair Francis #endif /* HW_STM32F2XX_SPI_H */ 72