mirror of
https://github.com/izzy2lost/xemu.git
synced 2026-07-06 00:20:22 -07:00
Merge tag 'pull-target-arm-20240126' of https://git.linaro.org/people/pmaydell/qemu-arm into staging
target-arm queue: * Fix VNCR fault detection logic * Fix A64 scalar SQSHRN and SQRSHRN * Fix incorrect aa64_tidcp1 feature check * hw/arm/virt.c: Remove newline from error_report() string * hw/arm/musicpal: Convert to qemu_add_kbd_event_handler() * hw/arm/allwinner-a10: Unconditionally map the USB Host controllers * hw/arm/nseries: Unconditionally map the TUSB6010 USB Host controller * hw/arm: Add EHCI/OHCI controllers to Allwinner R40 and Bananapi board * hw/arm: Add AHCI/SATA controller to Allwinner R40 and Bananapi board * hw/arm: Add watchdog timer to Allwinner H40 and Bananapi board * arm: various include header cleanups * cleanups to allow some files to be built only once * fsl-imx6ul: Add various missing unimplemented devices * docs/system/arm/virt.rst: Add note on CPU features off by default * hw/char/imx_serial: Implement receive FIFO and ageing timer * target/xtensa: fix OOB TLB entry access * bswap.h: Fix const_le64() macro * hw/arm: add PCIe to Freescale i.MX6 # -----BEGIN PGP SIGNATURE----- # # iQJNBAABCAA3FiEE4aXFk81BneKOgxXPPCUl7RQ2DN4FAmWzwpsZHHBldGVyLm1h # eWRlbGxAbGluYXJvLm9yZwAKCRA8JSXtFDYM3oTVD/4jM7ttKlXxtWsJ/cKDL5Im # uMmDECPrdK2qaNpONfV/YC3WadM6bSgB8OQd2YlI67DLgl3Hfaa+GnQsZhEgZ3lC # VECOTg5OKwwJY+Ac86t1GJa483wDEQ6NL08oLN94n9Ub/9G0S3oWpmE4bgof7PzW # rbLDDpKP+W5NfkqMfA5piV7N6mFHvg9wqFX//quqySIiu8NesKV9LmlP/FyNDU/s # 8ZeSqo/tq/IHr9IeYUtOoxVwYUOPuNKwD+vwy1taiXgjvVtq2URrCrlc4+KCWJsj # VUBSXdY2boqK31KFZ9NP9kJhIS5gmzgnK8YrHX6sgSbh+IybZUv+y/4eSO/LDYIi # r2VQF6oTtkmcIxUqAI6ZAehzZUIrB22QItUN8rg0slKBM8e/xHYaEBY8APKCLcvE # h59DLq1rPZG3Aie/h3/RjTfT2kI83PiE1mDGbhKf9G8UfXHEH8Eabd0g66UWfzlK # 67o7bwwzwXgoGk2hgMY/yobB3pF5YCly/a3aN/aLEj387y8sNaT1ASR9LETj7TC3 # xOhn5f8G6OFKMVI3K8Sco8ILP15LELprAW2keL4jn+4y3Hfq5yC984yOSnlM0wug # wWRvEr7U1ZiEbDaOvoa0beuYpeq1sm4OZ5yGJxGy3IuQ8pZpkHVTrBxw/NCNQnos # fK5czVTGqvvmPXgPsQQm1A== # =vYTy # -----END PGP SIGNATURE----- # gpg: Signature made Fri 26 Jan 2024 14:32:59 GMT # gpg: using RSA key E1A5C593CD419DE28E8315CF3C2525ED14360CDE # gpg: issuer "peter.maydell@linaro.org" # gpg: Good signature from "Peter Maydell <peter.maydell@linaro.org>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@gmail.com>" [ultimate] # gpg: aka "Peter Maydell <pmaydell@chiark.greenend.org.uk>" [ultimate] # gpg: aka "Peter Maydell <peter@archaic.org.uk>" [ultimate] # Primary key fingerprint: E1A5 C593 CD41 9DE2 8E83 15CF 3C25 25ED 1436 0CDE * tag 'pull-target-arm-20240126' of https://git.linaro.org/people/pmaydell/qemu-arm: (36 commits) hw/arm: add PCIe to Freescale i.MX6 target/arm: Fix incorrect aa64_tidcp1 feature check bswap.h: Fix const_le64() macro target/arm: Fix A64 scalar SQSHRN and SQRSHRN hw/char/imx_serial: Implement receive FIFO and ageing timer docs/system/arm/virt.rst: Add note on CPU features off by default fsl-imx6ul: Add various missing unimplemented devices hw/arm: Build various units only once target/arm: Move GTimer definitions to new 'gtimer.h' header target/arm: Move e2h_access() helper around target/arm: Move ARM_CPU_IRQ/FIQ definitions to 'cpu-qom.h' header hw/arm/armv7m: Make 'hw/intc/armv7m_nvic.h' a target agnostic header target/arm: Expose M-profile register bank index definitions hw/misc/xlnx-versal-crl: Build it only once hw/misc/xlnx-versal-crl: Include generic 'cpu-qom.h' instead of 'cpu.h' hw/cpu/a9mpcore: Build it only once target/arm: Declare ARM_CPU_TYPE_NAME/SUFFIX in 'cpu-qom.h' target/arm: Expose arm_cpu_mp_affinity() in 'multiprocessing.h' header target/arm: Create arm_cpu_mp_affinity target/arm: Rename arm_cpu_mp_affinity ... Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
@@ -22,7 +22,10 @@ The Banana Pi M2U machine supports the following devices:
|
||||
* EMAC ethernet
|
||||
* GMAC ethernet
|
||||
* Clock Control Unit
|
||||
* SATA
|
||||
* TWI (I2C)
|
||||
* USB 2.0
|
||||
* Hardware Watchdog
|
||||
|
||||
Limitations
|
||||
"""""""""""
|
||||
@@ -31,9 +34,7 @@ Currently, Banana Pi M2U does *not* support the following features:
|
||||
|
||||
- Graphical output via HDMI, GPU and/or the Display Engine
|
||||
- Audio output
|
||||
- Hardware Watchdog
|
||||
- Real Time Clock
|
||||
- USB 2.0 interfaces
|
||||
|
||||
Also see the 'unimplemented' array in the Allwinner R40 SoC module
|
||||
for a complete list of unimplemented I/O devices: ``./hw/arm/allwinner-r40.c``
|
||||
|
||||
@@ -69,6 +69,19 @@ Supported guest CPU types:
|
||||
Note that the default is ``cortex-a15``, so for an AArch64 guest you must
|
||||
specify a CPU type.
|
||||
|
||||
Also, please note that passing ``max`` CPU (i.e. ``-cpu max``) won't
|
||||
enable all the CPU features for a given ``virt`` machine. Where a CPU
|
||||
architectural feature requires support in both the CPU itself and in the
|
||||
wider system (e.g. the MTE feature), it may not be enabled by default,
|
||||
but instead requires a machine option to enable it.
|
||||
|
||||
For example, MTE support must be enabled with ``-machine virt,mte=on``,
|
||||
as well as by selecting an MTE-capable CPU (e.g., ``max``) with the
|
||||
``-cpu`` option.
|
||||
|
||||
See the machine-specific options below, or check them for a given machine
|
||||
by passing the ``help`` suboption, like: ``-machine virt-9.0,help``.
|
||||
|
||||
Graphics output is available, but unlike the x86 PC machine types
|
||||
there is no default display device enabled: you should select one from
|
||||
the Display devices section of "-device help". The recommended option
|
||||
|
||||
@@ -408,13 +408,17 @@ config ALLWINNER_H3
|
||||
config ALLWINNER_R40
|
||||
bool
|
||||
default y if TCG && ARM
|
||||
select AHCI
|
||||
select ALLWINNER_SRAMC
|
||||
select ALLWINNER_A10_PIT
|
||||
select ALLWINNER_WDT
|
||||
select AXP2XX_PMU
|
||||
select SERIAL
|
||||
select ARM_TIMER
|
||||
select ARM_GIC
|
||||
select UNIMP
|
||||
select USB_OHCI
|
||||
select USB_EHCI_SYSBUS
|
||||
select SD
|
||||
|
||||
config RASPI
|
||||
@@ -543,6 +547,7 @@ config FSL_IMX31
|
||||
|
||||
config FSL_IMX6
|
||||
bool
|
||||
imply PCIE_DEVICES
|
||||
imply I2C_DEVICES
|
||||
select A9MPCORE
|
||||
select IMX
|
||||
@@ -551,6 +556,7 @@ config FSL_IMX6
|
||||
select IMX_USBPHY
|
||||
select WDT_IMX2
|
||||
select PL310 # cache controller
|
||||
select PCI_EXPRESS_DESIGNWARE
|
||||
select SDHCI
|
||||
|
||||
config ASPEED_SOC
|
||||
|
||||
+21
-29
@@ -26,6 +26,7 @@
|
||||
#include "hw/boards.h"
|
||||
#include "hw/usb/hcd-ohci.h"
|
||||
#include "hw/loader.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define AW_A10_SRAM_A_BASE 0x00000000
|
||||
#define AW_A10_DRAMC_BASE 0x01c01000
|
||||
@@ -79,15 +80,10 @@ static void aw_a10_init(Object *obj)
|
||||
|
||||
object_initialize_child(obj, "i2c0", &s->i2c0, TYPE_AW_I2C);
|
||||
|
||||
if (machine_usb(current_machine)) {
|
||||
int i;
|
||||
|
||||
for (i = 0; i < AW_A10_NUM_USB; i++) {
|
||||
object_initialize_child(obj, "ehci[*]", &s->ehci[i],
|
||||
TYPE_PLATFORM_EHCI);
|
||||
object_initialize_child(obj, "ohci[*]", &s->ohci[i],
|
||||
TYPE_SYSBUS_OHCI);
|
||||
}
|
||||
for (size_t i = 0; i < AW_A10_NUM_USB; i++) {
|
||||
object_initialize_child(obj, "ehci[*]", &s->ehci[i],
|
||||
TYPE_PLATFORM_EHCI);
|
||||
object_initialize_child(obj, "ohci[*]", &s->ohci[i], TYPE_SYSBUS_OHCI);
|
||||
}
|
||||
|
||||
object_initialize_child(obj, "mmc0", &s->mmc0, TYPE_AW_SDHOST_SUN4I);
|
||||
@@ -165,28 +161,24 @@ static void aw_a10_realize(DeviceState *dev, Error **errp)
|
||||
qdev_get_gpio_in(dev, 1),
|
||||
115200, serial_hd(0), DEVICE_NATIVE_ENDIAN);
|
||||
|
||||
if (machine_usb(current_machine)) {
|
||||
int i;
|
||||
for (size_t i = 0; i < AW_A10_NUM_USB; i++) {
|
||||
g_autofree char *bus = g_strdup_printf("usb-bus.%zu", i);
|
||||
|
||||
for (i = 0; i < AW_A10_NUM_USB; i++) {
|
||||
g_autofree char *bus = g_strdup_printf("usb-bus.%d", i);
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), "companion-enable",
|
||||
true, &error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ehci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
AW_A10_EHCI_BASE + i * 0x8000);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
qdev_get_gpio_in(dev, 39 + i));
|
||||
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), "companion-enable",
|
||||
true, &error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ehci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
AW_A10_EHCI_BASE + i * 0x8000);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
qdev_get_gpio_in(dev, 39 + i));
|
||||
|
||||
object_property_set_str(OBJECT(&s->ohci[i]), "masterbus", bus,
|
||||
&error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ohci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
AW_A10_OHCI_BASE + i * 0x8000);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
qdev_get_gpio_in(dev, 64 + i));
|
||||
}
|
||||
object_property_set_str(OBJECT(&s->ohci[i]), "masterbus", bus,
|
||||
&error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ohci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
AW_A10_OHCI_BASE + i * 0x8000);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
qdev_get_gpio_in(dev, 64 + i));
|
||||
}
|
||||
|
||||
/* SD/MMC */
|
||||
|
||||
@@ -30,6 +30,8 @@
|
||||
#include "hw/loader.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "hw/arm/allwinner-h3.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
#include "target/arm/gtimer.h"
|
||||
|
||||
/* Memory map */
|
||||
const hwaddr allwinner_h3_memmap[] = {
|
||||
|
||||
+66
-3
@@ -23,6 +23,7 @@
|
||||
#include "qemu/bswap.h"
|
||||
#include "qemu/module.h"
|
||||
#include "qemu/units.h"
|
||||
#include "hw/boards.h"
|
||||
#include "hw/qdev-core.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "hw/char/serial.h"
|
||||
@@ -32,6 +33,8 @@
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "hw/arm/allwinner-r40.h"
|
||||
#include "hw/misc/allwinner-r40-dramc.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
#include "target/arm/gtimer.h"
|
||||
|
||||
/* Memory map */
|
||||
const hwaddr allwinner_r40_memmap[] = {
|
||||
@@ -45,8 +48,14 @@ const hwaddr allwinner_r40_memmap[] = {
|
||||
[AW_R40_DEV_MMC1] = 0x01c10000,
|
||||
[AW_R40_DEV_MMC2] = 0x01c11000,
|
||||
[AW_R40_DEV_MMC3] = 0x01c12000,
|
||||
[AW_R40_DEV_AHCI] = 0x01c18000,
|
||||
[AW_R40_DEV_EHCI1] = 0x01c19000,
|
||||
[AW_R40_DEV_OHCI1] = 0x01c19400,
|
||||
[AW_R40_DEV_EHCI2] = 0x01c1c000,
|
||||
[AW_R40_DEV_OHCI2] = 0x01c1c400,
|
||||
[AW_R40_DEV_CCU] = 0x01c20000,
|
||||
[AW_R40_DEV_PIT] = 0x01c20c00,
|
||||
[AW_R40_DEV_WDT] = 0x01c20c90,
|
||||
[AW_R40_DEV_UART0] = 0x01c28000,
|
||||
[AW_R40_DEV_UART1] = 0x01c28400,
|
||||
[AW_R40_DEV_UART2] = 0x01c28800,
|
||||
@@ -88,10 +97,9 @@ static struct AwR40Unimplemented r40_unimplemented[] = {
|
||||
{ "usb0-host", 0x01c14000, 4 * KiB },
|
||||
{ "crypto", 0x01c15000, 4 * KiB },
|
||||
{ "spi2", 0x01c17000, 4 * KiB },
|
||||
{ "sata", 0x01c18000, 4 * KiB },
|
||||
{ "usb1-host", 0x01c19000, 4 * KiB },
|
||||
{ "usb1-phy", 0x01c19800, 2 * KiB },
|
||||
{ "sid", 0x01c1b000, 4 * KiB },
|
||||
{ "usb2-host", 0x01c1c000, 4 * KiB },
|
||||
{ "usb2-phy", 0x01c1c800, 2 * KiB },
|
||||
{ "cs1", 0x01c1d000, 4 * KiB },
|
||||
{ "spi3", 0x01c1f000, 4 * KiB },
|
||||
{ "rtc", 0x01c20400, 1 * KiB },
|
||||
@@ -181,6 +189,11 @@ enum {
|
||||
AW_R40_GIC_SPI_MMC2 = 34,
|
||||
AW_R40_GIC_SPI_MMC3 = 35,
|
||||
AW_R40_GIC_SPI_EMAC = 55,
|
||||
AW_R40_GIC_SPI_AHCI = 56,
|
||||
AW_R40_GIC_SPI_OHCI1 = 64,
|
||||
AW_R40_GIC_SPI_OHCI2 = 65,
|
||||
AW_R40_GIC_SPI_EHCI1 = 76,
|
||||
AW_R40_GIC_SPI_EHCI2 = 78,
|
||||
AW_R40_GIC_SPI_GMAC = 85,
|
||||
};
|
||||
|
||||
@@ -269,6 +282,8 @@ static void allwinner_r40_init(Object *obj)
|
||||
object_property_add_alias(obj, "clk1-freq", OBJECT(&s->timer),
|
||||
"clk1-freq");
|
||||
|
||||
object_initialize_child(obj, "wdt", &s->wdt, TYPE_AW_WDT_SUN4I);
|
||||
|
||||
object_initialize_child(obj, "ccu", &s->ccu, TYPE_AW_R40_CCU);
|
||||
|
||||
for (int i = 0; i < AW_R40_NUM_MMCS; i++) {
|
||||
@@ -276,6 +291,15 @@ static void allwinner_r40_init(Object *obj)
|
||||
TYPE_AW_SDHOST_SUN50I_A64);
|
||||
}
|
||||
|
||||
object_initialize_child(obj, "sata", &s->sata, TYPE_ALLWINNER_AHCI);
|
||||
|
||||
for (size_t i = 0; i < AW_R40_NUM_USB; i++) {
|
||||
object_initialize_child(obj, "ehci[*]", &s->ehci[i],
|
||||
TYPE_PLATFORM_EHCI);
|
||||
object_initialize_child(obj, "ohci[*]", &s->ohci[i],
|
||||
TYPE_SYSBUS_OHCI);
|
||||
}
|
||||
|
||||
object_initialize_child(obj, "twi0", &s->i2c0, TYPE_AW_I2C_SUN6I);
|
||||
|
||||
object_initialize_child(obj, "emac", &s->emac, TYPE_AW_EMAC);
|
||||
@@ -407,6 +431,40 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ccu), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ccu), 0, s->memmap[AW_R40_DEV_CCU]);
|
||||
|
||||
/* SATA / AHCI */
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->sata), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->sata), 0,
|
||||
allwinner_r40_memmap[AW_R40_DEV_AHCI]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->sata), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic), AW_R40_GIC_SPI_AHCI));
|
||||
|
||||
/* USB */
|
||||
for (size_t i = 0; i < AW_R40_NUM_USB; i++) {
|
||||
g_autofree char *bus = g_strdup_printf("usb-bus.%zu", i);
|
||||
|
||||
object_property_set_bool(OBJECT(&s->ehci[i]), "companion-enable", true,
|
||||
&error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ehci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
allwinner_r40_memmap[i ? AW_R40_DEV_EHCI2
|
||||
: AW_R40_DEV_EHCI1]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ehci[i]), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic),
|
||||
i ? AW_R40_GIC_SPI_EHCI2
|
||||
: AW_R40_GIC_SPI_EHCI1));
|
||||
|
||||
object_property_set_str(OBJECT(&s->ohci[i]), "masterbus", bus,
|
||||
&error_fatal);
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->ohci[i]), &error_fatal);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
allwinner_r40_memmap[i ? AW_R40_DEV_OHCI2
|
||||
: AW_R40_DEV_OHCI1]);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->ohci[i]), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic),
|
||||
i ? AW_R40_GIC_SPI_OHCI2
|
||||
: AW_R40_GIC_SPI_OHCI1));
|
||||
}
|
||||
|
||||
/* SD/MMC */
|
||||
for (int i = 0; i < AW_R40_NUM_MMCS; i++) {
|
||||
qemu_irq irq = qdev_get_gpio_in(DEVICE(&s->gic),
|
||||
@@ -492,6 +550,11 @@ static void allwinner_r40_realize(DeviceState *dev, Error **errp)
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->emac), 0,
|
||||
qdev_get_gpio_in(DEVICE(&s->gic), AW_R40_GIC_SPI_EMAC));
|
||||
|
||||
/* WDT */
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->wdt), &error_fatal);
|
||||
sysbus_mmio_map_overlap(SYS_BUS_DEVICE(&s->wdt), 0,
|
||||
allwinner_r40_memmap[AW_R40_DEV_WDT], 1);
|
||||
|
||||
/* Unimplemented devices */
|
||||
for (unsigned i = 0; i < ARRAY_SIZE(r40_unimplemented); i++) {
|
||||
create_unimplemented_device(r40_unimplemented[i].device_name,
|
||||
|
||||
@@ -21,7 +21,9 @@
|
||||
#include "qemu/module.h"
|
||||
#include "qemu/log.h"
|
||||
#include "target/arm/idau.h"
|
||||
#include "target/arm/cpu.h"
|
||||
#include "target/arm/cpu-features.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
#include "migration/vmstate.h"
|
||||
|
||||
/* Bitbanded IO. Each word corresponds to a single bit. */
|
||||
|
||||
@@ -21,6 +21,7 @@
|
||||
#include "hw/i2c/aspeed_i2c.h"
|
||||
#include "net/net.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define ASPEED_SOC_IOMEM_SIZE 0x00200000
|
||||
|
||||
|
||||
@@ -16,6 +16,7 @@
|
||||
#include "hw/i2c/aspeed_i2c.h"
|
||||
#include "net/net.h"
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define ASPEED_SOC_IOMEM_SIZE 0x00200000
|
||||
#define ASPEED_SOC_DPMCU_SIZE 0x00040000
|
||||
|
||||
@@ -15,6 +15,8 @@
|
||||
#include "hw/arm/bcm2836.h"
|
||||
#include "hw/arm/raspi_platform.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
#include "target/arm/gtimer.h"
|
||||
|
||||
struct BCM283XClass {
|
||||
/*< private >*/
|
||||
|
||||
@@ -17,7 +17,6 @@
|
||||
#include "hw/arm/boot.h"
|
||||
#include "hw/block/flash.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "cpu.h"
|
||||
#include "qom/object.h"
|
||||
#include "qemu/error-report.h"
|
||||
|
||||
|
||||
@@ -23,6 +23,7 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "exec/tswap.h"
|
||||
#include "cpu.h"
|
||||
#include "hw/cpu/a9mpcore.h"
|
||||
#include "hw/irq.h"
|
||||
@@ -35,6 +36,7 @@
|
||||
#include "hw/arm/exynos4210.h"
|
||||
#include "hw/sd/sdhci.h"
|
||||
#include "hw/usb/hcd-ehci.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define EXYNOS4210_CHIPID_ADDR 0x10000000
|
||||
|
||||
|
||||
@@ -28,6 +28,7 @@
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "chardev/char.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define IMX25_ESDHC_CAPABILITIES 0x07e20000
|
||||
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "exec/address-spaces.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
#include "chardev/char.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
static void fsl_imx31_init(Object *obj)
|
||||
{
|
||||
|
||||
@@ -22,6 +22,7 @@
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "hw/arm/fsl-imx6.h"
|
||||
#include "hw/misc/unimp.h"
|
||||
#include "hw/usb/imx-usb-phy.h"
|
||||
#include "hw/boards.h"
|
||||
#include "hw/qdev-properties.h"
|
||||
@@ -29,6 +30,7 @@
|
||||
#include "chardev/char.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/module.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define IMX6_ESDHC_CAPABILITIES 0x057834b4
|
||||
|
||||
@@ -102,6 +104,8 @@ static void fsl_imx6_init(Object *obj)
|
||||
|
||||
|
||||
object_initialize_child(obj, "eth", &s->eth, TYPE_IMX_ENET);
|
||||
|
||||
object_initialize_child(obj, "pcie", &s->pcie, TYPE_DESIGNWARE_PCIE_HOST);
|
||||
}
|
||||
|
||||
static void fsl_imx6_realize(DeviceState *dev, Error **errp)
|
||||
@@ -109,6 +113,7 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
|
||||
MachineState *ms = MACHINE(qdev_get_machine());
|
||||
FslIMX6State *s = FSL_IMX6(dev);
|
||||
uint16_t i;
|
||||
qemu_irq irq;
|
||||
unsigned int smp_cpus = ms->smp.cpus;
|
||||
|
||||
if (smp_cpus > FSL_IMX6_NUM_CPUS) {
|
||||
@@ -424,6 +429,27 @@ static void fsl_imx6_realize(DeviceState *dev, Error **errp)
|
||||
FSL_IMX6_WDOGn_IRQ[i]));
|
||||
}
|
||||
|
||||
/*
|
||||
* PCIe
|
||||
*/
|
||||
sysbus_realize(SYS_BUS_DEVICE(&s->pcie), &error_abort);
|
||||
sysbus_mmio_map(SYS_BUS_DEVICE(&s->pcie), 0, FSL_IMX6_PCIe_REG_ADDR);
|
||||
|
||||
irq = qdev_get_gpio_in(DEVICE(&s->a9mpcore), FSL_IMX6_PCIE1_IRQ);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 0, irq);
|
||||
irq = qdev_get_gpio_in(DEVICE(&s->a9mpcore), FSL_IMX6_PCIE2_IRQ);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 1, irq);
|
||||
irq = qdev_get_gpio_in(DEVICE(&s->a9mpcore), FSL_IMX6_PCIE3_IRQ);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 2, irq);
|
||||
irq = qdev_get_gpio_in(DEVICE(&s->a9mpcore), FSL_IMX6_PCIE4_IRQ);
|
||||
sysbus_connect_irq(SYS_BUS_DEVICE(&s->pcie), 3, irq);
|
||||
|
||||
/*
|
||||
* PCIe PHY
|
||||
*/
|
||||
create_unimplemented_device("pcie-phy", FSL_IMX6_PCIe_ADDR,
|
||||
FSL_IMX6_PCIe_SIZE);
|
||||
|
||||
/* ROM memory */
|
||||
if (!memory_region_init_rom(&s->rom, OBJECT(dev), "imx6.rom",
|
||||
FSL_IMX6_ROM_SIZE, errp)) {
|
||||
|
||||
@@ -25,6 +25,7 @@
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/module.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define NAME_SIZE 20
|
||||
|
||||
@@ -192,6 +193,36 @@ static void fsl_imx6ul_realize(DeviceState *dev, Error **errp)
|
||||
create_unimplemented_device("a7mpcore-dap", FSL_IMX6UL_A7MPCORE_DAP_ADDR,
|
||||
FSL_IMX6UL_A7MPCORE_DAP_SIZE);
|
||||
|
||||
/*
|
||||
* MMDC
|
||||
*/
|
||||
create_unimplemented_device("a7mpcore-mmdc", FSL_IMX6UL_MMDC_CFG_ADDR,
|
||||
FSL_IMX6UL_MMDC_CFG_SIZE);
|
||||
|
||||
/*
|
||||
* OCOTP
|
||||
*/
|
||||
create_unimplemented_device("a7mpcore-ocotp", FSL_IMX6UL_OCOTP_CTRL_ADDR,
|
||||
FSL_IMX6UL_OCOTP_CTRL_SIZE);
|
||||
|
||||
/*
|
||||
* QSPI
|
||||
*/
|
||||
create_unimplemented_device("a7mpcore-qspi", FSL_IMX6UL_QSPI_ADDR,
|
||||
FSL_IMX6UL_QSPI_SIZE);
|
||||
|
||||
/*
|
||||
* CAAM
|
||||
*/
|
||||
create_unimplemented_device("a7mpcore-qspi", FSL_IMX6UL_CAAM_ADDR,
|
||||
FSL_IMX6UL_CAAM_SIZE);
|
||||
|
||||
/*
|
||||
* USBMISC
|
||||
*/
|
||||
create_unimplemented_device("a7mpcore-usbmisc", FSL_IMX6UL_USBO2_USBMISC_ADDR,
|
||||
FSL_IMX6UL_USBO2_USBMISC_SIZE);
|
||||
|
||||
/*
|
||||
* GPTs
|
||||
*/
|
||||
|
||||
@@ -26,6 +26,7 @@
|
||||
#include "sysemu/sysemu.h"
|
||||
#include "qemu/error-report.h"
|
||||
#include "qemu/module.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define NAME_SIZE 20
|
||||
|
||||
|
||||
@@ -44,7 +44,6 @@
|
||||
#include "hw/boards.h"
|
||||
#include "exec/address-spaces.h"
|
||||
#include "sysemu/qtest.h"
|
||||
#include "cpu.h"
|
||||
|
||||
#define CONNEX_FLASH_SIZE (16 * MiB)
|
||||
#define CONNEX_RAM_SIZE (64 * MiB)
|
||||
|
||||
@@ -36,6 +36,7 @@
|
||||
#include "qemu/log.h"
|
||||
#include "qom/object.h"
|
||||
#include "cpu.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define SMP_BOOT_ADDR 0x100
|
||||
#define SMP_BOOT_REG 0x40
|
||||
|
||||
@@ -9,7 +9,6 @@
|
||||
|
||||
#include "qemu/osdep.h"
|
||||
#include "qapi/error.h"
|
||||
#include "cpu.h"
|
||||
#include "hw/sysbus.h"
|
||||
#include "migration/vmstate.h"
|
||||
#include "hw/boards.h"
|
||||
@@ -28,6 +27,7 @@
|
||||
#include "hw/sd/sd.h"
|
||||
#include "qom/object.h"
|
||||
#include "audio/audio.h"
|
||||
#include "target/arm/cpu-qom.h"
|
||||
|
||||
#define TYPE_INTEGRATOR_CM "integrator_core"
|
||||
OBJECT_DECLARE_SIMPLE_TYPE(IntegratorCMState, INTEGRATOR_CM)
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user