summary refs log tree commit diff stats
path: root/hw/net/fsl_etsec/registers.h
diff options
context:
space:
mode:
authorMichael Davidsaver <mdavidsaver@gmail.com>2018-07-12 14:00:52 -0700
committerDavid Gibson <david@gibson.dropbear.id.au>2018-07-16 11:18:09 +1000
commitfd8e3381a00feb1e9878f6a3e2de11295f041f67 (patch)
treef203043baa4c09ee0679fbc0702514cb0a3272e0 /hw/net/fsl_etsec/registers.h
parentb585395b655a6c1f9d9ebf1f0890e76d0708eed6 (diff)
downloadfocaccia-qemu-fd8e3381a00feb1e9878f6a3e2de11295f041f67.tar.gz
focaccia-qemu-fd8e3381a00feb1e9878f6a3e2de11295f041f67.zip
etsec: fix IRQ (un)masking
Interrupt conditions occurring while masked are not being
signaled when later unmasked.
The fix is to raise/lower IRQs when IMASK is changed.

To avoid problems like this in future, consolidate
IRQ pin update logic in one function.

Also fix probable typo "IEVENT_TXF | IEVENT_TXF",
and update IRQ pins on reset.

Signed-off-by: Michael Davidsaver <mdavidsaver@gmail.com>
Reviewed-by: Cédric Le Goater <clg@kaod.org>
Signed-off-by: David Gibson <david@gibson.dropbear.id.au>
Diffstat (limited to 'hw/net/fsl_etsec/registers.h')
-rw-r--r--hw/net/fsl_etsec/registers.h10
1 files changed, 10 insertions, 0 deletions
diff --git a/hw/net/fsl_etsec/registers.h b/hw/net/fsl_etsec/registers.h
index c4ed2b9d62..f085537ecd 100644
--- a/hw/net/fsl_etsec/registers.h
+++ b/hw/net/fsl_etsec/registers.h
@@ -74,6 +74,16 @@ extern const eTSEC_Register_Definition eTSEC_registers_def[];
 #define IEVENT_RXC   (1 << 30)
 #define IEVENT_BABR  (1 << 31)
 
+/* Mapping between interrupt pin and interrupt flags */
+#define IEVENT_RX_MASK (IEVENT_RXF | IEVENT_RXB)
+#define IEVENT_TX_MASK (IEVENT_TXF | IEVENT_TXB)
+#define IEVENT_ERR_MASK (IEVENT_MAG | IEVENT_GTSC | IEVENT_GRSC | IEVENT_TXC | \
+    IEVENT_RXC | IEVENT_BABR | IEVENT_BABT | IEVENT_LC | \
+    IEVENT_CRL | IEVENT_FGPI | IEVENT_FIR | IEVENT_FIQ | \
+    IEVENT_DPE | IEVENT_PERR | IEVENT_EBERR | IEVENT_TXE | \
+    IEVENT_XFUN | IEVENT_BSY | IEVENT_MSRO | IEVENT_MMRD | \
+    IEVENT_MMRW)
+
 #define IMASK_RXFEN  (1 <<  7)
 #define IMASK_GRSCEN (1 <<  8)
 #define IMASK_RXBEN  (1 << 15)