escc: fix STATUS_SYNC bit in R_STATUS register
After an SDLC "Enter hunt" command has been sent the STATUS_SYNC bit should remain high until the flag byte has been detected. Whilst the ESCC device doesn't yet implement SDLC mode, without this change the active low STATUS_SYNC is constantly asserted causing the MacOS OpenTransport extension to hang on startup as it thinks it is constantly receiving LocalTalk responses during its initial negotiation phase. Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Message-Id: <20210903113223.19551-10-mark.cave-ayland@ilande.co.uk> Signed-off-by: Mark Cave-Ayland <mark.cave-ayland@ilande.co.uk>
This commit is contained in:
parent
99b0f05841
commit
15a2a1a4d1
@ -94,6 +94,7 @@
|
||||
#define W_IVEC 2
|
||||
#define W_RXCTRL 3
|
||||
#define RXCTRL_RXEN 0x01
|
||||
#define RXCTRL_HUNT 0x10
|
||||
#define W_TXCTRL1 4
|
||||
#define TXCTRL1_PAREN 0x01
|
||||
#define TXCTRL1_PAREV 0x02
|
||||
@ -561,7 +562,13 @@ static void escc_mem_write(void *opaque, hwaddr addr,
|
||||
break;
|
||||
}
|
||||
break;
|
||||
case W_INTR ... W_RXCTRL:
|
||||
case W_RXCTRL:
|
||||
s->wregs[s->reg] = val;
|
||||
if (val & RXCTRL_HUNT) {
|
||||
s->rregs[R_STATUS] |= STATUS_SYNC;
|
||||
}
|
||||
break;
|
||||
case W_INTR ... W_IVEC:
|
||||
case W_SYNC1 ... W_TXBUF:
|
||||
case W_MISC1 ... W_CLOCK:
|
||||
case W_MISC2 ... W_EXTINT:
|
||||
|
Loading…
Reference in New Issue
Block a user