[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PATCH v4 13/14] dp8393x: Don't reset Silicon Revision register
From: |
Finn Thain |
Subject: |
[PATCH v4 13/14] dp8393x: Don't reset Silicon Revision register |
Date: |
Wed, 29 Jan 2020 20:27:49 +1100 |
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é <address@hidden>
Signed-off-by: Finn Thain <address@hidden>
---
Changed since v3:
- Simplified as per suggestion from Philippe Mathieu-Daudé.
---
hw/net/dp8393x.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/hw/net/dp8393x.c b/hw/net/dp8393x.c
index 1b73a8703b..93eb07e6c8 100644
--- a/hw/net/dp8393x.c
+++ b/hw/net/dp8393x.c
@@ -919,6 +919,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);
@@ -971,7 +972,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);
--
2.24.1
- [PATCH v4 06/14] dp8393x: Clear RRRA command register bit only when appropriate, (continued)
- [PATCH v4 06/14] dp8393x: Clear RRRA command register bit only when appropriate, Finn Thain, 2020/01/29
- [PATCH v4 04/14] dp8393x: Have dp8393x_receive() return the packet size, Finn Thain, 2020/01/29
- [PATCH v4 10/14] dp8393x: Pad frames to word or long word boundary, Finn Thain, 2020/01/29
- [PATCH v4 09/14] dp8393x: Use long-word-aligned RRA pointers in 32-bit mode, Finn Thain, 2020/01/29
- [PATCH v4 02/14] dp8393x: Always use 32-bit accesses, Finn Thain, 2020/01/29
- [PATCH v4 14/14] dp8393x: Don't stop reception upon RBE interrupt assertion, Finn Thain, 2020/01/29
- [PATCH v4 05/14] dp8393x: Update LLFA and CRDA registers from rx descriptor, Finn Thain, 2020/01/29
- [PATCH v4 07/14] dp8393x: Implement packet size limit and RBAE interrupt, Finn Thain, 2020/01/29
- [PATCH v4 11/14] dp8393x: Clear descriptor in_use field to release packet, Finn Thain, 2020/01/29
- [PATCH v4 13/14] dp8393x: Don't reset Silicon Revision register,
Finn Thain <=
- [PATCH v4 01/14] dp8393x: Mask EOL bit from descriptor addresses, Finn Thain, 2020/01/29
- [PATCH v4 03/14] dp8393x: Clean up endianness hacks, Finn Thain, 2020/01/29
- [PATCH v4 12/14] dp8393x: Always update RRA pointers and sequence numbers, Finn Thain, 2020/01/29