From nobody Sat Feb 7 10:08:05 2026 Received: from mail-lj1-f227.google.com (mail-lj1-f227.google.com [209.85.208.227]) (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 E46441EF096 for ; Wed, 27 Nov 2024 11:15:21 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.227 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706123; cv=none; b=jDRlROsl9Zskgf29cVcEE++m7XhTTYl6O5pVyMTiLFPnXZJK1JRO4DKvEdPzUOFmqtyd90wvw53v2uV4eh2XCorKpgG0iWMmJDzfj+J+u5LeqfhgAYrM3cMdILh0Y2PMcNmzvmfXeErelCJP1+pkuKgXfkB4DnTSB7rDtgm9VdM= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706123; c=relaxed/simple; bh=wnthNX/wVIc0cJrqj82UcQ/NTxF5OCTEjQVgalgz04g=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=p8PH+OctdP0K4wGU1yrBmtCplSs0D8XE4Lg2Nj9B0W2WcuI8x+8fEYJgdgj3v0wKOhtEwAVOYWvvuorVgb4N3KROB6tYSZvRqsrs1XQOr6uagQW9hgL/+vUJngFeAuLioFOitZ/WXYGGb0FLxqlkDAmc0QzoCmyiQHrFmGf6u+Y= 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=GvFlc/eV; arc=none smtp.client-ip=209.85.208.227 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="GvFlc/eV" Received: by mail-lj1-f227.google.com with SMTP id 38308e7fff4ca-2f75c56f16aso75906341fa.0 for ; Wed, 27 Nov 2024 03:15:21 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732706120; x=1733310920; 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=NDLmlhfFf3fKmWcDI3ja5XlaBhDY7yQ7y51lLCUjcJ4=; b=GvFlc/eVExxzD77pgreiWaDXtUAgGU142RVCehNvGc0t4aDDdxIFVb88ix1QtkxYvK 696J2bvfQKFeEAcuANqlUOjuXJlRd2Mud49J0n5Scw2U/pfAu/yZggLyZVxGHSrNsoK5 pvYA5UAJhGgLlQeWFjt0X2m8MMHaQIIZfHp7GHketMHBUEGgp3bQ9iVhVozj5TvF/tSN hDotuKg0s5R91uS5smnboBCAQRI3UbErGrGQnHen9rylmsFhdZKAGjlorhFVlhltmfDK VCJixSdP0Nq2/MdMnNsBcdrIB5E/viMmY+jKTwLB7rOO61cs+EAj8dS3VrC3hsHaLTry +hbQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732706120; x=1733310920; 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=NDLmlhfFf3fKmWcDI3ja5XlaBhDY7yQ7y51lLCUjcJ4=; b=YITP4a9jubvQcuBd+5tIABQMPkaVc0lxcdS8YtzUR9XV7VliaiVxc7T3s5nodD2Nab ReBLNeCeRUvH+XZHw4aDMQ6vtoTebsmaK9+GHdRHyGZBFz9A3i4n3e4jFGVQxLvnjrdu +XShTidw+1RPjW3T3pd8Ek2CDkmcs+grNNuUeONyWzykC3J7NiR6X9KeGp1nT4Z9zPdY xnEtAaAKtp4cT1+Jb39BRkhj+jbBt6qEE1qTdiOcWh5+q/mHQguhk3sbpkq2iBx3rGq6 Y0hM6Im3bXV1uAZ0iaiUH0SLU8/9Yat9tiNDhdMLhgdPp5u7djFapySzLQgY/NJ+U78A mpKA== X-Forwarded-Encrypted: i=1; AJvYcCW79z0FxgIHO9MP97x8mv//X30z/S/6yVamQPgl30JLwCAEDa8hPo3OoiFQbaU9GWlKXBV0pcBGUzxvhhQ=@vger.kernel.org X-Gm-Message-State: AOJu0YyCTsDCYunyS1BfpYcmLAxgkIn72MJVDx78DnjHUjZfzxK4O48d SL8TdAW3bTT2Vds76Tyx42B5DwqdFWUBZjIMXusAKowaGB36+QnbrDM6NPJ6qolhcsD/XC89Aw2 bdfTSFxgX7PoiwyqTyQRA6EZ10V4zS2bN X-Gm-Gg: ASbGncs8ZCnVnOsPltx0RlW+1XOc86tMu2t1J6OxE+pbcOWe2LJQQ3Pd0wbV2pz4uis xYhYzSdPZ71+DEfeG4FYtk6tbJhCWitcp7nPWCdIW3luH/5BTj4JASWSlkuhIdb9EhQcX+d6TSm wPeMsBkAICuD7t8jnp1nq2t0q4LDRuUjzR08HY8mQdwR/WAsnNEmabyVAcaqG2h43Wf3coJ4n1F Vydh2dl1lUknahVSt4GCZ43X24ET6HKFCo00fQMBv7iOioLvyz8fo7uwtVubeShpA== X-Google-Smtp-Source: AGHT+IGTwoCSNs5BBDwFG/AtnZDnL6h+6Oxq6PET6Ihsy3bf1ZEmlnpsnNPW65FRF37uJIGFAM/fVa2LEDdW X-Received: by 2002:a05:651c:211a:b0:2ff:c67f:5197 with SMTP id 38308e7fff4ca-2ffd605a257mr12586081fa.13.1732706119878; Wed, 27 Nov 2024 03:15:19 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id 38308e7fff4ca-2ffa5eddedcsm1274321fa.59.2024.11.27.03.15.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Nov 2024 03:15:19 -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 v2 1/4] drivers: media: bcm2835-unicam: Improve frame sequence count handling Date: Wed, 27 Nov 2024 11:15:12 +0000 Message-Id: <20241127111515.565992-2-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241127111515.565992-1-naush@raspberrypi.com> References: <20241127111515.565992-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 10:08:05 2026 Received: from mail-wr1-f99.google.com (mail-wr1-f99.google.com [209.85.221.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 57D231EF0A4 for ; Wed, 27 Nov 2024 11:15:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.99 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706124; cv=none; b=uckuMdITLW+D79J0CZBRjcvNlmHkm57Nitmk9/ZE/VAv+f9ykb56vsPKCIZMqbChVRWO3qJqs9OUZktDxSxsY1mny/1JXpUvILEBkWBa4LW1961Ms1BUUhqDeyiuQNz00hrFKJJ/Pin2vuQmojOUAvhiKTKvprMK+ycqcaLMurA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706124; c=relaxed/simple; bh=PK2PHh+2gJf3de2h3H9Noa2ztPJEtrgRbPaRX2eG3SQ=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=HeWzPoOusZ0eRtc4aBdkDVPn3nMPHeWsnE7TxQDWcJWIpKhO3bY9P6Hohcgq5cxZZLYYMmPKI52W/ozk1FMY5yIYAVIlT/PWmnCLnqYJJ5ZqkvBAOZX/5mtFGf/o5jDkml+c0IX/9c7HvivazAaXzIsmTCyXxpJHMdaJtgXFAg8= 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=Srf1O2gR; arc=none smtp.client-ip=209.85.221.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="Srf1O2gR" Received: by mail-wr1-f99.google.com with SMTP id ffacd0b85a97d-382442b7d9aso5048583f8f.1 for ; Wed, 27 Nov 2024 03:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732706121; x=1733310921; 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=+2z95vIVxpdoEpIHV1Hs2li8opRkM10lvZmaKrYhPuQ=; b=Srf1O2gRn+t2ltotUUHoW7a4uYg4cKjXRFB6ynUWmDdhQW3niqNk4CRiqn90Og8hK7 GjAh/x59oPmuPJg0b36cdDyqVh/DyQkfcfrG3qCXd4QJcKMDH1LnD8bH/qtmBvdmbAP/ yD5fFybx46GusOUmb5erxw1qvwfJdrJ9M506Sf0K2tLDtXtoaJndYs4wgU/7TJnXzcG9 88Ar88GoRZD8NNubQWvazv4wLE+KxAlLja1xMkoqzvy08eyKasbQhGmpHhGiQ+Z/pLlQ 76tobu3r0IDKOU6kQ71R+euauxq4g2HuNGDWl2tJgkqnRA8qTaMStDFjtoZVDkHDRf+G /wZA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732706121; x=1733310921; 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=+2z95vIVxpdoEpIHV1Hs2li8opRkM10lvZmaKrYhPuQ=; b=g31ImCTCJUaSBjPAeKPdtrpHnsgEK+6TTbRkKHC3Jj7ruKqLOlgaMs40pnXXw+1CmP 9DluHusSfrqu4PrUr9DDNuomaS6tTVFW5SbL5s4pwjSFwUPC7n+9uGOynEvGOkCuwGtb ZYA9lcBYheb8klAYBX0IWZvc05b8NE7a33+0TwcZXTm51pioDQKVkfYnKGoLHyd60S1o AYMdikfP1HoSWfOATHbGR675InuA/MMlcIWpJ8dyrvLbiAwJzLgI6IownNh7XFV7uIOx Ca6vPBIVXUB4oxpXgmaflcq4YaOnVJvv5FUaYaq+DJ7NOUF5JeyW3FOZV12FsQjkptyd y2nw== X-Forwarded-Encrypted: i=1; AJvYcCXoHE9v6aoagd0FsXWCmTz/nllskrL+onrWdobg5jrng46dMzpjv7fazVVZG3FHNlksWl7mYg7uMT1ehBA=@vger.kernel.org X-Gm-Message-State: AOJu0Yz0yY8JuXWL8VxOZs7axjKR4hplIdBIoKpXSAAlA5i5/9k+LFMG 7QxgpbQbHrTxGEU3uMxTBerKSIuA21iEUz++YBBsFw92QLJVtZA47jnH6RaDAsfRDvfABN/EAej qZ7Wb5ge6kN0RN0RiWqbn9ireL1oG4wZM X-Gm-Gg: ASbGncs32g/g8z4UFJpm0vKgFUGHmODfOkJi4elAHYRKNkYJLYd8Zib44bzsQPedmw5 9IlSTzG6uHoNAGzmLlMXtNuoty0C5tJPqVIn+bnJy1SokvD1664IriptUjmz4hc+boJ+cFqZNcr jUonOBk/fgg2P8ov7yVWOzLnNWHGkPKPW+ceeBjR4xiq9Wx93UevcnnE5UKTvs5dlorgtK9WiUU dDk2cGvFQaQYLjbJmbsUrw9Yozd/nmz7KBV7q3eCIJYSPm7NWUWCiXpcbT27IleSg== X-Google-Smtp-Source: AGHT+IFqYJhAmhFIs4MrJEK2DwK6ZnHRiHMIjhqtLKd1Q8gK+tAk+5Dr+yVE8hWUGs5AFt4Q0h739aNEfBbT X-Received: by 2002:a05:6000:18a5:b0:382:2349:5a7b with SMTP id ffacd0b85a97d-385c6ebba1cmr1732527f8f.16.1732706120527; Wed, 27 Nov 2024 03:15:20 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id ffacd0b85a97d-3825fd0041fsm441847f8f.95.2024.11.27.03.15.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Nov 2024 03:15:20 -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 v2 2/4] drivers: media: bcm2835-unicam: Allow setting of unpacked formats Date: Wed, 27 Nov 2024 11:15:13 +0000 Message-Id: <20241127111515.565992-3-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241127111515.565992-1-naush@raspberrypi.com> References: <20241127111515.565992-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 10:08:05 2026 Received: from mail-wr1-f97.google.com (mail-wr1-f97.google.com [209.85.221.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 B5C0B1EF0AC for ; Wed, 27 Nov 2024 11:15:22 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.221.97 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706124; cv=none; b=EMdF12esRNqTNC/sIfWqdKx78fEd/M5mtWqjIjvF/uzhP1WSRvym0UhQelTWeEj+4qE4kYh6RMCB8cfVxpamFqX9j45tW2ynij8TbhEPRp8rJ7C0mG4qmDBbN0WhcOnlFpjOThmIa9M9R6U4M6dFsHFO8rrvR5XNzYm9Ry4Y2W0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706124; c=relaxed/simple; bh=6GnAB8AluBnog7NYl4+hJYVAAOZJGkmDUBrswi9xVtY=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=hy2yXWXIq+9eWWh0s9VUb9NDzehkabapEPUYXINQFkdxgZEOJutzhZu2rSYsxqLV3lZi3G0LIWgtrvdlujEr/Zaga7OXYMtX664YcB1ZJiKq5nBgm5W1epMUeozdNSvq+5575KNu2bkjqdTh6Bm4OOg5crAW1JzEbq5ODoMBQbs= 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=AobZesyZ; arc=none smtp.client-ip=209.85.221.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="AobZesyZ" Received: by mail-wr1-f97.google.com with SMTP id ffacd0b85a97d-382433611d0so5558697f8f.3 for ; Wed, 27 Nov 2024 03:15:22 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732706121; x=1733310921; 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=E8u/tqgNbTDWlnzWRktGlQ9tYzEXbqX8e0KFyaCvDAo=; b=AobZesyZ8E7j3C71TYrOJAH7NDf1o5LrcepcRO3w580ZEYfIdebIP1hP/KD409sMJQ NfiWVntSB5ezBYpHSgfvJTVL5W8W4b3eylFzL4hCp4dDlhPZnHT5gjTh9IXr5BjZHs6+ LWdEaVJdSg4lbjuk4lAO4bh1lzdf4Sfh6KrF9kSvQgLf0lHfGo61tepnt9aFoDtSk/dP GFxxYjBCUDa1KwRzJk6OhMQipu0x5I5De+oqEZMpCvbX46jUpS/klBappqowMNEz7W2h kS/PjpDSibO2uhM6jtcfUVu6/g5TJYnAUcIZIEtikiTOFz5bI3kt/1ITh4b306OLuNu6 M/xw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732706121; x=1733310921; 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=E8u/tqgNbTDWlnzWRktGlQ9tYzEXbqX8e0KFyaCvDAo=; b=n7H6iGyK3yBi/VFi6EUJhCQ7yRvN3quzw5H57wAqSQmx4AI6GQNSO8L5E7wlvJUFD5 OZm5VxpE082f71k8PHOF4lAk1pwNLY6q6/C0/zW3HqUWzD96xLzrUy62lfZXxbZOqugv OYD537UNqnOgDewoeMSQ5iPOOr4ZPGViSKvt/DJib6ghn/2s2Y6oSBZjVMqe3UEFvZ+y kJ4pj30M3dqPyTRsm9JliRD8D00dbRoE/gosUc3Wlx/pdq7cSr3VcpHBMoOj6eM8zKeD y/1QhRF12RNhdN3OolZd4hxSwmPow9vMkpmtfcg1yAqBeho3vmVDsw9+qBMYntPBlmwn 7k/w== X-Forwarded-Encrypted: i=1; AJvYcCUpG65Vgk/crFx0wpEkzsCw15IEkMqWiZLoHPvpXMRxy0RgAtjs1qQxSbsdyPTMa3HwghhqUFIiOen6lYQ=@vger.kernel.org X-Gm-Message-State: AOJu0YwdUi15uaVJFUHk0D5asizTxDf/V+qpVR1MgSGEkt/i73mxsDtC lYRXehPIM/SowZNGp1T25EWY8OBmgkmm3ttNYRypXK7AQ9gh9r90QZ/NC7VCVNnjGti36MJKokq vZ8DvfAnrZtpN1YCV5f0h0sLawvP+UFBj X-Gm-Gg: ASbGncuXk7ygsTNVBsJQ9PvsXkRAGH5ZaqfJUTu4tc7gsehoKO0u4RKbrptwjHFdlwM QbbTTXc4GfFALC+EF653XQKnizHJVbeJ4MRM5Qpj4zUUhA5Zl9PEt1OhGd+E0SKb7FTegsnSz7a Y/TMDHnovzm/gq1PAFVQL+AQlZEV7iv/xWYzl+8hPckvsExejV6ahZ5uLXWrfDKpydW798esiN+ 7nJrTnqKm3thh/vZv8l1PDuNoFTXrI7oP9Jo+oW4xlrUJSO2tIWS+VEdRGKSzWJ3Q== X-Google-Smtp-Source: AGHT+IF6UYuhlMZWwu6G6XRnHvnHedKpIlZ7ngLVPHb1A9KO+apfgpcWvh597QK+I/YFytjWK0k3yOJSuLhK X-Received: by 2002:a05:6000:389:b0:381:d890:b5b7 with SMTP id ffacd0b85a97d-385c6edd314mr2620035f8f.52.1732706121160; Wed, 27 Nov 2024 03:15:21 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id ffacd0b85a97d-3825fbee19dsm441144f8f.82.2024.11.27.03.15.20 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Nov 2024 03:15:21 -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 v2 3/4] drivers: media: bcm2835-unicam: Disable trigger mode operation Date: Wed, 27 Nov 2024 11:15:14 +0000 Message-Id: <20241127111515.565992-4-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241127111515.565992-1-naush@raspberrypi.com> References: <20241127111515.565992-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 10:08:05 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 6DB871EF0BA for ; Wed, 27 Nov 2024 11:15:23 +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=1732706125; cv=none; b=szLGzF88jC35qZFBuBWp71h8RU3KdRshOAe5kbBWhqOtQ23RXRBH0oij3ypBxsFEdsoSY/KP19idHga+Z6P1iKmo9quNYK4u8xEWQi4CeaxdFmM3rw0Jwbsw4+R6fY98hJa1trnA3yKoT9Iv57s6m4qIe+/wJUPug/1sKbzm4ug= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1732706125; c=relaxed/simple; bh=2NOMVN6qGPtVqsDC17KQHFq1EI6laocjfEVCvcsOBBg=; h=From:To:Cc:Subject:Date:Message-Id:In-Reply-To:References: MIME-Version; b=Sp57WpJl6bkYgTetQOJU9Yuj47B4C+Rmk5GxH9q9ao6case7sq8gmUZeElAjesKeZe+aOJCbQzBtFAvleDOBTi/iUS0B4cjxRLTNjIoBRzzc//CkD+10o9m//gvVYCziK3sLZYqc4ogymAh4mqGB82+QJBmPZXKcLY4GEDv4Z2I= 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=ZYOOX5Y+; 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="ZYOOX5Y+" Received: by mail-wm1-f99.google.com with SMTP id 5b1f17b1804b1-434a752140eso13510885e9.3 for ; Wed, 27 Nov 2024 03:15:23 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=raspberrypi.com; s=google; t=1732706122; x=1733310922; 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=5OeHJ5VmorUPFsKfp3L5ZEPCj51aQDOtY3qfB7PKLqU=; b=ZYOOX5Y+se1tjjUYxEZHrGnY/yP9C2leTZbrej6Qztnuf88JZLSq6jFxCEpqfK1/KI HAsiLtv6QOtcmebU7wmnRx5SaxTVnyrasAw1siS0RAZFgkQrRSLsU624aD8HNa0lnxtO rI7A/8zC+6IonQy73W68FpT02Ol5uRLgt7clK6ZBeIRK/yhu2YS5JWSJ2bctiBDfjN89 pltH5kCFbfc3GarmzUbPr5JFdJx7PoYvE4jJ3SqZX8TkRSBtBYCQaXtwoyZfwZwhMqru GXWTkcJhMQZ7Mp6MeTm7YtiU7/ftN4OKGzLar9kfpbxvRXZ9LBRwXjOmeNTbM5pLrAYn BFCg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1732706122; x=1733310922; 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=5OeHJ5VmorUPFsKfp3L5ZEPCj51aQDOtY3qfB7PKLqU=; b=V7ecI0mwGZCEEvYtVM+2QxOoop3bMlcVxscnBEiPBhgFuVc6zf3TvPx5h5KFfcqhkw S7rfTCIG/ksX8UA4JPJSGu0bxlWjp6B8QDrT6ZTfu1lOxRxrp5DaJnxFC8qxNcdwby/r pVYqxIYGjVe5iPZUOCLx7H0h1O/IEfVIj+HH4KUOgeV1rYskcD5aBFActTsY0Q4s9J8i P5AbeG/7Qw0Shtxyl3FbjRSjNcfLCSaJDgD3j2VayPvtxqZ4RaKICwX1s0/kEQfM+yYF GTebcbJvmfua8dUgDfcxLSsORxeMNsbht3JU5ZB2sxV0jjOdtYTc6QCCEvYN+IQT3mNv uBew== X-Forwarded-Encrypted: i=1; AJvYcCXzfixUf43d6rpZNIccoXllsnr2ibCCnh9HWqXSBWo5HTADzaeZG19OFsJs9veWFB8pwxC2EeJ6C3SPyBo=@vger.kernel.org X-Gm-Message-State: AOJu0YwdRtdH7oLjp4aweTiOyYIVxwtZwK4IQUxbjXwKnkWRO0qL3KJo hSGL4iQ50MiIFduPfZqgdrqWTVYryFxQ98n/4DM1tCbEjNi8mIsnmh1c8N7mr00fYxo6gxi2GEW hNH8qarJxk67cfEG74BStTJ/Aby6QxaOv X-Gm-Gg: ASbGnctCg9kAUttyNThJGp5FUONEnfRjnrGeaeIHev0x/W1L78fFLKU6c8k8ZLDHla0 Eg4TJrfzO8ZuDUxgtDjHNB+kaAUcDpFah/6hrOW/v0zrOrYZy5eMe6dlU8RKjHSj72SgKV/WP/J VHBhZl+s/P6a3pq36IPUFDnbR5S7q82kYOBL+Osem8DNWanW+/uTnRr4ac+m0fYv0t6T54Gs6r0 NLbTH/LmooECe7iY593WAtr7MXW0oi7Hpyt51ck0/PfDOY/o1xbI7bj/m7vr7N+tA== X-Google-Smtp-Source: AGHT+IG8NIxF+WfvLMMyexhQ4F78Jja+ecK4xzKxkdy9lOD0O56mEG25LOMSGylsAkrpJskIxuI6TCXFkAK1 X-Received: by 2002:a5d:47a4:0:b0:382:5066:326f with SMTP id ffacd0b85a97d-385c6eb72bamr1917091f8f.17.1732706121697; Wed, 27 Nov 2024 03:15:21 -0800 (PST) Received: from raspberrypi.com ([93.93.133.154]) by smtp-relay.gmail.com with ESMTPS id ffacd0b85a97d-3825fae4853sm441870f8f.4.2024.11.27.03.15.21 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Wed, 27 Nov 2024 03:15:21 -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 v2 4/4] drivers: media: bcm2835-unicam: Fix for possible dummy buffer overrun Date: Wed, 27 Nov 2024 11:15:15 +0000 Message-Id: <20241127111515.565992-5-naush@raspberrypi.com> X-Mailer: git-send-email 2.34.1 In-Reply-To: <20241127111515.565992-1-naush@raspberrypi.com> References: <20241127111515.565992-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