Skip to content
Snippets Groups Projects
Commit 85948643 authored by Blue Swirl's avatar Blue Swirl
Browse files

esp: lower IRQ on soft reset


42f1ced2 removed irq lowering
during reset. However, for chip reset command and DMA reset signal,
its actually the correct thing to do.

Lower IRQ on soft reset only.

Signed-off-by: default avatarBlue Swirl <blauwirbel@gmail.com>
parent e163ae7b
No related branches found
No related tags found
No related merge requests found
......@@ -419,7 +419,7 @@ static void handle_ti(ESPState *s)
}
}
static void esp_reset(DeviceState *d)
static void esp_hard_reset(DeviceState *d)
{
ESPState *s = container_of(d, ESPState, busdev.qdev);
......@@ -435,10 +435,19 @@ static void esp_reset(DeviceState *d)
s->rregs[ESP_CFG1] = 7;
}
static void esp_soft_reset(DeviceState *d)
{
ESPState *s = container_of(d, ESPState, busdev.qdev);
qemu_irq_lower(s->irq);
esp_hard_reset(d);
}
static void parent_esp_reset(void *opaque, int irq, int level)
{
if (level)
esp_reset(opaque);
if (level) {
esp_soft_reset(opaque);
}
}
static uint32_t esp_mem_readb(void *opaque, target_phys_addr_t addr)
......@@ -528,7 +537,7 @@ static void esp_mem_writeb(void *opaque, target_phys_addr_t addr, uint32_t val)
break;
case CMD_RESET:
DPRINTF("Chip reset (%2.2x)\n", val);
esp_reset(&s->busdev.qdev);
esp_soft_reset(&s->busdev.qdev);
break;
case CMD_BUSRESET:
DPRINTF("Bus reset (%2.2x)\n", val);
......@@ -679,7 +688,7 @@ static SysBusDeviceInfo esp_info = {
.qdev.name = "esp",
.qdev.size = sizeof(ESPState),
.qdev.vmsd = &vmstate_esp,
.qdev.reset = esp_reset,
.qdev.reset = esp_hard_reset,
.qdev.props = (Property[]) {
{.name = NULL}
}
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment