1*0ee1e1f4SSubbaraya Sundeep /* 2*0ee1e1f4SSubbaraya Sundeep * Microsemi SmartFusion2 SYSREG 3*0ee1e1f4SSubbaraya Sundeep * 4*0ee1e1f4SSubbaraya Sundeep * Copyright (c) 2017 Subbaraya Sundeep <sundeep.lkml@gmail.com> 5*0ee1e1f4SSubbaraya Sundeep * 6*0ee1e1f4SSubbaraya Sundeep * Permission is hereby granted, free of charge, to any person obtaining a copy 7*0ee1e1f4SSubbaraya Sundeep * of this software and associated documentation files (the "Software"), to deal 8*0ee1e1f4SSubbaraya Sundeep * in the Software without restriction, including without limitation the rights 9*0ee1e1f4SSubbaraya Sundeep * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 10*0ee1e1f4SSubbaraya Sundeep * copies of the Software, and to permit persons to whom the Software is 11*0ee1e1f4SSubbaraya Sundeep * furnished to do so, subject to the following conditions: 12*0ee1e1f4SSubbaraya Sundeep * 13*0ee1e1f4SSubbaraya Sundeep * The above copyright notice and this permission notice shall be included in 14*0ee1e1f4SSubbaraya Sundeep * all copies or substantial portions of the Software. 15*0ee1e1f4SSubbaraya Sundeep * 16*0ee1e1f4SSubbaraya Sundeep * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 17*0ee1e1f4SSubbaraya Sundeep * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 18*0ee1e1f4SSubbaraya Sundeep * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL 19*0ee1e1f4SSubbaraya Sundeep * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 20*0ee1e1f4SSubbaraya Sundeep * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 21*0ee1e1f4SSubbaraya Sundeep * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN 22*0ee1e1f4SSubbaraya Sundeep * THE SOFTWARE. 23*0ee1e1f4SSubbaraya Sundeep */ 24*0ee1e1f4SSubbaraya Sundeep 25*0ee1e1f4SSubbaraya Sundeep #ifndef HW_MSF2_SYSREG_H 26*0ee1e1f4SSubbaraya Sundeep #define HW_MSF2_SYSREG_H 27*0ee1e1f4SSubbaraya Sundeep 28*0ee1e1f4SSubbaraya Sundeep #include "hw/sysbus.h" 29*0ee1e1f4SSubbaraya Sundeep 30*0ee1e1f4SSubbaraya Sundeep enum { 31*0ee1e1f4SSubbaraya Sundeep ESRAM_CR = 0x00 / 4, 32*0ee1e1f4SSubbaraya Sundeep ESRAM_MAX_LAT, 33*0ee1e1f4SSubbaraya Sundeep DDR_CR, 34*0ee1e1f4SSubbaraya Sundeep ENVM_CR, 35*0ee1e1f4SSubbaraya Sundeep ENVM_REMAP_BASE_CR, 36*0ee1e1f4SSubbaraya Sundeep ENVM_REMAP_FAB_CR, 37*0ee1e1f4SSubbaraya Sundeep CC_CR, 38*0ee1e1f4SSubbaraya Sundeep CC_REGION_CR, 39*0ee1e1f4SSubbaraya Sundeep CC_LOCK_BASE_ADDR_CR, 40*0ee1e1f4SSubbaraya Sundeep CC_FLUSH_INDX_CR, 41*0ee1e1f4SSubbaraya Sundeep DDRB_BUF_TIMER_CR, 42*0ee1e1f4SSubbaraya Sundeep DDRB_NB_ADDR_CR, 43*0ee1e1f4SSubbaraya Sundeep DDRB_NB_SIZE_CR, 44*0ee1e1f4SSubbaraya Sundeep DDRB_CR, 45*0ee1e1f4SSubbaraya Sundeep 46*0ee1e1f4SSubbaraya Sundeep SOFT_RESET_CR = 0x48 / 4, 47*0ee1e1f4SSubbaraya Sundeep M3_CR, 48*0ee1e1f4SSubbaraya Sundeep 49*0ee1e1f4SSubbaraya Sundeep GPIO_SYSRESET_SEL_CR = 0x58 / 4, 50*0ee1e1f4SSubbaraya Sundeep 51*0ee1e1f4SSubbaraya Sundeep MDDR_CR = 0x60 / 4, 52*0ee1e1f4SSubbaraya Sundeep 53*0ee1e1f4SSubbaraya Sundeep MSSDDR_PLL_STATUS_LOW_CR = 0x90 / 4, 54*0ee1e1f4SSubbaraya Sundeep MSSDDR_PLL_STATUS_HIGH_CR, 55*0ee1e1f4SSubbaraya Sundeep MSSDDR_FACC1_CR, 56*0ee1e1f4SSubbaraya Sundeep MSSDDR_FACC2_CR, 57*0ee1e1f4SSubbaraya Sundeep 58*0ee1e1f4SSubbaraya Sundeep MSSDDR_PLL_STATUS = 0x150 / 4, 59*0ee1e1f4SSubbaraya Sundeep }; 60*0ee1e1f4SSubbaraya Sundeep 61*0ee1e1f4SSubbaraya Sundeep #define MSF2_SYSREG_MMIO_SIZE 0x300 62*0ee1e1f4SSubbaraya Sundeep 63*0ee1e1f4SSubbaraya Sundeep #define TYPE_MSF2_SYSREG "msf2-sysreg" 64*0ee1e1f4SSubbaraya Sundeep #define MSF2_SYSREG(obj) OBJECT_CHECK(MSF2SysregState, (obj), TYPE_MSF2_SYSREG) 65*0ee1e1f4SSubbaraya Sundeep 66*0ee1e1f4SSubbaraya Sundeep typedef struct MSF2SysregState { 67*0ee1e1f4SSubbaraya Sundeep SysBusDevice parent_obj; 68*0ee1e1f4SSubbaraya Sundeep 69*0ee1e1f4SSubbaraya Sundeep MemoryRegion iomem; 70*0ee1e1f4SSubbaraya Sundeep 71*0ee1e1f4SSubbaraya Sundeep uint8_t apb0div; 72*0ee1e1f4SSubbaraya Sundeep uint8_t apb1div; 73*0ee1e1f4SSubbaraya Sundeep 74*0ee1e1f4SSubbaraya Sundeep uint32_t regs[MSF2_SYSREG_MMIO_SIZE / 4]; 75*0ee1e1f4SSubbaraya Sundeep } MSF2SysregState; 76*0ee1e1f4SSubbaraya Sundeep 77*0ee1e1f4SSubbaraya Sundeep #endif /* HW_MSF2_SYSREG_H */ 78