On Tue, Nov 23, 2021 at 10:34:27AM +0000, Francisco Iglesias wrote: > Connect Micron Xccela mt35xu01g flashes to the OSPI flash memory > controller.
Reviewed-by: Edgar E. Iglesias <edgar.igles...@xilinx.com> > > Signed-off-by: Francisco Iglesias <francisco.igles...@xilinx.com> > --- > hw/arm/xlnx-versal-virt.c | 23 +++++++++++++++++++++++ > 1 file changed, 23 insertions(+) > > diff --git a/hw/arm/xlnx-versal-virt.c b/hw/arm/xlnx-versal-virt.c > index d2f55e29b6..47f5914e5d 100644 > --- a/hw/arm/xlnx-versal-virt.c > +++ b/hw/arm/xlnx-versal-virt.c > @@ -25,6 +25,8 @@ > #define TYPE_XLNX_VERSAL_VIRT_MACHINE MACHINE_TYPE_NAME("xlnx-versal-virt") > OBJECT_DECLARE_SIMPLE_TYPE(VersalVirt, XLNX_VERSAL_VIRT_MACHINE) > > +#define XLNX_VERSAL_NUM_OSPI_FLASH 4 > + > struct VersalVirt { > MachineState parent_obj; > > @@ -690,6 +692,27 @@ static void versal_virt_init(MachineState *machine) > exit(EXIT_FAILURE); > } > } > + > + for (i = 0; i < XLNX_VERSAL_NUM_OSPI_FLASH; i++) { > + BusState *spi_bus; > + DeviceState *flash_dev; > + qemu_irq cs_line; > + DriveInfo *dinfo = drive_get(IF_MTD, 0, i); > + > + spi_bus = qdev_get_child_bus(DEVICE(&s->soc.pmc.iou.ospi), "spi0"); > + > + flash_dev = qdev_new("mt35xu01g"); > + if (dinfo) { > + qdev_prop_set_drive_err(flash_dev, "drive", > + blk_by_legacy_dinfo(dinfo), > &error_fatal); > + } > + qdev_realize_and_unref(flash_dev, spi_bus, &error_fatal); > + > + cs_line = qdev_get_gpio_in_named(flash_dev, SSI_GPIO_CS, 0); > + > + sysbus_connect_irq(SYS_BUS_DEVICE(&s->soc.pmc.iou.ospi), > + i + 1, cs_line); > + } > } > > static void versal_virt_machine_instance_init(Object *obj) > -- > 2.11.0 >