1 /* 2 * Copyright (c) 2025 Bernhard Beschow <shentey@gmail.com> 3 * 4 * i.MX8MP ANALOG IP block emulation code 5 * 6 * SPDX-License-Identifier: GPL-2.0-or-later 7 */ 8 9 #ifndef IMX8MP_ANALOG_H 10 #define IMX8MP_ANALOG_H 11 12 #include "qom/object.h" 13 #include "hw/sysbus.h" 14 15 enum IMX8MPAnalogRegisters { 16 ANALOG_AUDIO_PLL1_GEN_CTRL = 0x000 / 4, 17 ANALOG_AUDIO_PLL1_FDIV_CTL0 = 0x004 / 4, 18 ANALOG_AUDIO_PLL1_FDIV_CTL1 = 0x008 / 4, 19 ANALOG_AUDIO_PLL1_SSCG_CTRL = 0x00c / 4, 20 ANALOG_AUDIO_PLL1_MNIT_CTRL = 0x010 / 4, 21 ANALOG_AUDIO_PLL2_GEN_CTRL = 0x014 / 4, 22 ANALOG_AUDIO_PLL2_FDIV_CTL0 = 0x018 / 4, 23 ANALOG_AUDIO_PLL2_FDIV_CTL1 = 0x01c / 4, 24 ANALOG_AUDIO_PLL2_SSCG_CTRL = 0x020 / 4, 25 ANALOG_AUDIO_PLL2_MNIT_CTRL = 0x024 / 4, 26 ANALOG_VIDEO_PLL1_GEN_CTRL = 0x028 / 4, 27 ANALOG_VIDEO_PLL1_FDIV_CTL0 = 0x02c / 4, 28 ANALOG_VIDEO_PLL1_FDIV_CTL1 = 0x030 / 4, 29 ANALOG_VIDEO_PLL1_SSCG_CTRL = 0x034 / 4, 30 ANALOG_VIDEO_PLL1_MNIT_CTRL = 0x038 / 4, 31 ANALOG_DRAM_PLL_GEN_CTRL = 0x050 / 4, 32 ANALOG_DRAM_PLL_FDIV_CTL0 = 0x054 / 4, 33 ANALOG_DRAM_PLL_FDIV_CTL1 = 0x058 / 4, 34 ANALOG_DRAM_PLL_SSCG_CTRL = 0x05c / 4, 35 ANALOG_DRAM_PLL_MNIT_CTRL = 0x060 / 4, 36 ANALOG_GPU_PLL_GEN_CTRL = 0x064 / 4, 37 ANALOG_GPU_PLL_FDIV_CTL0 = 0x068 / 4, 38 ANALOG_GPU_PLL_LOCKD_CTRL = 0x06c / 4, 39 ANALOG_GPU_PLL_MNIT_CTRL = 0x070 / 4, 40 ANALOG_VPU_PLL_GEN_CTRL = 0x074 / 4, 41 ANALOG_VPU_PLL_FDIV_CTL0 = 0x078 / 4, 42 ANALOG_VPU_PLL_LOCKD_CTRL = 0x07c / 4, 43 ANALOG_VPU_PLL_MNIT_CTRL = 0x080 / 4, 44 ANALOG_ARM_PLL_GEN_CTRL = 0x084 / 4, 45 ANALOG_ARM_PLL_FDIV_CTL0 = 0x088 / 4, 46 ANALOG_ARM_PLL_LOCKD_CTRL = 0x08c / 4, 47 ANALOG_ARM_PLL_MNIT_CTRL = 0x090 / 4, 48 ANALOG_SYS_PLL1_GEN_CTRL = 0x094 / 4, 49 ANALOG_SYS_PLL1_FDIV_CTL0 = 0x098 / 4, 50 ANALOG_SYS_PLL1_LOCKD_CTRL = 0x09c / 4, 51 ANALOG_SYS_PLL1_MNIT_CTRL = 0x100 / 4, 52 ANALOG_SYS_PLL2_GEN_CTRL = 0x104 / 4, 53 ANALOG_SYS_PLL2_FDIV_CTL0 = 0x108 / 4, 54 ANALOG_SYS_PLL2_LOCKD_CTRL = 0x10c / 4, 55 ANALOG_SYS_PLL2_MNIT_CTRL = 0x110 / 4, 56 ANALOG_SYS_PLL3_GEN_CTRL = 0x114 / 4, 57 ANALOG_SYS_PLL3_FDIV_CTL0 = 0x118 / 4, 58 ANALOG_SYS_PLL3_LOCKD_CTRL = 0x11c / 4, 59 ANALOG_SYS_PLL3_MNIT_CTRL = 0x120 / 4, 60 ANALOG_OSC_MISC_CFG = 0x124 / 4, 61 ANALOG_ANAMIX_PLL_MNIT_CTL = 0x128 / 4, 62 63 ANALOG_DIGPROG = 0x800 / 4, 64 ANALOG_MAX, 65 }; 66 67 #define TYPE_IMX8MP_ANALOG "imx8mp.analog" 68 OBJECT_DECLARE_SIMPLE_TYPE(IMX8MPAnalogState, IMX8MP_ANALOG) 69 70 struct IMX8MPAnalogState { 71 SysBusDevice parent_obj; 72 73 struct { 74 MemoryRegion container; 75 MemoryRegion analog; 76 } mmio; 77 78 uint32_t analog[ANALOG_MAX]; 79 }; 80 81 #endif /* IMX8MP_ANALOG_H */ 82