Lines Matching +full:reset +full:- +full:snvs +full:- +full:powered

4  * Based on hw/arm/fsl-imx6.c
8 * SPDX-License-Identifier: GPL-2.0-or-later
12 #include "exec/address-spaces.h"
14 #include "hw/arm/fsl-imx8mp.h"
19 #include "target/arm/cpu-qom.h"
58 /* AIPS-5 Begin */
80 /* AIPS-5 End */
82 /* AIPS-4 Begin */
98 /* AIPS-4 End */
102 /* AIPS-3 Begin */
132 /* AIPS-3 End */
134 /* AIPS-2 Begin */
149 /* AIPS-2 End */
151 /* AIPS-1 Begin */
178 /* AIPS-1 End */
198 for (i = 0; i < MIN(ms->smp.cpus, FSL_IMX8MP_NUM_CPUS); i++) { in fsl_imx8mp_init()
200 object_initialize_child(obj, name, &s->cpu[i], in fsl_imx8mp_init()
201 ARM_CPU_TYPE_NAME("cortex-a53")); in fsl_imx8mp_init()
204 object_initialize_child(obj, "gic", &s->gic, TYPE_ARM_GICV3); in fsl_imx8mp_init()
206 object_initialize_child(obj, "ccm", &s->ccm, TYPE_IMX8MP_CCM); in fsl_imx8mp_init()
208 object_initialize_child(obj, "analog", &s->analog, TYPE_IMX8MP_ANALOG); in fsl_imx8mp_init()
210 object_initialize_child(obj, "snvs", &s->snvs, TYPE_IMX7_SNVS); in fsl_imx8mp_init()
214 object_initialize_child(obj, name, &s->uart[i], TYPE_IMX_SERIAL); in fsl_imx8mp_init()
219 object_initialize_child(obj, name, &s->gpt[i], TYPE_IMX8MP_GPT); in fsl_imx8mp_init()
221 object_initialize_child(obj, "gpt5-gpt6-irq", &s->gpt5_gpt6_irq, in fsl_imx8mp_init()
226 object_initialize_child(obj, name, &s->i2c[i], TYPE_IMX_I2C); in fsl_imx8mp_init()
231 object_initialize_child(obj, name, &s->gpio[i], TYPE_IMX_GPIO); in fsl_imx8mp_init()
236 object_initialize_child(obj, name, &s->usdhc[i], TYPE_IMX_USDHC); in fsl_imx8mp_init()
241 object_initialize_child(obj, name, &s->usb[i], TYPE_USB_DWC3); in fsl_imx8mp_init()
246 object_initialize_child(obj, name, &s->spi[i], TYPE_IMX_SPI); in fsl_imx8mp_init()
251 object_initialize_child(obj, name, &s->wdt[i], TYPE_IMX2_WDT); in fsl_imx8mp_init()
254 object_initialize_child(obj, "eth0", &s->enet, TYPE_IMX_ENET); in fsl_imx8mp_init()
256 object_initialize_child(obj, "pcie", &s->pcie, TYPE_DESIGNWARE_PCIE_HOST); in fsl_imx8mp_init()
257 object_initialize_child(obj, "pcie_phy", &s->pcie_phy, in fsl_imx8mp_init()
265 DeviceState *gicdev = DEVICE(&s->gic); in fsl_imx8mp_realize()
268 if (ms->smp.cpus > FSL_IMX8MP_NUM_CPUS) { in fsl_imx8mp_realize()
270 TYPE_FSL_IMX8MP, FSL_IMX8MP_NUM_CPUS, ms->smp.cpus); in fsl_imx8mp_realize()
275 for (i = 0; i < ms->smp.cpus; i++) { in fsl_imx8mp_realize()
277 if (ms->smp.cpus > 1) { in fsl_imx8mp_realize()
278 object_property_set_int(OBJECT(&s->cpu[i]), "reset-cbar", in fsl_imx8mp_realize()
286 object_property_set_int(OBJECT(&s->cpu[i]), "cntfrq", 8000000, in fsl_imx8mp_realize()
291 * Secondary CPUs start in powered-down state (and can be in fsl_imx8mp_realize()
292 * powered up via the SRC system reset controller) in fsl_imx8mp_realize()
294 object_property_set_bool(OBJECT(&s->cpu[i]), "start-powered-off", in fsl_imx8mp_realize()
298 if (!qdev_realize(DEVICE(&s->cpu[i]), NULL, errp)) { in fsl_imx8mp_realize()
305 SysBusDevice *gicsbd = SYS_BUS_DEVICE(&s->gic); in fsl_imx8mp_realize()
308 qdev_prop_set_uint32(gicdev, "num-cpu", ms->smp.cpus); in fsl_imx8mp_realize()
309 qdev_prop_set_uint32(gicdev, "num-irq", in fsl_imx8mp_realize()
312 qlist_append_int(redist_region_count, ms->smp.cpus); in fsl_imx8mp_realize()
313 qdev_prop_set_array(gicdev, "redist-region-count", redist_region_count); in fsl_imx8mp_realize()
314 object_property_set_link(OBJECT(&s->gic), "sysmem", in fsl_imx8mp_realize()
327 for (i = 0; i < ms->smp.cpus; i++) { in fsl_imx8mp_realize()
328 DeviceState *cpudev = DEVICE(&s->cpu[i]); in fsl_imx8mp_realize()
349 qdev_connect_gpio_out_named(cpudev, "gicv3-maintenance-interrupt", in fsl_imx8mp_realize()
353 qdev_connect_gpio_out_named(cpudev, "pmu-interrupt", 0, irq); in fsl_imx8mp_realize()
357 sysbus_connect_irq(gicsbd, i + ms->smp.cpus, in fsl_imx8mp_realize()
363 if (!sysbus_realize(SYS_BUS_DEVICE(&s->ccm), errp)) { in fsl_imx8mp_realize()
366 sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccm), 0, in fsl_imx8mp_realize()
370 if (!sysbus_realize(SYS_BUS_DEVICE(&s->analog), errp)) { in fsl_imx8mp_realize()
373 sysbus_mmio_map(SYS_BUS_DEVICE(&s->analog), 0, in fsl_imx8mp_realize()
388 qdev_prop_set_chr(DEVICE(&s->uart[i]), "chardev", serial_hd(i)); in fsl_imx8mp_realize()
389 if (!sysbus_realize(SYS_BUS_DEVICE(&s->uart[i]), errp)) { in fsl_imx8mp_realize()
393 sysbus_mmio_map(SYS_BUS_DEVICE(&s->uart[i]), 0, serial_table[i].addr); in fsl_imx8mp_realize()
394 sysbus_connect_irq(SYS_BUS_DEVICE(&s->uart[i]), 0, in fsl_imx8mp_realize()
399 object_property_set_int(OBJECT(&s->gpt5_gpt6_irq), "num-lines", 2, in fsl_imx8mp_realize()
401 if (!qdev_realize(DEVICE(&s->gpt5_gpt6_irq), NULL, errp)) { in fsl_imx8mp_realize()
405 qdev_connect_gpio_out(DEVICE(&s->gpt5_gpt6_irq), 0, in fsl_imx8mp_realize()
418 s->gpt[i].ccm = IMX_CCM(&s->ccm); in fsl_imx8mp_realize()
420 if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpt[i]), errp)) { in fsl_imx8mp_realize()
424 sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpt[i]), 0, gpt_addrs[i]); in fsl_imx8mp_realize()
426 if (i < FSL_IMX8MP_NUM_GPTS - 2) { in fsl_imx8mp_realize()
427 static const unsigned int gpt_irqs[FSL_IMX8MP_NUM_GPTS - 2] = { in fsl_imx8mp_realize()
434 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpt[i]), 0, in fsl_imx8mp_realize()
437 int irq = i - FSL_IMX8MP_NUM_GPTS + 2; in fsl_imx8mp_realize()
439 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpt[i]), 0, in fsl_imx8mp_realize()
440 qdev_get_gpio_in(DEVICE(&s->gpt5_gpt6_irq), irq)); in fsl_imx8mp_realize()
458 if (!sysbus_realize(SYS_BUS_DEVICE(&s->i2c[i]), errp)) { in fsl_imx8mp_realize()
462 sysbus_mmio_map(SYS_BUS_DEVICE(&s->i2c[i]), 0, i2c_table[i].addr); in fsl_imx8mp_realize()
463 sysbus_connect_irq(SYS_BUS_DEVICE(&s->i2c[i]), 0, in fsl_imx8mp_realize()
501 object_property_set_bool(OBJECT(&s->gpio[i]), "has-edge-sel", true, in fsl_imx8mp_realize()
503 object_property_set_bool(OBJECT(&s->gpio[i]), "has-upper-pin-irq", in fsl_imx8mp_realize()
505 if (!sysbus_realize(SYS_BUS_DEVICE(&s->gpio[i]), errp)) { in fsl_imx8mp_realize()
509 sysbus_mmio_map(SYS_BUS_DEVICE(&s->gpio[i]), 0, gpio_table[i].addr); in fsl_imx8mp_realize()
510 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio[i]), 0, in fsl_imx8mp_realize()
512 sysbus_connect_irq(SYS_BUS_DEVICE(&s->gpio[i]), 1, in fsl_imx8mp_realize()
527 if (!sysbus_realize(SYS_BUS_DEVICE(&s->usdhc[i]), errp)) { in fsl_imx8mp_realize()
531 sysbus_mmio_map(SYS_BUS_DEVICE(&s->usdhc[i]), 0, usdhc_table[i].addr); in fsl_imx8mp_realize()
532 sysbus_connect_irq(SYS_BUS_DEVICE(&s->usdhc[i]), 0, in fsl_imx8mp_realize()
546 qdev_prop_set_uint32(DEVICE(&s->usb[i].sysbus_xhci), "p2", 1); in fsl_imx8mp_realize()
547 qdev_prop_set_uint32(DEVICE(&s->usb[i].sysbus_xhci), "p3", 1); in fsl_imx8mp_realize()
548 qdev_prop_set_uint32(DEVICE(&s->usb[i].sysbus_xhci), "slots", 2); in fsl_imx8mp_realize()
549 if (!sysbus_realize(SYS_BUS_DEVICE(&s->usb[i]), errp)) { in fsl_imx8mp_realize()
552 sysbus_mmio_map(SYS_BUS_DEVICE(&s->usb[i]), 0, usb_table[i].addr); in fsl_imx8mp_realize()
553 sysbus_connect_irq(SYS_BUS_DEVICE(&s->usb[i].sysbus_xhci), 0, in fsl_imx8mp_realize()
568 if (!sysbus_realize(SYS_BUS_DEVICE(&s->spi[i]), errp)) { in fsl_imx8mp_realize()
572 sysbus_mmio_map(SYS_BUS_DEVICE(&s->spi[i]), 0, spi_table[i].addr); in fsl_imx8mp_realize()
573 sysbus_connect_irq(SYS_BUS_DEVICE(&s->spi[i]), 0, in fsl_imx8mp_realize()
578 object_property_set_uint(OBJECT(&s->enet), "phy-num", s->phy_num, in fsl_imx8mp_realize()
580 object_property_set_uint(OBJECT(&s->enet), "tx-ring-num", 3, &error_abort); in fsl_imx8mp_realize()
581 qemu_configure_nic_device(DEVICE(&s->enet), true, NULL); in fsl_imx8mp_realize()
582 if (!sysbus_realize(SYS_BUS_DEVICE(&s->enet), errp)) { in fsl_imx8mp_realize()
585 sysbus_mmio_map(SYS_BUS_DEVICE(&s->enet), 0, in fsl_imx8mp_realize()
587 sysbus_connect_irq(SYS_BUS_DEVICE(&s->enet), 0, in fsl_imx8mp_realize()
589 sysbus_connect_irq(SYS_BUS_DEVICE(&s->enet), 1, in fsl_imx8mp_realize()
592 /* SNVS */ in fsl_imx8mp_realize()
593 if (!sysbus_realize(SYS_BUS_DEVICE(&s->snvs), errp)) { in fsl_imx8mp_realize()
596 sysbus_mmio_map(SYS_BUS_DEVICE(&s->snvs), 0, in fsl_imx8mp_realize()
610 object_property_set_bool(OBJECT(&s->wdt[i]), "pretimeout-support", in fsl_imx8mp_realize()
612 if (!sysbus_realize(SYS_BUS_DEVICE(&s->wdt[i]), errp)) { in fsl_imx8mp_realize()
616 sysbus_mmio_map(SYS_BUS_DEVICE(&s->wdt[i]), 0, wdog_table[i].addr); in fsl_imx8mp_realize()
617 sysbus_connect_irq(SYS_BUS_DEVICE(&s->wdt[i]), 0, in fsl_imx8mp_realize()
622 if (!sysbus_realize(SYS_BUS_DEVICE(&s->pcie), errp)) { in fsl_imx8mp_realize()
625 sysbus_mmio_map(SYS_BUS_DEVICE(&s->pcie), 0, in fsl_imx8mp_realize()
628 sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 0, in fsl_imx8mp_realize()
630 sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 1, in fsl_imx8mp_realize()
632 sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 2, in fsl_imx8mp_realize()
634 sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 3, in fsl_imx8mp_realize()
636 sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 4, in fsl_imx8mp_realize()
639 if (!sysbus_realize(SYS_BUS_DEVICE(&s->pcie_phy), errp)) { in fsl_imx8mp_realize()
642 sysbus_mmio_map(SYS_BUS_DEVICE(&s->pcie_phy), 0, in fsl_imx8mp_realize()
645 /* On-Chip RAM */ in fsl_imx8mp_realize()
646 if (!memory_region_init_ram(&s->ocram, NULL, "imx8mp.ocram", in fsl_imx8mp_realize()
653 &s->ocram); in fsl_imx8mp_realize()
688 DEFINE_PROP_UINT32("fec1-phy-num", FslImx8mpState, phy_num, 0),
689 DEFINE_PROP_BOOL("fec1-phy-connected", FslImx8mpState, phy_connected, true),
697 dc->realize = fsl_imx8mp_realize; in fsl_imx8mp_class_init()
699 dc->desc = "i.MX 8M Plus SoC"; in fsl_imx8mp_class_init()