From 3c9f7e71b4470f11e05eab2dbc60afbcc1b6515b Mon Sep 17 00:00:00 2001 From: AxxzyWasTaken Date: Tue, 3 Nov 2026 10:27:54 +0000 Subject: [PATCH] media: apple: avd: Say when the queue info block is missing avd_qfw_check() returns false without a word when the firmware wrote no queue info block, and the decoder stays on the legacy transport. That is expected for a legacy image. But an ABI 2 image writes the block at its own SRAM address, so a DT sram window that does not match the image fails the same silent way. The other reasons for staying on the legacy transport (an unsupported ABI, a wrong image tier, a bad ring geometry) are already logged. Log this one once too. Signed-off-by: AxxzyWasTaken --- drivers/media/platform/apple/avd/avd-backend-queue.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/apple/avd/avd-backend-queue.c b/drivers/media/platform/apple/avd/avd-backend-queue.c index 178572cb2e5d5..36ae764906de8 100644 --- a/drivers/media/platform/apple/avd/avd-backend-queue.c +++ b/drivers/media/platform/apple/avd/avd-backend-queue.c @@ -190,8 +190,15 @@ static bool avd_qfw_check(struct avd_dev *avd) q->vp_pool[i] = 0; q->next_vp[i] = 0; } - if (info[0] != AVDQ_MAGIC) + if (info[0] != AVDQ_MAGIC) { + /* + * A legacy image writes no block. An ABI 2 image writes it at its own + * SRAM address, so a DT sram window that does not match lands here too. + */ + dev_info_once(avd->dev, "no queue info block at sram +%#x, using legacy transport\n", + AVDQ_INFO); return false; + } if (info[1] != AVDQ_VERSION || info[2] != AVDQ_COUNT || info[3] != AVDQ_DESC_BYTES || info[5] != AVDQ_RING_OFFSET || !(info[11] & AVDQ_FEAT_SRAM_RING) ||