From nobody Sat Feb 7 22:21:13 2026 Received: from mail-wm1-f100.google.com (mail-wm1-f100.google.com [209.85.128.100]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id DE0C4187879 for ; Fri, 22 Nov 2024 08:42:05 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.100 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264927; cv=none; b=GEdrGTCIKuLszj4TzmVXaXifo1IhNOu3WcIRPp9AuKdJa9Th0+s54QB3nfTBOSx16EHCsLmyXAOYvEzepXtZptZnTc6kPhsn0A6cEIWbqdkTu6Xr7RJtVmeZeEwDgSScaifZOAzqiSKJOqsdkZLXRiuOj6K0YiZZGiIwjTte4sI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264927; c=relaxed/simple; bh=sP+4letafPvxfukJYV0UOYRRFVIebSXD/aQphVIz7qY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Vq6gLg7CNc/bJrZ+/j5/jo/BOamAG48JIWVxMiTD61OlzlmfyoMnNbV/SqX1QsNuVoli5orqzQwHxxwwyc0nPIsp1uX4rlo9zIzRMQ+Qw8Sj38TRZGnHF47rV2PJPMk/8akkuyDwBDgCL8YxijPHBG9wfN+anstsyddMDb/BJUI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com; spf=pass smtp.mailfrom=raspberrypi.com; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b=W1yWkMS0; arc=none smtp.client-ip=209.85.128.100 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="W1yWkMS0" Received: by mail-wm1-f100.google.com with SMTP id 5b1f17b1804b1-432d9bb168cso16731825e9.1 for ; Fri, 22 Nov 2024 00:42:05 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732264924; x=1732869724; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=su6tsEJry4BzuFP65MpXpBH51+aHQ+dE9vL6DxTxUwA=; b=W1yWkMS0SYWzQ3zoKcv8xeYylwxBCCcQ84wuqbjQXHN5S77VQj8YbvVze7OCqOwrhj WRuhrjreTn0/oh+2t8DzuqNR2RjovzsYUdxFVF2ivjeezmSCp0DxK5PqMicoWAyecVtd 6RI3GfpJtkg3OSLmSdwgkdfEjMNaEigDx7gDBQCvWHJoUrEF4XY6vNroke2WC8y51dhq xxXPHb+RvgykV3IOwMmapN0u3aQe11Nyhhp+bol7BybuHdhwpAqrIGKqd/QSQUaxpLPm gSwRFoZDvwq98ZV7MPM6MGr1xHeGK2dwj6At+m5u0YIhMsHnABG9bQOeIP1+BjgrIXPt 51NQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732264924; x=1732869724; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=su6tsEJry4BzuFP65MpXpBH51+aHQ+dE9vL6DxTxUwA=; b=EvXnfpPW4SPomWhScB+Qz6sH2R7PDGvCQWSMAKEFkCiau+rKJ1ZkeWqZDtRb4+Nms/ TW2w+3BqJqrzn6ZxJ3bFCTtdXfYNUxn5t5hUDkE8h5plnAMbmMymJuwIFalLgmEOQJX0 cDUoz6t0UvhqzRdE32d373X6L47j0+81zN4P2xYQqJYcPNiAsgLJvgD8cGZOGd/PXqgL yIKjKq2hRWT9McqNuyP4ifPTm0DW2OjpS/tSdI77/tEPINlfKVqg2UCxB4UPsULr+YT9 rofsIY6MsekipcjSa2dUX2brwY8C7aM/fOaKWz1VmA0ZJFjLPojw3tJzkYBpGiD3FpTd GHXw== X-Forwarded-Encrypted: i=1; AJvYcCU2uryUeF0gCKQWcJ2JkZ7DkHCme8v2OQ3zc8Yfj/txEPRfqaY5A2jdAEtjplfIxSjmth+SIPxgBQjVhQ0=@vger.kernel.org X-Gm-Message-State: AOJu0YwCT1ZJkuuiG91DYKeCkmSLDp44cZEiTxvAur8dmVj5dKkNk3XL z1LSnoM3BD7jMITA9/uj48sqSwTVHpp8kyH69hSGn3PXJty3SCMOnBebx4N7NikgasM1yLzxSIL 1bGx9iiNb9v5pZkwJDFJPQKDmryPuiayf X-Gm-Gg: ASbGnctzmWRfiKZuoWuTtbqbFpcIfcl9PSSkWf53eF7woLYbJ4gwVJGwRYoH75Y6ecY uUl3p2cHxg3Cl3hzTBQ2kif1lEd/rrNe2P63VuESQ29ZUUs2z6xKgpThLIi7mw8J0788NJaBL3i 3Vms9Zx8rJL/4OFSqX/vTIqEYpeGuoyurbfw2u2BmN8bMnDYR2njUsJBpME9uSm9VrvEXQZ1I1M pgIBP3zghEWm/pVq1fNrLGGSsVF+AfAkpJutW6yRVF+2iembNTCwZsU8sx8xgx/eg== X-Google-Smtp-Source: AGHT+IHzC1eCRwXGViTOOLSFM/PDCwUqY6DKBuYcoiYSQl4qaaz1QaEXL2O6o2F/GfgoK5RmaU1tu7qT3rGx X-Received: by 2002:a05:600c:5105:b0:431:15f1:421d with SMTP id 5b1f17b1804b1-433c5ceeb38mr52428355e9.16.1732264924132; Fri, 22 Nov 2024 00:42:04 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id 5b1f17b1804b1-433b45c428asm4064825e9.23.2024.11.22.00.42.03 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Nov 2024 00:42:04 -0800 (PST) X-Relaying-Domain: raspberrypi.com From: Naushir Patuck To: Raspberry Pi Kernel Maintenance , Mauro Carvalho Chehab , Florian Fainelli , Broadcom internal kernel review list , Ray Jui , Scott Branden Cc: linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, jacopo.mondi@ideasonboard.com, Dave Stevenson , Naushir Patuck Subject: [PATCH v1 1/5] drivers: media: bcm2835-unicam: Improve frame sequence count handling Date: Fri, 22 Nov 2024 08:41:48 +0000 Message-Id: <20241122084152.1841419-2-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241122084152.1841419-1-naush@raspberrypi.com> References: <20241122084152.1841419-1-naush@raspberrypi.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" Ensure that the frame sequence counter is incremented only if a previous frame start interrupt has occurred, or a frame start + frame end has occurred simultaneously. This corresponds the sequence number with the actual number of frames produced by the sensor, not the number of frame buffers dequeued back to userland. Signed-off-by: Naushir Patuck Reviewed-by: Jacopo Mondi --- .../media/platform/broadcom/bcm2835-unicam.c | 22 +++++++++++++++++-- 1 file changed, 20 insertions(+), 2 deletions(-) diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/med= ia/platform/broadcom/bcm2835-unicam.c index 3aed0e493c81..36fb186a0421 100644 --- a/drivers/media/platform/broadcom/bcm2835-unicam.c +++ b/drivers/media/platform/broadcom/bcm2835-unicam.c @@ -199,6 +199,7 @@ struct unicam_device { /* subdevice async notifier */ struct v4l2_async_notifier notifier; unsigned int sequence; + bool frame_started; =20 /* Sensor node */ struct { @@ -742,6 +743,8 @@ static irqreturn_t unicam_isr(int irq, void *dev) * buffer forever. */ if (fe) { + bool inc_seq =3D unicam->frame_started; + /* * Ensure we have swapped buffers already as we can't * stop the peripheral. If no buffer is available, use a @@ -761,11 +764,24 @@ static irqreturn_t unicam_isr(int irq, void *dev) * + FS + LS). In this case, we cannot signal the buffer * as complete, as the HW will reuse that buffer. */ - if (node->cur_frm && node->cur_frm !=3D node->next_frm) + if (node->cur_frm && node->cur_frm !=3D node->next_frm) { unicam_process_buffer_complete(node, sequence); + inc_seq =3D true; + } node->cur_frm =3D node->next_frm; } - unicam->sequence++; + + /* + * Increment the sequence number conditionally on either a FS + * having already occurred, or in the FE + FS condition as + * caught in the FE handler above. This ensures the sequence + * number corresponds to the frames generated by the sensor, not + * the frames dequeued to userland. + */ + if (inc_seq) { + unicam->sequence++; + unicam->frame_started =3D false; + } } =20 if (ista & UNICAM_FSI) { @@ -795,6 +811,7 @@ static irqreturn_t unicam_isr(int irq, void *dev) } =20 unicam_queue_event_sof(unicam); + unicam->frame_started =3D true; } =20 /* @@ -1413,6 +1430,7 @@ static int unicam_sd_enable_streams(struct v4l2_subde= v *sd, if (unicam->pipe.nodes & BIT(UNICAM_METADATA_NODE)) unicam_start_metadata(unicam); =20 + unicam->frame_started =3D false; unicam_start_rx(unicam, state); } =20 --=20 2.34.1 From nobody Sat Feb 7 22:21:13 2026 Received: from mail-wm1-f99.google.com (mail-wm1-f99.google.com [209.85.128.99]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 7400B188588 for ; Fri, 22 Nov 2024 08:42:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264928; cv=none; b=XlXFGoXedyDy2791pazFzzJmW+FE/nM+SRFLtFKUGhWOhTnRifNwMpkLn96LN9wJPm08xJqFqRjYsscpRSihyiNtvD5KRnHEw3q3zmqQFfIRGF124UEVlCKGU/1R/wqRFokNx6vU+KAxslfr9AZw5cGWfVc2P8k1Q1QIWSrVCgE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264928; c=relaxed/simple; bh=lbGB7IqyGqRJnbeGbuDSS1RlVZkgBlJN4RI9PK5cJOI=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=p/P/eqsgUvzqyWANUapyAw4j+NBzzEjFrapG1qqyErFHtZQmD36iTrCIGhNr9gV8m30osF96DQL0aWwoLsOa4m9GuC4IH9gen0MbXIjG4EG8Ab6LHjkuC5AcF+SpVONs6KBRCq2SdMb2/f0HkOf1PWfugkMNg0uGRfCsm8As95c= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com; spf=pass smtp.mailfrom=raspberrypi.com; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b=fLWB6DLX; arc=none smtp.client-ip=209.85.128.99 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="fLWB6DLX" Received: by mail-wm1-f99.google.com with SMTP id 5b1f17b1804b1-4314b316495so15824345e9.2 for ; Fri, 22 Nov 2024 00:42:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732264925; x=1732869725; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=8nGyAp1GyhYl2oD3HxN0dzLUQsgdlrr/vXHVyJmj6nM=; b=fLWB6DLXO7fihsjt9Zuq1RK5T4Opm61IhBJkjHUyMwjJymGzpC6pnAA9E8rn7K395L HLEd2xKkHrlNF67pWE/Vqs16Fu0i0WixEPCVbI129wI3COObYjyjSxz2svaMwTJOKDxv G/plVqU4It0EllPDPXbG3MDhAbQEWqjSaabiKfUJtobvnbIOGjlRabzAzRBb1oDbYM+I diK1ndVVbNd5/yYeCmaHUlj/bvHNEtDhcYnixahh+OMDUMZoIrYEXtpFstqITCfLu/7f JdclFWWNAG2ChQGM04tlF+esR7WDyGrR94qYTFMoRj0QQo4dh7iL18JZ7n5g6vy0PT3w 5Low== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732264925; x=1732869725; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=8nGyAp1GyhYl2oD3HxN0dzLUQsgdlrr/vXHVyJmj6nM=; b=CR/VL6kt5EEiVCpJB20Q0kVSCmDFzQXFyu10QMCQKgG69Yw5m9Jc/ooutcDQfTKKFr QDMZDUytV6yy0i1V93POhSKUKSTNaIkbnyJW84OGhfwor44Dfw8op2d+Udm7mYnI53e4 +avEc5ijU+YuAjARacfEZ1DOyeR035TDe7/7ufXtqSrXjhVzpebrr7a6hzKgaiCXaFK4 Ie6iD63S3NvnGssM2Agy6ZGZDIWh5NyNf6Jm0xCV3BpPKX0X6Gfu0HkPdTr0czpWYEot 6kJ6Foba23XtU6tDp8iwfU3ZASE9kz4yA2Dzr+pROge3fTIVYIT7aITFnVnjvI0jv9H+ zDww== X-Forwarded-Encrypted: i=1; AJvYcCUVWoKkxRftmrGUpvIg92s8K5NDTzH4XGiWXJTUN4cQJ9SxlxiSqOSL+h6V0coQHfar6TE9vPq2Q18yPsg=@vger.kernel.org X-Gm-Message-State: AOJu0YwObtG4AhZfhqQmRzxtVlupvUeCzNauPpsbvQvu43jN4JTBQrD/ jwFu/SAXVogH83GErjEKWFi84mqudzzED03ZTpGwSRjU8g1VLzmfxAeSIjYRUXsGjH7WOVhnf+t Ahdw65tsMBkQXi8AQgbFxqalabKnzDMsu X-Gm-Gg: ASbGnctESsHIlOqmVogEhRPE/+CNwnc8UppTtmUT4ycz6CqZVM2X7XXzrUuVnQxLx5T RyMg6BvrKHiqWEDVhgMxeJzzwerEMDqncQ5dfHCXJqZxya/dkeLfAI1xvMVrxGrd+YvoY8AGUQx jSbBgNcX+voII99uwS4g70uHTay6wfRbZkLaDW2MEXcGSXnmn7KBrX4nOIrk4+tBKc37KFAoNK9 3VSXqtwKNPihbMbRIiMY3asSLcaBnIjASqfU/0JxNbFGf5llXr8vWYeUBfzYb71bg== X-Google-Smtp-Source: AGHT+IGBo4ecTR47OQ69Kg2GI81fRJ/qHdvasgczFr52mJYtJ+jTJ0+xjnYcKX+CiPOYOl/EB0d0tWUhUZ4W X-Received: by 2002:a05:600c:1c09:b0:42c:bd4d:e8ba with SMTP id 5b1f17b1804b1-433ce4248f6mr14397525e9.8.1732264924627; Fri, 22 Nov 2024 00:42:04 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id 5b1f17b1804b1-433b45d1d3fsm3770515e9.25.2024.11.22.00.42.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Nov 2024 00:42:04 -0800 (PST) X-Relaying-Domain: raspberrypi.com From: Naushir Patuck To: Raspberry Pi Kernel Maintenance , Mauro Carvalho Chehab , Florian Fainelli , Broadcom internal kernel review list , Ray Jui , Scott Branden Cc: linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, jacopo.mondi@ideasonboard.com, Dave Stevenson , Naushir Patuck Subject: [PATCH v1 2/5] drivers: media: bcm2835-unicam: Allow setting of unpacked formats Date: Fri, 22 Nov 2024 08:41:49 +0000 Message-Id: <20241122084152.1841419-3-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241122084152.1841419-1-naush@raspberrypi.com> References: <20241122084152.1841419-1-naush@raspberrypi.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" When matching formats via try_fmt/set_fmt ioctls, test for the unpacked formats as well as packed formats. This allows userland clients setup unpacking to 16-bits from the 10/12/14-packed CSI2 formats. Signed-off-by: Naushir Patuck Reviewed-by: Jacopo Mondi --- drivers/media/platform/broadcom/bcm2835-unicam.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/med= ia/platform/broadcom/bcm2835-unicam.c index 36fb186a0421..d573d4d89881 100644 --- a/drivers/media/platform/broadcom/bcm2835-unicam.c +++ b/drivers/media/platform/broadcom/bcm2835-unicam.c @@ -547,7 +547,8 @@ unicam_find_format_by_fourcc(u32 fourcc, u32 pad) } =20 for (i =3D 0; i < num_formats; ++i) { - if (formats[i].fourcc =3D=3D fourcc) + if (formats[i].fourcc =3D=3D fourcc || + formats[i].unpacked_fourcc =3D=3D fourcc) return &formats[i]; } =20 --=20 2.34.1 From nobody Sat Feb 7 22:21:13 2026 Received: from mail-lf1-f97.google.com (mail-lf1-f97.google.com [209.85.167.97]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 3690C189910 for ; Fri, 22 Nov 2024 08:42:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264929; cv=none; b=Gg3WKg8zyPU8cz7vfcIqKwDCk71vX8cjGY6Fzah19i1FCgT3s92WdTxvfzHcq8gajq4kjfTXpoxqyJbpoC2RB0ilwitKieNmOGMLNAfThz1otBqOqsTeMP7e83r/lv6Q74HsAk0xCeRYJjsKMlpq0V8PrYZrCN+RHR9UP8zGmo8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264929; c=relaxed/simple; bh=dGEolcwuEISeHo+7O9hBTplgIF/4B00JAkeGfZf51eU=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=mpNdp0+WwxpjZ1/s8Jd6lBH4u429i3Gz35r2YPl26oY6l1P+MsDgdhULjLv9lqiICcKYD9TwkpjhLPKPQTjTWXI4bIhCBW2sxKExI5kQFWukLYGfVcak5Wsl1VtCji2q3sjtJj3PyKq9ch5DHuo7bSZJ2zx9xoYlny1N88+Frr4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com; spf=pass smtp.mailfrom=raspberrypi.com; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b=goSbbh1t; arc=none smtp.client-ip=209.85.167.97 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="goSbbh1t" Received: by mail-lf1-f97.google.com with SMTP id 2adb3069b0e04-53da3545908so2125540e87.1 for ; Fri, 22 Nov 2024 00:42:06 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732264925; x=1732869725; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=nxccnoYuwLE+PxJ9V2hHsdBypkFSFevlZOlX7TLkWt4=; b=goSbbh1tLBnWRD3/jZ6Adt82mkxSV4ieZlhqi8X6Th5r0f0T3rjyJ+nEUThBiEYA6M O4fqMwjZeoaiBESsyCDl3XmIyxz/tsD4T4AgZcBGBAZLVTNajISLSX52/pt0qs0YfZLs 1mj21miLULW+/UXIao8zo7YmUz1k7VwLh3dfZNUrCADOr0eOB/Nrrfb7ZBakVL1GbWv3 fgUbsuZZFoloJnErOXPOYS/WdjL3XmxMJH4Ytl2NMHgUuo/dnOD8NvqYCXhmsylqCg5I Rqwqze9DY+tjHiwlIV75KK7Fg4Vrmz383BGKueml6zUU7kLYeMmj3TMmvLh4l7kahh1H 8D8g== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732264925; x=1732869725; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=nxccnoYuwLE+PxJ9V2hHsdBypkFSFevlZOlX7TLkWt4=; b=wrs0F50yEfSVgy4wB/QImuXEtp7UO6WRqujjXSArnBcVsefD0ri78fVferJGGRu7pz oXW0Wf7rMS6B9a3/2sJ+9HdgQZLnshG/R3TdvvOE18rNU99Ab7tPy6RHy1P+2fkTgg8V XWDaOu/2ymnmkuTEY9V2YYVSkCIggy3m0VGbx1kPkQu5LuGfa23zfWWnTN2aqNRSdqoY 79Fuj6lRwRzV9EBCHQ+bLiJZsYlyNqlfrqFTJjpnN1QYmfMuwo0R32Ak7pVKG2LaACTS Ak/OQ69tGt9urVcV6zh7hn8nVb5DzUbHviR4zMJmflA/F4AinQLH+jH72fUJxNSsXmPq eNXA== X-Forwarded-Encrypted: i=1; AJvYcCUsWFyoNRccA+dAFHUA1H0zLexzMXa/7bin98Zu273dPym11Qe1UaOrBm83sdlCJIYgGY1dkp7ipsM/Du4=@vger.kernel.org X-Gm-Message-State: AOJu0Yzs4LDFFoi7Mi7lQPW+fXr63ly32iSXC+dh2tilbhYfL0CYkHtH wm9kQv3I+WlKVPQ/+3DnB+0WcMU1Jfxmr1JY9uvpE5UGlulLOOa2DJPP2Ey2vFK2/hwjyPbuj6j ldfCBUTMYj66hjht5eRrv0nrjOjx8onDG X-Gm-Gg: ASbGncvIUVeJ3+MoJwowgDpAaAEefm5e+4tkz6zIZ2VYyFNZnWFz1sx0A56eOZLZ6vB U1FdrE/BYnEDCjw34/R8v5afHwe/Dr6ZmtpvtuUm98NsuzCDJdBEPZxWNozC9UMHQ+ARni68AsO NUJUtzhA0K7c5A+AC2hQ26F0gumsBJIR3ctgfPkVpH3cePFqipyAjRB6+1q9TQTGJYQTV3UwMx9 y9E+mrF6a9Kcr7OqA9EQsoonsi9PkBZ6dH9UgaQ5v6MWnlJ9W28kD7fKjgWjU/D1g== X-Google-Smtp-Source: AGHT+IHwAlWOag/sSwnY+xt8RVwblyGZ6BChTdlH0nZynOM3MgSiC7yPR98H0nrko8vSm39gGYDDmHy7pXJn X-Received: by 2002:a05:6512:b9a:b0:533:43e2:6ac4 with SMTP id 2adb3069b0e04-53dd3aaff94mr774659e87.49.1732264925192; Fri, 22 Nov 2024 00:42:05 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id 5b1f17b1804b1-433b45acd1csm3682485e9.17.2024.11.22.00.42.04 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Nov 2024 00:42:05 -0800 (PST) X-Relaying-Domain: raspberrypi.com From: Naushir Patuck To: Raspberry Pi Kernel Maintenance , Mauro Carvalho Chehab , Florian Fainelli , Broadcom internal kernel review list , Ray Jui , Scott Branden Cc: linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, jacopo.mondi@ideasonboard.com, Dave Stevenson , Naushir Patuck Subject: [PATCH v1 3/5] drivers: media: bcm2835-unicam: Disable trigger mode operation Date: Fri, 22 Nov 2024 08:41:50 +0000 Message-Id: <20241122084152.1841419-4-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241122084152.1841419-1-naush@raspberrypi.com> References: <20241122084152.1841419-1-naush@raspberrypi.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The imx219/imx708 sensors frequently generate a single corrupt frame (image or embedded data) when the sensor first starts. This can either be a missing line, or invalid samples within the line. This only occurrs using the upstream Unicam kernel driver. Disabling trigger mode elimiates this corruption. Since trigger mode is a legacy feature copied from the firmware driver and not expected to be needed, remove it. Tested on the Raspberry Pi cameras and shows no ill effects. Signed-off-by: Naushir Patuck Reviewed-by: Jacopo Mondi --- drivers/media/platform/broadcom/bcm2835-unicam.c | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/med= ia/platform/broadcom/bcm2835-unicam.c index d573d4d89881..550eb1b064f1 100644 --- a/drivers/media/platform/broadcom/bcm2835-unicam.c +++ b/drivers/media/platform/broadcom/bcm2835-unicam.c @@ -834,11 +834,6 @@ static irqreturn_t unicam_isr(int irq, void *dev) } } =20 - if (unicam_reg_read(unicam, UNICAM_ICTL) & UNICAM_FCM) { - /* Switch out of trigger mode if selected */ - unicam_reg_write_field(unicam, UNICAM_ICTL, 1, UNICAM_TFC); - unicam_reg_write_field(unicam, UNICAM_ICTL, 0, UNICAM_FCM); - } return IRQ_HANDLED; } =20 @@ -1002,8 +997,7 @@ static void unicam_start_rx(struct unicam_device *unic= am, =20 unicam_reg_write_field(unicam, UNICAM_ANA, 0, UNICAM_DDL); =20 - /* Always start in trigger frame capture mode (UNICAM_FCM set) */ - val =3D UNICAM_FSIE | UNICAM_FEIE | UNICAM_FCM | UNICAM_IBOB; + val =3D UNICAM_FSIE | UNICAM_FEIE | UNICAM_IBOB; line_int_freq =3D max(fmt->height >> 2, 128); unicam_set_field(&val, line_int_freq, UNICAM_LCIE_MASK); unicam_reg_write(unicam, UNICAM_ICTL, val); --=20 2.34.1 From nobody Sat Feb 7 22:21:13 2026 Received: from mail-wr1-f98.google.com (mail-wr1-f98.google.com [209.85.221.98]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6D87A18A6D8 for ; Fri, 22 Nov 2024 08:42:07 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.98 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264929; cv=none; b=h17O2pIj6UnoDTljZjB1rTfFZuvb+KY5g5UpT8iTYbb1NS14UtBbZt4WcIndzRigleVq/2Lcgyri3dsBiVOL7G5HDjalKDJWf3YFt/WyQ6f1b0g5Fg401K4J/chyJ/53xpg5bb1XfkKcuuOXDZs5XY+QazRX1sYLWASqpL5tGxY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264929; c=relaxed/simple; bh=Ot66rVNwD26UO/5YVx8cEhDAVFdsS6j0qnhs3PRBvE0=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=JxWO1ti/3iU9b/DnUi14v6yo9AaAGgPXK/LPhpBorHN3RnhZOMcg9Cy8gJfea+1FewXENEJPBCdlSzJaz/UtCzJV3lbsGnpTd6RlZDrpaoSRl9J5jOvamCZn3tQWByz017G9VdLxy1WHJl6YUvuu5D5Krdiua85WhvcxrJBVjyA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com; spf=pass smtp.mailfrom=raspberrypi.com; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b=SeNbLyu3; arc=none smtp.client-ip=209.85.221.98 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="SeNbLyu3" Received: by mail-wr1-f98.google.com with SMTP id ffacd0b85a97d-38245e072e8so1680635f8f.0 for ; Fri, 22 Nov 2024 00:42:07 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732264926; x=1732869726; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=A3SPKEgnk0/CKlGg8ZlQK9CMOXwXblPgVAtkOWHzh5A=; b=SeNbLyu3QnjiBOibbWGufpCV+O1IJs4wyge5FHAOQt4vqgQWglROLrmO0Z6tqPM9Y/ Y+igDc8fHRwwx4LeSga98kjoilJQhaWRaXTDZg5hu0wvU4/F7IpypUBonzr/cXKvRmHn e+XZo69v7OTDsqoZeMmqZNrgH8YNTcX1M7oGm2TOl1rftgm6N2SxWvPnQt9bgZmp6WWi QTc/JErh8duTZyawvKbbqAHKfvf+icHUaFIc3SVp+CcxcEnpMWK12nhXnqnkZGt0n/VK IaBwM0ReAPY1Vi3DMyIavq8/VX40IKZijMkiwdfJpenjuh7MsgxgY611rPZrlsYI8uZ7 jj9w== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732264926; x=1732869726; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=A3SPKEgnk0/CKlGg8ZlQK9CMOXwXblPgVAtkOWHzh5A=; b=Gqf2LIwpue0LN/9Yb/yaXSKCyILQ2kY/o9pAiWiRj3rKIhIOXa7/+iVCizRfObZ6lL ohN2dSydEGoPN0GOeTIEJadVIIOTYBbvPVKkWLedhWTgZiiFzX0gp7fsXfAZ4n+KeEzW yRUjuxANcXB4F1T5d6Ca4gCQFcUFURMef+wo6Bqo8fiWJQ3a9Lwe6VyzoasA2RosuNrN 1mGHieZKV1SoydLZ5HdNFL9uitDgAEr8M1FHdN/Hk1YIFDK//GvdOZ5QZTDi7a+/v8YQ msW0UPztEjlgiIA3hG7TSRaGFQY3RXXUPeilH0CKNlIs6lNidkgtpH7iZwFcinaW8D6E ghHg== X-Forwarded-Encrypted: i=1; AJvYcCUR5c+TME+WutM8WvQs6bSEdYhXYv7z464yr8DT7rOdc37nkox7Axts2FdkKExaAcjNS0u24NDy4ePSePI=@vger.kernel.org X-Gm-Message-State: AOJu0YwFuSYJ/UCD+zfDEfDAfiYLoS5z87zh5FiNxEWs4058yVyMa2yp vzYdWbHvayogcH9XCuIl/cbeGckjeRq6kQDTzvJs7gJ3PTx+4PPieOWs9SNIVpprJ6bRtrn4HtJ gfChEimLRpKjSmStXxPjs292gPw4oJapR X-Gm-Gg: ASbGnctGhBIBrPM09k0tONlHxgAsZNRabs/VUdGgAT+on66zl7xvchK1Bgz+cXLOYDg y5sX4YPXg2RZHtu88lFMvXHsQxWU1vS1MfFQr4Y9VvSHhHdoy9QPpxh4PEMo1tbZPoZQR13e7KH 6KlsWqEiNA65qJ1I3mPuZf3B897JQYmgDl5PfhdKEJKr5LO+lhVBkWEjbl81PvgxxWJBC1s3Iwu XpCfVy/Cic0bgqmliM97U1zx1XV9E6G1jm+Z9m5rq5wttg9K3MDM3v4Bp3r5Oogaw== X-Google-Smtp-Source: AGHT+IHmji/NlhW6PAvhLcBhuxCxYDetKytLXU6htY+yIaqQpm+gV+XdE8J9vax0xtcHo5/qC5bhqV9GxA4x X-Received: by 2002:a05:6000:4189:b0:382:40ad:44b2 with SMTP id ffacd0b85a97d-38260b8b4a4mr1324154f8f.34.1732264925767; Fri, 22 Nov 2024 00:42:05 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id 5b1f17b1804b1-433cde98a88sm1124745e9.36.2024.11.22.00.42.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Nov 2024 00:42:05 -0800 (PST) X-Relaying-Domain: raspberrypi.com From: Naushir Patuck To: Raspberry Pi Kernel Maintenance , Mauro Carvalho Chehab , Florian Fainelli , Broadcom internal kernel review list , Ray Jui , Scott Branden Cc: linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, jacopo.mondi@ideasonboard.com, Dave Stevenson , Naushir Patuck Subject: [PATCH v1 4/5] drivers: media: bcm2835-unicam: Fix for possible dummy buffer overrun Date: Fri, 22 Nov 2024 08:41:51 +0000 Message-Id: <20241122084152.1841419-5-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241122084152.1841419-1-naush@raspberrypi.com> References: <20241122084152.1841419-1-naush@raspberrypi.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" The Unicam hardware has been observed to cause a buffer overrun when using the dummy buffer as a circular buffer. The conditions that cause the overrun are not fully known, but it seems to occur when the memory bus is heavily loaded. To avoid the overrun, program the hardware with a buffer size of 0 when using the dummy buffer. This will cause overrun into the allocated dummy buffer, but avoid out of bounds writes. Signed-off-by: Naushir Patuck Reviewed-by: Jacopo Mondi --- drivers/media/platform/broadcom/bcm2835-unicam.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/med= ia/platform/broadcom/bcm2835-unicam.c index 550eb1b064f1..f10064107d54 100644 --- a/drivers/media/platform/broadcom/bcm2835-unicam.c +++ b/drivers/media/platform/broadcom/bcm2835-unicam.c @@ -640,7 +640,14 @@ static inline void unicam_reg_write_field(struct unica= m_device *unicam, u32 offs static void unicam_wr_dma_addr(struct unicam_node *node, struct unicam_buffer *buf) { - dma_addr_t endaddr =3D buf->dma_addr + buf->size; + /* + * Due to a HW bug causing buffer overruns in circular buffer mode under + * certain (not yet fully known) conditions, the dummy buffer allocation + * is set to a a single page size, but the hardware gets programmed with + * a buffer size of 0. + */ + dma_addr_t endaddr =3D buf->dma_addr + + (buf !=3D &node->dummy_buf ? buf->size : 0); =20 if (node->id =3D=3D UNICAM_IMAGE_NODE) { unicam_reg_write(node->dev, UNICAM_IBSA0, buf->dma_addr); --=20 2.34.1 From nobody Sat Feb 7 22:21:13 2026 Received: from mail-lj1-f225.google.com (mail-lj1-f225.google.com [209.85.208.225]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 0750F1C3F0E for ; Fri, 22 Nov 2024 08:42:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.225 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264931; cv=none; b=FNlooS+Q7MFsl3ux85O7zDjrFtrTEGGeSsp8+v8ISVGV5X1GV/UDl84Z3EBnYlM1SWxRWN1O4CuHzIZ+KBoGVk2BFZKhBnRZ84VfK/syIZnwfvOP8J9wEMzURHEgy7NqPXrIBM7Z6RAIrWFxjbzTVRVq+CqzgANDZUSDtjfL4KM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732264931; c=relaxed/simple; bh=5AKvefdb2FKkKG19uxXZOCMpFrT7SuQ7/tYup9Rr538=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Tgx+IbWkElxWyW8BtPhD1AEqxjCyzXSi/FW35YNmt4hyl4yPUC4uH/dgDz1PR8pvf8biJOO7k79RLWBRI0lQwKH+TPE7QnvHZjgkXzdKhfb+HuVlcDrU+++3fYAKC4SQ2y1xeKEGQo85JD5j7/Hkpgwr8syMfbXb18zWZo9AAx0= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com; spf=pass smtp.mailfrom=raspberrypi.com; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b=jumFb7s0; arc=none smtp.client-ip=209.85.208.225 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=reject dis=none) header.from=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=raspberrypi.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=raspberrypi.com header.i=@raspberrypi.com header.b="jumFb7s0" Received: by mail-lj1-f225.google.com with SMTP id 38308e7fff4ca-2ff64e5d31bso19311011fa.0 for ; Fri, 22 Nov 2024 00:42:09 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732264928; x=1732869728; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=YEuuR+8psNj062NlDHnckyMnQqgbbgHkJzIBccpjbSA=; b=jumFb7s0/s+0uX619lFsGR6mqHQyn0GZws9ZZ3pRtsTXSwwLcGyJYHaz5gebJBf6g4 Vgq5SoX/cf7sCDNSlSbSDQu4zVzUeYP2yfE0r6zqx1huDYta/jVDeIATlSjZbah49n7V fGWGX2MjdPGZN4uqFIzd7r27S5Y4gpemjbQnkxnPehkDgnCY/35LXV3CZC4aomLYGrgb VfrSbXTHXBhkCYUxcbHcp8130VQBzBJUoUnvXrpWjOfr9KQk40hqSmEulBsGs1ughQnv wyT2jpt3FhCCbjdyFvCGsuc2xAquoORCTj6j+ZMZCTydNAExIUUWr13d1rfmuQVoiH4w ZYKw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732264928; x=1732869728; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=YEuuR+8psNj062NlDHnckyMnQqgbbgHkJzIBccpjbSA=; b=vkcesmCy1McCVXVQ0RcrycO8oCTvprq6Bjq2YbIFCu66RnLiPornQT7H+u3IFhGAjN IFTUTJJWSG+YUPkGrI+4PBOxL9QJ2el0rObRr48clIFqdH1+ctmuGKUwBT1t74py0djG 0h2BE6YHpnDiB3BQRy4GK6mdG6HNJ7doC8xf2CbdQ07hefIKh9zYr8FN9lG6NDz2Yr0J ayPSIUAVF+TMCy8KIxkrATPEGpQxoz1uyEGTNAT36zL1jm8z6PeTShZURwKDdOFNoqdu YXuWZDd/iarjoHkM6c31Z1aZZQyMFqSbiUzXLIXdJaiODrJyPjkHRGoKy40SJrPYn9cx sYlQ== X-Forwarded-Encrypted: i=1; AJvYcCW8RSR3bSKmN7I6Tekyk+mfJOFflUY44fAcGdFOi/9rdy/yn/gpuRwlNN7RDhPSgCwkc0N5PA04eEk9j6I=@vger.kernel.org X-Gm-Message-State: AOJu0YxrNRULuAjABcDCJLCtPLiOn6B+vzfcNfzWG8YN3eGP5UgdF8hg n2OKavpHmWMlciTOlNPpm7KhLKfrvjtBYKHC53hikmhE5JWs/XvafUMrLy9con/PawevLJGi7Ic 7Hu2CWBpxxTu0z3WPdQRFcBTDoGz47X7T X-Gm-Gg: ASbGncv+M3oCTMzp6y7X7bFum/UHNAaL0fkAZPCMVxA8Iq29qRDi9KW1dRSt+35ZT/R 2xuIgw9LyfgydGfg3wgXByqiigY/AClFOs8Qwr60Ido3rtYXBiJ5LI8raxdkIgUAdqviRO5qPp2 QqT6B2mR9WAhKHBtH1cJm4CwA8LunZyvMNCIQ9MjTTGQjvhc2U4vsS4ySiOoZsn25OCQ4KWJSB+ 4c/lXy+vUQqhChROXvh3czSteoKf85YuDY2gyQxz7sGdIGX7o2ky/ZHBLwWJX5gQQ== X-Google-Smtp-Source: AGHT+IH59DQEKrXu+FgyMtFbQ1vxHpRwe3lqUuQy9ABiaFsiJEh89r7ztVYjLZAP7d2u3qmvDeDJw57zHVk6 X-Received: by 2002:a05:6512:10ce:b0:539:ea0f:cc43 with SMTP id 2adb3069b0e04-53dd36a0f38mr982109e87.19.1732264927961; Fri, 22 Nov 2024 00:42:07 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id 2adb3069b0e04-53dd243bb76sm31151e87.11.2024.11.22.00.42.06 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 22 Nov 2024 00:42:07 -0800 (PST) X-Relaying-Domain: raspberrypi.com From: Naushir Patuck To: Raspberry Pi Kernel Maintenance , Mauro Carvalho Chehab , Florian Fainelli , Broadcom internal kernel review list , Ray Jui , Scott Branden Cc: linux-media@vger.kernel.org, linux-rpi-kernel@lists.infradead.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, jacopo.mondi@ideasonboard.com, Dave Stevenson , Naushir Patuck Subject: [PATCH v1 5/5] drivers: media: bcm2835-unicam: Correctly handle FS + FE ISR condition Date: Fri, 22 Nov 2024 08:41:52 +0000 Message-Id: <20241122084152.1841419-6-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241122084152.1841419-1-naush@raspberrypi.com> References: <20241122084152.1841419-1-naush@raspberrypi.com> Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" This change aligns the FS/FE interrupt handling with the Raspberry Pi kernel downstream Unicam driver. If we get a simultaneous FS + FE interrupt for the same frame, it cannot be marked as completed and returned to userland as the framebuffer will be refilled by Unicam on the next sensor frame. Additionally, the timestamp will be set to 0 as the FS interrupt handling code will not have run yet. To avoid these problems, the frame is considered dropped in the FE handler, and will be returned to userland on the subsequent sensor frame. Signed-off-by: Naushir Patuck --- .../media/platform/broadcom/bcm2835-unicam.c | 39 +++++++++++++++++-- 1 file changed, 35 insertions(+), 4 deletions(-) diff --git a/drivers/media/platform/broadcom/bcm2835-unicam.c b/drivers/med= ia/platform/broadcom/bcm2835-unicam.c index f10064107d54..0d2aa25d483f 100644 --- a/drivers/media/platform/broadcom/bcm2835-unicam.c +++ b/drivers/media/platform/broadcom/bcm2835-unicam.c @@ -773,10 +773,26 @@ static irqreturn_t unicam_isr(int irq, void *dev) * as complete, as the HW will reuse that buffer. */ if (node->cur_frm && node->cur_frm !=3D node->next_frm) { + /* + * This condition checks if FE + FS for the same + * frame has occurred. In such cases, we cannot + * return out the frame, as no buffer handling + * or timestamping has yet been done as part of + * the FS handler. + */ + if (!node->cur_frm->vb.vb2_buf.timestamp) { + dev_dbg(unicam->v4l2_dev.dev, + "ISR: FE without FS, dropping frame\n"); + continue; + } + unicam_process_buffer_complete(node, sequence); + node->cur_frm =3D node->next_frm; + node->next_frm =3D NULL; inc_seq =3D true; + } else { + node->cur_frm =3D node->next_frm; } - node->cur_frm =3D node->next_frm; } =20 /* @@ -812,10 +828,25 @@ static irqreturn_t unicam_isr(int irq, void *dev) i); /* * Set the next frame output to go to a dummy frame - * if we have not managed to obtain another frame - * from the queue. + * if no buffer currently queued. */ - unicam_schedule_dummy_buffer(node); + if (!node->next_frm || + node->next_frm =3D=3D node->cur_frm) { + unicam_schedule_dummy_buffer(node); + } else if (unicam->node[i].cur_frm) { + /* + * Repeated FS without FE. Hardware will have + * swapped buffers, but the cur_frm doesn't + * contain valid data. Return cur_frm to the + * queue. + */ + spin_lock(&node->dma_queue_lock); + list_add_tail(&node->cur_frm->list, + &node->dma_queue); + spin_unlock(&node->dma_queue_lock); + node->cur_frm =3D node->next_frm; + node->next_frm =3D NULL; + } } =20 unicam_queue_event_sof(unicam); --=20 2.34.1