1*423ec28bSStrahinja Jankovic /* 2*423ec28bSStrahinja Jankovic * Allwinner A10 Clock Control Module emulation 3*423ec28bSStrahinja Jankovic * 4*423ec28bSStrahinja Jankovic * Copyright (C) 2022 Strahinja Jankovic <strahinja.p.jankovic@gmail.com> 5*423ec28bSStrahinja Jankovic * 6*423ec28bSStrahinja Jankovic * This file is derived from Allwinner H3 CCU, 7*423ec28bSStrahinja Jankovic * by Niek Linnenbank. 8*423ec28bSStrahinja Jankovic * 9*423ec28bSStrahinja Jankovic * This program is free software: you can redistribute it and/or modify 10*423ec28bSStrahinja Jankovic * it under the terms of the GNU General Public License as published by 11*423ec28bSStrahinja Jankovic * the Free Software Foundation, either version 2 of the License, or 12*423ec28bSStrahinja Jankovic * (at your option) any later version. 13*423ec28bSStrahinja Jankovic * 14*423ec28bSStrahinja Jankovic * This program is distributed in the hope that it will be useful, 15*423ec28bSStrahinja Jankovic * but WITHOUT ANY WARRANTY; without even the implied warranty of 16*423ec28bSStrahinja Jankovic * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 17*423ec28bSStrahinja Jankovic * GNU General Public License for more details. 18*423ec28bSStrahinja Jankovic * 19*423ec28bSStrahinja Jankovic * You should have received a copy of the GNU General Public License 20*423ec28bSStrahinja Jankovic * along with this program. If not, see <http://www.gnu.org/licenses/>. 21*423ec28bSStrahinja Jankovic */ 22*423ec28bSStrahinja Jankovic 23*423ec28bSStrahinja Jankovic #ifndef HW_MISC_ALLWINNER_A10_CCM_H 24*423ec28bSStrahinja Jankovic #define HW_MISC_ALLWINNER_A10_CCM_H 25*423ec28bSStrahinja Jankovic 26*423ec28bSStrahinja Jankovic #include "qom/object.h" 27*423ec28bSStrahinja Jankovic #include "hw/sysbus.h" 28*423ec28bSStrahinja Jankovic 29*423ec28bSStrahinja Jankovic /** 30*423ec28bSStrahinja Jankovic * @name Constants 31*423ec28bSStrahinja Jankovic * @{ 32*423ec28bSStrahinja Jankovic */ 33*423ec28bSStrahinja Jankovic 34*423ec28bSStrahinja Jankovic /** Size of register I/O address space used by CCM device */ 35*423ec28bSStrahinja Jankovic #define AW_A10_CCM_IOSIZE (0x400) 36*423ec28bSStrahinja Jankovic 37*423ec28bSStrahinja Jankovic /** Total number of known registers */ 38*423ec28bSStrahinja Jankovic #define AW_A10_CCM_REGS_NUM (AW_A10_CCM_IOSIZE / sizeof(uint32_t)) 39*423ec28bSStrahinja Jankovic 40*423ec28bSStrahinja Jankovic /** @} */ 41*423ec28bSStrahinja Jankovic 42*423ec28bSStrahinja Jankovic /** 43*423ec28bSStrahinja Jankovic * @name Object model 44*423ec28bSStrahinja Jankovic * @{ 45*423ec28bSStrahinja Jankovic */ 46*423ec28bSStrahinja Jankovic 47*423ec28bSStrahinja Jankovic #define TYPE_AW_A10_CCM "allwinner-a10-ccm" 48*423ec28bSStrahinja Jankovic OBJECT_DECLARE_SIMPLE_TYPE(AwA10ClockCtlState, AW_A10_CCM) 49*423ec28bSStrahinja Jankovic 50*423ec28bSStrahinja Jankovic /** @} */ 51*423ec28bSStrahinja Jankovic 52*423ec28bSStrahinja Jankovic /** 53*423ec28bSStrahinja Jankovic * Allwinner A10 CCM object instance state. 54*423ec28bSStrahinja Jankovic */ 55*423ec28bSStrahinja Jankovic struct AwA10ClockCtlState { 56*423ec28bSStrahinja Jankovic /*< private >*/ 57*423ec28bSStrahinja Jankovic SysBusDevice parent_obj; 58*423ec28bSStrahinja Jankovic /*< public >*/ 59*423ec28bSStrahinja Jankovic 60*423ec28bSStrahinja Jankovic /** Maps I/O registers in physical memory */ 61*423ec28bSStrahinja Jankovic MemoryRegion iomem; 62*423ec28bSStrahinja Jankovic 63*423ec28bSStrahinja Jankovic /** Array of hardware registers */ 64*423ec28bSStrahinja Jankovic uint32_t regs[AW_A10_CCM_REGS_NUM]; 65*423ec28bSStrahinja Jankovic }; 66*423ec28bSStrahinja Jankovic 67*423ec28bSStrahinja Jankovic #endif /* HW_MISC_ALLWINNER_H3_CCU_H */ 68