83 lines
4.4 KiB
Diff
83 lines
4.4 KiB
Diff
From 071249a10ebc2cd8af68ee72d409e23c6bc0ea7c Mon Sep 17 00:00:00 2001
|
|
From: cmss_dx <dingxiang@cmss.chinamobile.com>
|
|
Date: Wed, 30 Nov 2022 01:52:08 -0500
|
|
Subject: [PATCH 04/17] hw/net/can: fix Xilinx ZynqMP CAN RX FIFO logic
|
|
|
|
mainline inclusion
|
|
from mainline-v7.2.0-rc2
|
|
commit fb96d131eec66ecb2993c544058a8cb2c9c3521f
|
|
category: bugfix
|
|
|
|
-----------------------
|
|
|
|
For consistency, function "update_rx_fifo()" should use the RX FIFO
|
|
register field names, not the TX FIFO ones, even if they refer to the
|
|
same bit positions in the register.
|
|
|
|
Signed-off-by: Anton Kochkov <anton.kochkov@proton.me>
|
|
Reviewed-by: Francisco Iglesias <frasse.iglesias@gmail.com>
|
|
Message-id: 20220817141754.2105981-1-anton.kochkov@proton.me
|
|
Resolves: https://gitlab.com/qemu-project/qemu/-/issues/1123
|
|
[PMM: tweaked commit message]
|
|
Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
|
|
|
|
Signed-off-by: cmss_dx <dingxiang@cmss.chinamobile.com>
|
|
---
|
|
hw/net/can/xlnx-zynqmp-can.c | 32 ++++++++++++++++----------------
|
|
1 file changed, 16 insertions(+), 16 deletions(-)
|
|
|
|
diff --git a/hw/net/can/xlnx-zynqmp-can.c b/hw/net/can/xlnx-zynqmp-can.c
|
|
index 22bb8910fa..78a76a8ce2 100644
|
|
--- a/hw/net/can/xlnx-zynqmp-can.c
|
|
+++ b/hw/net/can/xlnx-zynqmp-can.c
|
|
@@ -696,30 +696,30 @@ static void update_rx_fifo(XlnxZynqMPCANState *s, const qemu_can_frame *frame)
|
|
timestamp));
|
|
|
|
/* First 32 bit of the data. */
|
|
- fifo32_push(&s->rx_fifo, deposit32(0, R_TXFIFO_DATA1_DB3_SHIFT,
|
|
- R_TXFIFO_DATA1_DB3_LENGTH,
|
|
+ fifo32_push(&s->rx_fifo, deposit32(0, R_RXFIFO_DATA1_DB3_SHIFT,
|
|
+ R_RXFIFO_DATA1_DB3_LENGTH,
|
|
frame->data[0]) |
|
|
- deposit32(0, R_TXFIFO_DATA1_DB2_SHIFT,
|
|
- R_TXFIFO_DATA1_DB2_LENGTH,
|
|
+ deposit32(0, R_RXFIFO_DATA1_DB2_SHIFT,
|
|
+ R_RXFIFO_DATA1_DB2_LENGTH,
|
|
frame->data[1]) |
|
|
- deposit32(0, R_TXFIFO_DATA1_DB1_SHIFT,
|
|
- R_TXFIFO_DATA1_DB1_LENGTH,
|
|
+ deposit32(0, R_RXFIFO_DATA1_DB1_SHIFT,
|
|
+ R_RXFIFO_DATA1_DB1_LENGTH,
|
|
frame->data[2]) |
|
|
- deposit32(0, R_TXFIFO_DATA1_DB0_SHIFT,
|
|
- R_TXFIFO_DATA1_DB0_LENGTH,
|
|
+ deposit32(0, R_RXFIFO_DATA1_DB0_SHIFT,
|
|
+ R_RXFIFO_DATA1_DB0_LENGTH,
|
|
frame->data[3]));
|
|
/* Last 32 bit of the data. */
|
|
- fifo32_push(&s->rx_fifo, deposit32(0, R_TXFIFO_DATA2_DB7_SHIFT,
|
|
- R_TXFIFO_DATA2_DB7_LENGTH,
|
|
+ fifo32_push(&s->rx_fifo, deposit32(0, R_RXFIFO_DATA2_DB7_SHIFT,
|
|
+ R_RXFIFO_DATA2_DB7_LENGTH,
|
|
frame->data[4]) |
|
|
- deposit32(0, R_TXFIFO_DATA2_DB6_SHIFT,
|
|
- R_TXFIFO_DATA2_DB6_LENGTH,
|
|
+ deposit32(0, R_RXFIFO_DATA2_DB6_SHIFT,
|
|
+ R_RXFIFO_DATA2_DB6_LENGTH,
|
|
frame->data[5]) |
|
|
- deposit32(0, R_TXFIFO_DATA2_DB5_SHIFT,
|
|
- R_TXFIFO_DATA2_DB5_LENGTH,
|
|
+ deposit32(0, R_RXFIFO_DATA2_DB5_SHIFT,
|
|
+ R_RXFIFO_DATA2_DB5_LENGTH,
|
|
frame->data[6]) |
|
|
- deposit32(0, R_TXFIFO_DATA2_DB4_SHIFT,
|
|
- R_TXFIFO_DATA2_DB4_LENGTH,
|
|
+ deposit32(0, R_RXFIFO_DATA2_DB4_SHIFT,
|
|
+ R_RXFIFO_DATA2_DB4_LENGTH,
|
|
frame->data[7]));
|
|
|
|
ARRAY_FIELD_DP32(s->regs, INTERRUPT_STATUS_REGISTER, RXOK, 1);
|
|
--
|
|
2.27.0
|
|
|