Commit 6a1f9d0c authored by Anthony Liguori's avatar Anthony Liguori
Browse files

Merge remote-tracking branch 'pmaydell/arm-devs.next' into staging

* pmaydell/arm-devs.next:
  arm: Move some ARM devices into libhw
  ssd0323: abort() instead of exit(1) on error.
  hw/sd.c: make sd_wp_addr() return bool
  hw/sd.c: make sd_dataready() return bool
  hw/sd.c: convert binary variables to bool
  hw/sd.c: introduce wrapper for conversion address to wp group
  hw/sd.c: make sd_wp_addr() accept 64 bit address argument
  hw/sd.c: convert wp_groups in SDState to bitfield
  armv7m: Guard against no -kernel argument
  hw/armv7m_nvic: Fix incorrect default for num-irqs property
parents d517872e 58f9b98f
Loading
Loading
Loading
Loading
+18 −0
Original line number Diff line number Diff line
@@ -27,3 +27,21 @@ CONFIG_SMC91C111=y
CONFIG_DS1338=y
CONFIG_PFLASH_CFI01=y
CONFIG_PFLASH_CFI02=y

CONFIG_ARM_TIMER=y
CONFIG_PL011=y
CONFIG_PL022=y
CONFIG_PL031=y
CONFIG_PL041=y
CONFIG_PL050=y
CONFIG_PL061=y
CONFIG_PL080=y
CONFIG_PL110=y
CONFIG_PL181=y
CONFIG_PL190=y
CONFIG_PL310=y
CONFIG_CADENCE=y
CONFIG_XGMAC=y

CONFIG_VERSATILE_PCI=y
CONFIG_VERSATILE_I2C=y
+20 −0
Original line number Diff line number Diff line
@@ -74,6 +74,26 @@ hw-obj-$(CONFIG_PUV3) += puv3_gpio.o
hw-obj-$(CONFIG_PUV3) += puv3_pm.o
hw-obj-$(CONFIG_PUV3) += puv3_dma.o

# ARM devices
hw-obj-$(CONFIG_ARM_TIMER) += arm_timer.o
hw-obj-$(CONFIG_PL011) += pl011.o
hw-obj-$(CONFIG_PL022) += pl022.o
hw-obj-$(CONFIG_PL031) += pl031.o
hw-obj-$(CONFIG_PL041) += pl041.o lm4549.o
hw-obj-$(CONFIG_PL050) += pl050.o
hw-obj-$(CONFIG_PL061) += pl061.o
hw-obj-$(CONFIG_PL080) += pl080.o
hw-obj-$(CONFIG_PL110) += pl110.o
hw-obj-$(CONFIG_PL181) += pl181.o
hw-obj-$(CONFIG_PL190) += pl190.o
hw-obj-$(CONFIG_PL310) += arm_l2x0.o
hw-obj-$(CONFIG_VERSATILE_PCI) += versatile_pci.o
hw-obj-$(CONFIG_VERSATILE_I2C) += versatile_i2c.o
hw-obj-$(CONFIG_CADENCE) += cadence_uart.o
hw-obj-$(CONFIG_CADENCE) += cadence_ttc.o
hw-obj-$(CONFIG_CADENCE) += cadence_gem.o
hw-obj-$(CONFIG_XGMAC) += xgmac.o

# PCI watchdog devices
hw-obj-$(CONFIG_PCI) += wdt_i6300esb.o

