@samitouri / QOSamiQemu / commits / 4cce7fe672

hw/arm/fsl-imx6ul: Wire in the LCDIF device model

Instantiate LCDIF as a child object of the i.MX6UL SoC in init and realize it in the SoC realize path before MMIO/IRQ hookup. Also make FSL_IMX6UL select CONFIG_IMX6UL_LCDIF and map the LCDIF region with a 16 KiB size to match the SoC memory map. Signed-off-by: Yucai Liu <1486344514@qq.com> Message-id: 20260412110240.93116-3-yangyanglan718@gmail.com Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>

Yucai Liu committed Apr 12, 2026 at 19:02 UTC 4cce7fe672905b362f9e9bd2a805ded9f640b673
3 files changed +14 -3
hw/arm/Kconfig
+1
@@ -656,6 +656,7 @@ config FSL_IMX6UL
656 imply I2C_DEVICES
657 select A15MPCORE
658 select IMX
659 + select IMX6UL_LCDIF
660 select IMX_FEC
661 select IMX_I2C
662 select IMX_USBPHY
hw/arm/fsl-imx6ul.c
+10 -2
@@ -19,6 +19,7 @@
19 #include "qemu/osdep.h"
20 #include "qapi/error.h"
21 #include "hw/arm/fsl-imx6ul.h"
22 +#include "hw/display/imx6ul_lcdif.h"
23 #include "hw/misc/unimp.h"
24 #include "hw/usb/imx-usb-phy.h"
25 #include "hw/core/boards.h"
@@ -136,6 +137,11 @@ static void fsl_imx6ul_init(Object *obj)
137 object_initialize_child(obj, name, &s->usb[i], TYPE_CHIPIDEA);
138 }
139
140 + /*
141 + * LCDIF
142 + */
143 + object_initialize_child(obj, "lcdif", &s->lcdif, TYPE_IMX6UL_LCDIF);
144 +
145 /*
146 * SDHCIs
147 */
@@ -656,8 +662,10 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
662 /*
663 * LCD
664 */
659 - create_unimplemented_device("lcdif", FSL_IMX6UL_LCDIF_ADDR,
660 - FSL_IMX6UL_LCDIF_SIZE);
665 + sysbus_realize(SYS_BUS_DEVICE(&s->lcdif), &error_abort);
666 + sysbus_mmio_map(SYS_BUS_DEVICE(&s->lcdif), 0, FSL_IMX6UL_LCDIF_ADDR);
667 + sysbus_connect_irq(SYS_BUS_DEVICE(&s->lcdif), 0,
668 + qdev_get_gpio_in(gic, FSL_IMX6UL_LCDIF_IRQ));
669
670 /*
671 * CSU
include/hw/arm/fsl-imx6ul.h
+3 -1
@@ -33,6 +33,7 @@
33 #include "hw/net/imx_fec.h"
34 #include "hw/usb/chipidea.h"
35 #include "hw/usb/imx-usb-phy.h"
36 +#include "hw/display/imx6ul_lcdif.h"
37 #include "system/memory.h"
38 #include "target/arm/cpu.h"
39 #include "qom/object.h"
@@ -84,6 +85,7 @@ struct FslIMX6ULState {
85 IMX2WdtState wdt[FSL_IMX6UL_NUM_WDTS];
86 IMXUSBPHYState usbphy[FSL_IMX6UL_NUM_USB_PHYS];
87 ChipideaState usb[FSL_IMX6UL_NUM_USBS];
88 + IMX6ULLCDIFState lcdif;
89 MemoryRegion rom;
90 MemoryRegion caam;
91 MemoryRegion ocram;
@@ -143,7 +145,7 @@ enum FslIMX6ULMemoryMap {
145 FSL_IMX6UL_PXP_SIZE = (16 * KiB),
146
147 FSL_IMX6UL_LCDIF_ADDR = 0x021C8000,
146 - FSL_IMX6UL_LCDIF_SIZE = 0x100,
148 + FSL_IMX6UL_LCDIF_SIZE = (16 * KiB),
149
150 FSL_IMX6UL_CSI_ADDR = 0x021C4000,
151 FSL_IMX6UL_CSI_SIZE = 0x100,