xref: /openbmc/qemu/include/hw/misc/msf2-sysreg.h (revision 4dad0a9aa818698e0735c8352bf7925a1660df6f)
10ee1e1f4SSubbaraya Sundeep /*
20ee1e1f4SSubbaraya Sundeep  * Microsemi SmartFusion2 SYSREG
30ee1e1f4SSubbaraya Sundeep  *
40ee1e1f4SSubbaraya Sundeep  * Copyright (c) 2017 Subbaraya Sundeep <sundeep.lkml@gmail.com>
50ee1e1f4SSubbaraya Sundeep  *
60ee1e1f4SSubbaraya Sundeep  * Permission is hereby granted, free of charge, to any person obtaining a copy
70ee1e1f4SSubbaraya Sundeep  * of this software and associated documentation files (the "Software"), to deal
80ee1e1f4SSubbaraya Sundeep  * in the Software without restriction, including without limitation the rights
90ee1e1f4SSubbaraya Sundeep  * to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
100ee1e1f4SSubbaraya Sundeep  * copies of the Software, and to permit persons to whom the Software is
110ee1e1f4SSubbaraya Sundeep  * furnished to do so, subject to the following conditions:
120ee1e1f4SSubbaraya Sundeep  *
130ee1e1f4SSubbaraya Sundeep  * The above copyright notice and this permission notice shall be included in
140ee1e1f4SSubbaraya Sundeep  * all copies or substantial portions of the Software.
150ee1e1f4SSubbaraya Sundeep  *
160ee1e1f4SSubbaraya Sundeep  * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
170ee1e1f4SSubbaraya Sundeep  * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
180ee1e1f4SSubbaraya Sundeep  * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
190ee1e1f4SSubbaraya Sundeep  * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
200ee1e1f4SSubbaraya Sundeep  * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
210ee1e1f4SSubbaraya Sundeep  * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
220ee1e1f4SSubbaraya Sundeep  * THE SOFTWARE.
230ee1e1f4SSubbaraya Sundeep  */
240ee1e1f4SSubbaraya Sundeep 
250ee1e1f4SSubbaraya Sundeep #ifndef HW_MSF2_SYSREG_H
260ee1e1f4SSubbaraya Sundeep #define HW_MSF2_SYSREG_H
270ee1e1f4SSubbaraya Sundeep 
280ee1e1f4SSubbaraya Sundeep #include "hw/sysbus.h"
29db1015e9SEduardo Habkost #include "qom/object.h"
300ee1e1f4SSubbaraya Sundeep 
310ee1e1f4SSubbaraya Sundeep enum {
320ee1e1f4SSubbaraya Sundeep     ESRAM_CR        = 0x00 / 4,
330ee1e1f4SSubbaraya Sundeep     ESRAM_MAX_LAT,
340ee1e1f4SSubbaraya Sundeep     DDR_CR,
350ee1e1f4SSubbaraya Sundeep     ENVM_CR,
360ee1e1f4SSubbaraya Sundeep     ENVM_REMAP_BASE_CR,
370ee1e1f4SSubbaraya Sundeep     ENVM_REMAP_FAB_CR,
380ee1e1f4SSubbaraya Sundeep     CC_CR,
390ee1e1f4SSubbaraya Sundeep     CC_REGION_CR,
400ee1e1f4SSubbaraya Sundeep     CC_LOCK_BASE_ADDR_CR,
410ee1e1f4SSubbaraya Sundeep     CC_FLUSH_INDX_CR,
420ee1e1f4SSubbaraya Sundeep     DDRB_BUF_TIMER_CR,
430ee1e1f4SSubbaraya Sundeep     DDRB_NB_ADDR_CR,
440ee1e1f4SSubbaraya Sundeep     DDRB_NB_SIZE_CR,
450ee1e1f4SSubbaraya Sundeep     DDRB_CR,
460ee1e1f4SSubbaraya Sundeep 
470ee1e1f4SSubbaraya Sundeep     SOFT_RESET_CR  = 0x48 / 4,
480ee1e1f4SSubbaraya Sundeep     M3_CR,
490ee1e1f4SSubbaraya Sundeep 
500ee1e1f4SSubbaraya Sundeep     GPIO_SYSRESET_SEL_CR = 0x58 / 4,
510ee1e1f4SSubbaraya Sundeep 
520ee1e1f4SSubbaraya Sundeep     MDDR_CR = 0x60 / 4,
530ee1e1f4SSubbaraya Sundeep 
540ee1e1f4SSubbaraya Sundeep     MSSDDR_PLL_STATUS_LOW_CR = 0x90 / 4,
550ee1e1f4SSubbaraya Sundeep     MSSDDR_PLL_STATUS_HIGH_CR,
560ee1e1f4SSubbaraya Sundeep     MSSDDR_FACC1_CR,
570ee1e1f4SSubbaraya Sundeep     MSSDDR_FACC2_CR,
580ee1e1f4SSubbaraya Sundeep 
590ee1e1f4SSubbaraya Sundeep     MSSDDR_PLL_STATUS = 0x150 / 4,
600ee1e1f4SSubbaraya Sundeep };
610ee1e1f4SSubbaraya Sundeep 
620ee1e1f4SSubbaraya Sundeep #define MSF2_SYSREG_MMIO_SIZE     0x300
630ee1e1f4SSubbaraya Sundeep 
640ee1e1f4SSubbaraya Sundeep #define TYPE_MSF2_SYSREG          "msf2-sysreg"
65*8063396bSEduardo Habkost OBJECT_DECLARE_SIMPLE_TYPE(MSF2SysregState, MSF2_SYSREG)
660ee1e1f4SSubbaraya Sundeep 
67db1015e9SEduardo Habkost struct MSF2SysregState {
680ee1e1f4SSubbaraya Sundeep     SysBusDevice parent_obj;
690ee1e1f4SSubbaraya Sundeep 
700ee1e1f4SSubbaraya Sundeep     MemoryRegion iomem;
710ee1e1f4SSubbaraya Sundeep 
720ee1e1f4SSubbaraya Sundeep     uint8_t apb0div;
730ee1e1f4SSubbaraya Sundeep     uint8_t apb1div;
740ee1e1f4SSubbaraya Sundeep 
750ee1e1f4SSubbaraya Sundeep     uint32_t regs[MSF2_SYSREG_MMIO_SIZE / 4];
76db1015e9SEduardo Habkost };
770ee1e1f4SSubbaraya Sundeep 
780ee1e1f4SSubbaraya Sundeep #endif /* HW_MSF2_SYSREG_H */
79