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>
This commit is contained in:
Yucai Liu
2026-04-12 19:02:40 +08:00
committed by Peter Maydell
parent 5ef60a3787
commit 4cce7fe672
3 changed files with 14 additions and 3 deletions

View File

@@ -656,6 +656,7 @@ config FSL_IMX6UL
imply I2C_DEVICES
select A15MPCORE
select IMX
select IMX6UL_LCDIF
select IMX_FEC
select IMX_I2C
select IMX_USBPHY

View File

@@ -19,6 +19,7 @@
#include "qemu/osdep.h"
#include "qapi/error.h"
#include "hw/arm/fsl-imx6ul.h"
#include "hw/display/imx6ul_lcdif.h"
#include "hw/misc/unimp.h"
#include "hw/usb/imx-usb-phy.h"
#include "hw/core/boards.h"
@@ -136,6 +137,11 @@ static void fsl_imx6ul_init(Object *obj)
object_initialize_child(obj, name, &s->usb[i], TYPE_CHIPIDEA);
}
/*
* LCDIF
*/
object_initialize_child(obj, "lcdif", &s->lcdif, TYPE_IMX6UL_LCDIF);
/*
* SDHCIs
*/
@@ -656,8 +662,10 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
/*
* LCD
*/
create_unimplemented_device("lcdif", FSL_IMX6UL_LCDIF_ADDR,
FSL_IMX6UL_LCDIF_SIZE);
sysbus_realize(SYS_BUS_DEVICE(&s->lcdif), &error_abort);
sysbus_mmio_map(SYS_BUS_DEVICE(&s->lcdif), 0, FSL_IMX6UL_LCDIF_ADDR);
sysbus_connect_irq(SYS_BUS_DEVICE(&s->lcdif), 0,
qdev_get_gpio_in(gic, FSL_IMX6UL_LCDIF_IRQ));
/*
* CSU

View File

@@ -33,6 +33,7 @@
#include "hw/net/imx_fec.h"
#include "hw/usb/chipidea.h"
#include "hw/usb/imx-usb-phy.h"
#include "hw/display/imx6ul_lcdif.h"
#include "system/memory.h"
#include "target/arm/cpu.h"
#include "qom/object.h"
@@ -84,6 +85,7 @@ struct FslIMX6ULState {
IMX2WdtState wdt[FSL_IMX6UL_NUM_WDTS];
IMXUSBPHYState usbphy[FSL_IMX6UL_NUM_USB_PHYS];
ChipideaState usb[FSL_IMX6UL_NUM_USBS];
IMX6ULLCDIFState lcdif;
MemoryRegion rom;
MemoryRegion caam;
MemoryRegion ocram;
@@ -143,7 +145,7 @@ enum FslIMX6ULMemoryMap {
FSL_IMX6UL_PXP_SIZE = (16 * KiB),
FSL_IMX6UL_LCDIF_ADDR = 0x021C8000,
FSL_IMX6UL_LCDIF_SIZE = 0x100,
FSL_IMX6UL_LCDIF_SIZE = (16 * KiB),
FSL_IMX6UL_CSI_ADDR = 0x021C4000,
FSL_IMX6UL_CSI_SIZE = 0x100,