]> Git Repo - qemu.git/commitdiff
dp8393x: Don't reset Silicon Revision register
authorFinn Thain <[email protected]>
Wed, 29 Jan 2020 09:27:49 +0000 (20:27 +1100)
committerJason Wang <[email protected]>
Tue, 3 Mar 2020 10:04:47 +0000 (18:04 +0800)
The jazzsonic driver in Linux uses the Silicon Revision register value
to probe the chip. The driver fails unless the SR register contains 4.
Unfortunately, reading this register in QEMU usually returns 0 because
the s->regs[] array gets wiped after a software reset.

Fixes: bd8f1ebce4 ("net/dp8393x: fix hardware reset")
Suggested-by: Philippe Mathieu-Daudé <[email protected]>
Signed-off-by: Finn Thain <[email protected]>
Signed-off-by: Jason Wang <[email protected]>
hw/net/dp8393x.c

index cfbc2ee5521673e30bb49a20d6f5ce1b5ffea5c0..c2ac2a110eafc98c49a42f2c27fccb78443239e3 100644 (file)
@@ -923,6 +923,7 @@ static void dp8393x_reset(DeviceState *dev)
     timer_del(s->watchdog);
 
     memset(s->regs, 0, sizeof(s->regs));
+    s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux/mips */
     s->regs[SONIC_CR] = SONIC_CR_RST | SONIC_CR_STP | SONIC_CR_RXDIS;
     s->regs[SONIC_DCR] &= ~(SONIC_DCR_EXBUS | SONIC_DCR_LBR);
     s->regs[SONIC_RCR] &= ~(SONIC_RCR_LB0 | SONIC_RCR_LB1 | SONIC_RCR_BRD | SONIC_RCR_RNT);
@@ -975,7 +976,6 @@ static void dp8393x_realize(DeviceState *dev, Error **errp)
     qemu_format_nic_info_str(qemu_get_queue(s->nic), s->conf.macaddr.a);
 
     s->watchdog = timer_new_ns(QEMU_CLOCK_VIRTUAL, dp8393x_watchdog, s);
-    s->regs[SONIC_SR] = 0x0004; /* only revision recognized by Linux */
 
     memory_region_init_ram(&s->prom, OBJECT(dev),
                            "dp8393x-prom", SONIC_PROM_SIZE, &local_err);
This page took 0.026987 seconds and 4 git commands to generate.