armbian_build/patch/kernel/archive/meson64-5.19/general-meson-vdec-check-if-parser-has-really-parser.patch
Ricardo Pardini 73691a9e24
meson64: edge: rework to kernel 5.19 (#3941)
* meson64-edge/5.19: use `tag:v5.19-rc2`, meson64 kernel config and kernel patches, by @adeepv

* meson64-edge/5.19: we don't need `CONFIG_ARCH_ROCKCHIP=y` for meson64, right?

* meson64-edge/5.19: remove `meson_drv_shutdown` revert patch, instead `CONFIG_DRM_MESON=y` and its dependencies in .config

- this allows other meson64's to shutdown properly, while allowing the N2(+) to reboot without kernel-side hangs

* meson64-edge/5.19: odroidn2(+): remove SD UHS modes patch for ODROID N2(+)

- it works when cold-booted
- but changes voltage to enable
- when rebooted, voltage persists and uboot can't read the SD anymore
- adding the "odroid,reboot" driver+dt that is supposed to fix this, doesn't
- so for now remove it

* meson64-edge/5.19: odroidn2(+): add dumb gpio fan at 30 celsius

- backport from rework in 5.10

* meson64-edge/5.19: odroidhc4: bring back `fan1_input` by adding fan details to DT

- yeah, I know; the cooling map is right there too, so empty, poor thing. for later.

* meson64-edge/5.19: bump to 5.19-rc3

* meson64-edge/5.19: radxa-zero: add patch to remove UHS mode so `wifi` works

- sent by @pyavitz: https://raw.githubusercontent.com/pyavitz/debian-image-builder/feature/patches/amlogic/radxazero/wifi/001-arm64-dts-amlogic-radxa-zero-sdio-card-speed.patch
- tested by @lanefu

* meson64-edge/5.19: bump to 5.19-rc4

* meson64-edge/5.19: bump to 5.19-rc5

* meson64-edge/5.19: bump to 5.19-rc7

* meson64-edge/5.19: bump to 5.19.y branch, which is 5.19.0 right now

* Add kernel config - tested on Odroid N2+

Co-authored-by: Vyacheslav Bocharov <adeep@lexina.in>
Co-authored-by: Igor Pecovnik <igor.pecovnik@gmail.com>
2022-08-04 21:50:40 +02:00

52 lines
1.8 KiB
Diff

From cb0c20e84a934c66961ace27f340cd7c98188dbe Mon Sep 17 00:00:00 2001
From: Neil Armstrong <narmstrong@baylibre.com>
Date: Mon, 22 Nov 2021 09:15:21 +0000
Subject: [PATCH 67/90] WIP: drivers: meson: vdec: check if parser has really
parser before marking input buffer as error
Signed-off-by: Neil Armstrong <narmstrong@baylibre.com>
---
drivers/staging/media/meson/vdec/esparser.c | 14 ++++++++++----
1 file changed, 10 insertions(+), 4 deletions(-)
diff --git a/drivers/staging/media/meson/vdec/esparser.c b/drivers/staging/media/meson/vdec/esparser.c
index 9b6034936d32..bb9480f0a70c 100644
--- a/drivers/staging/media/meson/vdec/esparser.c
+++ b/drivers/staging/media/meson/vdec/esparser.c
@@ -300,6 +300,7 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
u32 num_dst_bufs = 0;
u32 offset;
u32 pad_size;
+ u32 wp, wp2;
/*
* When max ref frame is held by VP9, this should be -= 3 to prevent a
@@ -349,15 +350,20 @@ esparser_queue(struct amvdec_session *sess, struct vb2_v4l2_buffer *vbuf)
}
pad_size = esparser_pad_start_code(core, vb, payload_size);
+ wp = amvdec_read_parser(core, PARSER_VIDEO_WP);
ret = esparser_write_data(core, phy, payload_size + pad_size);
+ wp2 = amvdec_read_parser(core, PARSER_VIDEO_WP);
if (ret <= 0) {
- dev_warn(core->dev, "esparser: input parsing error\n");
- amvdec_remove_ts(sess, vb->timestamp);
- v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
amvdec_write_parser(core, PARSER_FETCH_CMD, 0);
- return 0;
+ if (ret < 0 || wp2 == wp) {
+ dev_err(core->dev, "esparser: input parsing error ret %d (%x <=> %x)\n", ret, wp, wp2);
+ amvdec_remove_ts(sess, vb->timestamp);
+ v4l2_m2m_buf_done(vbuf, VB2_BUF_STATE_ERROR);
+
+ return 0;
+ }
}
atomic_inc(&sess->esparser_queued_bufs);
--
2.35.1