Commit dd4427a6 authored by Paolo Bonzini's avatar Paolo Bonzini Committed by Andrzej Zaborowski
Browse files

nseries: attach monitor powerdown request to menelaus



I noticed some unused code in the twl92230, probably from before
qdev-ification.  This patch makes the machine use the chip's pwrbtn
signal.

Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
Signed-off-by: default avatarAndrzej Zaborowski <andrew.zaborowski@intel.com>
parent 6c263e26
Loading
Loading
Loading
Loading
+2 −0
Original line number Diff line number Diff line
@@ -204,6 +204,8 @@ static void n8x0_i2c_setup(struct n800_s *s)
                          qdev_get_gpio_in(s->cpu->ih[0],
                                           OMAP_INT_24XX_SYS_NIRQ));

    qemu_system_powerdown = qdev_get_gpio_in(dev, 3);

    /* Attach a TMP105 PM chip (A0 wired to ground) */
    dev = i2c_create_slave(s->i2c, "tmp105", N8X0_TMP105_ADDR);
    qdev_connect_gpio_out(dev, 0, tmp_irq);
+9 −12
Original line number Diff line number Diff line
@@ -61,9 +61,7 @@ typedef struct {
    } rtc;
    uint16_t rtc_next_vmstate;
    qemu_irq out[4];
    qemu_irq *in;
    uint8_t pwrbtn_state;
    qemu_irq pwrbtn;
} MenelausState;

static inline void menelaus_update(MenelausState *s)
@@ -186,15 +184,13 @@ static void menelaus_gpio_set(void *opaque, int line, int level)
{
    MenelausState *s = (MenelausState *) opaque;

    if (line < 3) {
        /* No interrupt generated */
        s->inputs &= ~(1 << line);
        s->inputs |= level << line;
        return;
    }

static void menelaus_pwrbtn_set(void *opaque, int line, int level)
{
    MenelausState *s = (MenelausState *) opaque;

    if (!s->pwrbtn_state && level) {
        s->status |= 1 << 11;					/* PSHBTN */
        menelaus_update(s);
@@ -849,8 +845,9 @@ static int twl92230_init(I2CSlave *i2c)
    s->rtc.hz_tm = qemu_new_timer_ms(rt_clock, menelaus_rtc_hz, s);
    /* Three output pins plus one interrupt pin.  */
    qdev_init_gpio_out(&i2c->qdev, s->out, 4);
    qdev_init_gpio_in(&i2c->qdev, menelaus_gpio_set, 3);
    s->pwrbtn = qemu_allocate_irqs(menelaus_pwrbtn_set, s, 1)[0];

    /* Three input pins plus one power-button pin.  */
    qdev_init_gpio_in(&i2c->qdev, menelaus_gpio_set, 4);

    menelaus_reset(&s->i2c);