+3 −12
Original line number Diff line number Diff line
obj-y = integratorcp.o versatilepb.o arm_pic.o arm_timer.o
obj-y += arm_boot.o pl011.o pl031.o pl050.o pl080.o pl110.o pl181.o pl190.o
obj-y += versatile_pci.o
obj-y += versatile_i2c.o
obj-y += cadence_uart.o
obj-y += cadence_ttc.o
obj-y += cadence_gem.o
obj-y = integratorcp.o versatilepb.o arm_pic.o
obj-y += arm_boot.o
obj-y += xilinx_zynq.o zynq_slcr.o
obj-y += arm_gic.o arm_gic_common.o
obj-y += realview_gic.o realview.o arm_sysctl.o arm11mpcore.o a9mpcore.o
@@ -12,12 +7,9 @@ obj-y += exynos4210_gic.o exynos4210_combiner.o exynos4210.o
obj-y += exynos4_boards.o exynos4210_uart.o exynos4210_pwm.o
obj-y += exynos4210_pmu.o exynos4210_mct.o exynos4210_fimd.o
obj-y += exynos4210_rtc.o exynos4210_i2c.o
obj-y += arm_l2x0.o
obj-y += arm_mptimer.o a15mpcore.o
obj-y += armv7m.o armv7m_nvic.o stellaris.o pl022.o stellaris_enet.o
obj-y += armv7m.o armv7m_nvic.o stellaris.o stellaris_enet.o
obj-y += highbank.o
obj-y += pl061.o
obj-y += xgmac.o
obj-y += pxa2xx.o pxa2xx_pic.o pxa2xx_gpio.o pxa2xx_timer.o pxa2xx_dma.o
obj-y += pxa2xx_lcd.o pxa2xx_mmci.o pxa2xx_pcmcia.o pxa2xx_keypad.o
obj-y += gumstix.o
@@ -37,7 +29,6 @@ obj-y += strongarm.o
obj-y += collie.o
obj-y += imx_serial.o imx_ccm.o imx_timer.o imx_avic.o
obj-y += kzm.o
obj-y += pl041.o lm4549.o
obj-$(CONFIG_FDT) += ../device_tree.o

obj-y := $(addprefix ../,$(obj-y))
+5 −0
Original line number Diff line number Diff line
@@ -227,6 +227,11 @@ qemu_irq *armv7m_init(MemoryRegion *address_space_mem,
    big_endian = 0;
#endif

    if (!kernel_filename) {
        fprintf(stderr, "Guest image must be specified (using -kernel)\n");
        exit(1);
    }

    image_size = load_elf(kernel_filename, NULL, NULL, &entry, &lowaddr,
                          NULL, big_endian, ELF_MACHINE, 1);
    if (image_size < 0) {
+14 −7
Original line number Diff line number Diff line
@@ -467,7 +467,7 @@ static int armv7m_nvic_init(SysBusDevice *dev)
    s->gic.num_cpu = 1;
    /* Tell the common code we're an NVIC */
    s->gic.revision = 0xffffffff;
    s->gic.num_irq = s->num_irq;
    s->num_irq = s->gic.num_irq;
    nc->parent_init(dev);
    gic_init_irqs_and_distributor(&s->gic, s->num_irq);
    /* The NVIC and system controller register area looks like this:
@@ -498,14 +498,21 @@ static int armv7m_nvic_init(SysBusDevice *dev)
    return 0;
}

static Property armv7m_nvic_properties[] = {
static void armv7m_nvic_instance_init(Object *obj)
{
    /* We have a different default value for the num-irq property
     * than our superclass. This function runs after qdev init
     * has set the defaults from the Property array and before
     * any user-specified property setting, so just modify the
     * value in the gic_state struct.
     */
    gic_state *s = ARM_GIC_COMMON(obj);
    /* The ARM v7m may have anything from 0 to 496 external interrupt
     * IRQ lines. We default to 64. Other boards may differ and should
     * set this property appropriately.
     * set the num-irq property appropriately.
     */
    DEFINE_PROP_UINT32("num-irq", nvic_state, num_irq, 64),
    DEFINE_PROP_END_OF_LIST(),
};
    s->num_irq = 64;
}

static void armv7m_nvic_class_init(ObjectClass *klass, void *data)
{
@@ -518,12 +525,12 @@ static void armv7m_nvic_class_init(ObjectClass *klass, void *data)
    sdc->init = armv7m_nvic_init;
    dc->vmsd  = &vmstate_nvic;
    dc->reset = armv7m_nvic_reset;
    dc->props = armv7m_nvic_properties;
}

static TypeInfo armv7m_nvic_info = {
    .name          = TYPE_NVIC,
    .parent        = TYPE_ARM_GIC_COMMON,
    .instance_init = armv7m_nvic_instance_init,
    .instance_size = sizeof(nvic_state),
    .class_init    = armv7m_nvic_class_init,
    .class_size    = sizeof(NVICClass),
Loading