@samitouri / QOSamiQemu / commits / 956dd79e3a

hw/arm/fsl-imx8mm: Add Clock Control Module IP to iMX8MM

Add the Clock Control Module (CCM) device to i.MX8MM SoC. The CCM implementation is shared with i.MX8MP as the register layout is identical between the two variants.Hence iMX8MM will be using the source of iMX8MP CCM. Reviewed-by: Bernhard Beschow <shentey@gmail.com> Signed-off-by: Gaurav Sharma <gaurav.sharma_7@nxp.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Gaurav Sharma committed Apr 21, 2026 at 12:22 UTC 956dd79e3a35b1ec7c1d589196c1ec51970d754a
3 files changed +13
hw/arm/Kconfig
+1
@@ -621,6 +621,7 @@ config FSL_IMX8MM
621 bool
622 select ARM_GIC
623 select FSL_IMX8MP_ANALOG
624 + select FSL_IMX8MP_CCM
625 select IMX
626
627 config FSL_IMX8MM_EVK
hw/arm/fsl-imx8mm.c
+10
@@ -169,6 +169,8 @@ static void fsl_imx8mm_init(Object *obj)
169
170 object_initialize_child(obj, "gic", &s->gic, gicv3_class_name());
171
172 + object_initialize_child(obj, "ccm", &s->ccm, TYPE_IMX8MP_CCM);
173 +
174 object_initialize_child(obj, "analog", &s->analog, TYPE_IMX8MP_ANALOG);
175
176 for (i = 0; i < FSL_IMX8MM_NUM_UARTS; i++) {
@@ -305,6 +307,13 @@ static void fsl_imx8mm_realize(DeviceState *dev, Error **errp)
307 }
308 }
309
310 + /* CCM */
311 + if (!sysbus_realize(SYS_BUS_DEVICE(&s->ccm), errp)) {
312 + return;
313 + }
314 + sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0,
315 + fsl_imx8mm_memmap[FSL_IMX8MM_CCM].addr);
316 +
317 /* Analog */
318 object_property_set_uint(OBJECT(&s->analog), "arm-pll-fdiv-ctl0-reset",
319 0x000fa030, &error_abort);
@@ -350,6 +359,7 @@ static void fsl_imx8mm_realize(DeviceState *dev, Error **errp)
359 for (i = 0; i < ARRAY_SIZE(fsl_imx8mm_memmap); i++) {
360 switch (i) {
361 case FSL_IMX8MM_ANA_PLL:
362 + case FSL_IMX8MM_CCM:
363 case FSL_IMX8MM_GIC_DIST:
364 case FSL_IMX8MM_GIC_REDIST:
365 case FSL_IMX8MM_RAM:
include/hw/arm/fsl-imx8mm.h
+2
@@ -14,6 +14,7 @@
14 #include "hw/char/imx_serial.h"
15 #include "hw/intc/arm_gicv3_common.h"
16 #include "hw/misc/imx8mp_analog.h"
17 +#include "hw/misc/imx8mp_ccm.h"
18 #include "qom/object.h"
19 #include "qemu/units.h"
20
@@ -34,6 +35,7 @@ struct FslImx8mmState {
35
36 ARMCPU cpu[FSL_IMX8MM_NUM_CPUS];
37 GICv3State gic;
38 + IMX8MPCCMState ccm;
39 IMX8MPAnalogState analog;
40 IMXSerialState uart[FSL_IMX8MM_NUM_UARTS];
41 MemoryRegion ocram;