From mboxrd@z Thu Jan 1 00:00:00 1970 Received: from mail-pf1-f176.google.com (mail-pf1-f176.google.com [209.85.210.176]) (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 273B23EFFBA for ; Tue, 7 Jul 2026 15:24:34 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.176 ARC-Seal:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783437875; cv=none; b=T3pytDII3h3OlzH6Jn79wQXvRsBI+kvUJPuJMKveivFsDjmDXEMnIYWBCwbO5crMwJK+gIrdbp9HEuLoXSsjKq8uXaOqiqL439RSvSOt32ObxHx07hPJOSgpUEPPO1wzOp/uyEejiokEwwN3tZxgoCoKzfvK/ulhSOZQDpoKiJY= ARC-Message-Signature:i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1783437875; c=relaxed/simple; bh=CL1TWI09q6rHhesaHDbX4V0SqZsT9mM7aOBFw0VS9zE=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=sYCQxNEnN3Qf+/bImwz9Sdqsoi08BRQ9rgHurWQjiH67D+R8OQ7WSeweUv/p47JZeNeie+llUOgXnnVGp7yS4aumyDDZPoEh8TNkAYxTA/gkp1sMXGT8MIwzKSA3a2V5dogudYYSzKA6tggAA8bvn3zO/TXzaOS3SvhCgTQMHRs= ARC-Authentication-Results:i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=VcoFtfkF; arc=none smtp.client-ip=209.85.210.176 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="VcoFtfkF" Received: by mail-pf1-f176.google.com with SMTP id d2e1a72fcca58-847e6f03df8so5239699b3a.0 for ; Tue, 07 Jul 2026 08:24:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1783437873; x=1784042673; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to:content-type; bh=5PiSvPUBbt45pXI07lt7UBDjYJzi7dkwQwjZGxzED6A=; b=VcoFtfkFbTm8LRW1UQ/8Y1H17yfEPp1Sst0cgumrlTsrXl0O3c1Ti9Ar43B/983xVf Hzqmj7HcOMjsvzvYiOgf7DNaaAubYqWpcDImqr8clqf3pK8rt1q3FrjW6ESX+BHDhiHZ iwl/5//GWC9YcmELRRCvilzebUvmZue6iZKTDXMwZzY0atW8nJ4rF6vfM/DSarpIcG/O 81uWZuAzOCA8I0hXFEWmClSkIRUl8HOa1+nFjiFfKlbEXPel3xov7rNwuvGXvJTqe+Iw S+YF4DJvePazTjfGOw7CG355jvux1Hp1PtmTOJ3sOqmG5MHnZOwHIdtezlXJgGMmP3qO v4YQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1783437873; x=1784042673; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to:content-type; bh=5PiSvPUBbt45pXI07lt7UBDjYJzi7dkwQwjZGxzED6A=; b=j1SAqKB23klHpUzmtzXm0AZ7ElLgQa4HmZJScghRDo6jShPxRARTwoAolBi5a76s1Y yHTUd22zLFAHG9XfenNv87hFcZng5O+y1Oe2ywp3RCXL1viwTXbWKHnzSP7IRh1/0SNE E+6fWWGQXRQVEnqNO6bEhY+24Ov3J4QzryvIPo52QVL+2zGqSHl/tX8xOSZDi5etwtiF HSYsB8JmyKQX5/Ce4hx8O45ECKm/ITsI+XiybnZx73yZSTdzpkaXh0+bAwmAJZHiU7i3 bVtHTnEZtPMEK44Bw2jUtvMIiqhrz5b02aMvn28VIWNXCRfdqOBJkpPXG2Cs3VfYdMiy Z6BQ== X-Forwarded-Encrypted: i=1; AHgh+RrNz+loA+FrhG6ltb9Y1G209VQ/fzzfnxg3hCjqCgL9hFJhNdS/tPhSerTPbyxJW/WhQgkBKrxbUhykhZc=@vger.kernel.org X-Gm-Message-State: AOJu0Yy5JX0CvB280/T1Isjz/GCsQARdTJjRksbuhWipHdr6rUtNPm5q ycIXGg3hliiPEMKZICtIdJ2Hdpe7aROL0UOOl4J5P0+lZ9g0IzRiuwUi X-Gm-Gg: AfdE7cl+dlIeQci9AoWjiSnL+i9xCDU5B5WCNPy1MLfckHzePdrVR+Dd3Ms5/GSb2zs nXwe/dXIbH/rjGKq7kV3DeoAbz7Joo7H5YrjX3GtyYa19Ttt+WX3BmzAuU8SmODNKBId1g6sgcn EG/+cPR1w8AalxGREgR4FsvE/pDDmyVn8V7aVxFjsMP2/W0gSkVdfdp17GOKIeL3fMtGFfZJNcz sCb5O3X+0b6rT+8w2HAK+n92Khgr3rpj54SPGW8EtPpA0NpMv10LZ+5CSjXN/3zptLXdcA/6kx9 F9EVL6bsbH/AV8Y/BUxvay4avmW6M18lpsjcut4AazkzshcJQ3Qdtjxpy9G0eNi6QxPCTFuPrUm zqGHE4PL+WU4omJ3njT/y5nKiKHPSFpI2P2vNXfsW3VeN1GDdviPt/E2N7xuE/w9kygnIkhiyGL wehurNTeu7LfnoalX4N5FYTM2vsQqBW6cm1w== X-Received: by 2002:a05:6a00:3288:b0:847:893f:2d0c with SMTP id d2e1a72fcca58-84826c1edeamr5779113b3a.5.1783437873353; Tue, 07 Jul 2026 08:24:33 -0700 (PDT) Received: from Alvin.tail8ccd9a.ts.net ([49.216.173.166]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-847f6d7c142sm5652726b3a.45.2026.07.07.08.24.30 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Tue, 07 Jul 2026 08:24:32 -0700 (PDT) From: Hao-Qun Huang To: Sowjanya Komatineni , Luca Ceresoli , Thierry Reding , Jonathan Hunter Cc: Mauro Carvalho Chehab , Hans Verkuil , Greg Kroah-Hartman , linux-media@vger.kernel.org, linux-tegra@vger.kernel.org, linux-staging@lists.linux.dev, linux-kernel@vger.kernel.org, Hao-Qun Huang Subject: [PATCH] staging: media: tegra-video: vi: fix probe failure on skipped last port Date: Tue, 7 Jul 2026 23:24:25 +0800 Message-ID: <20260707152425.571254-1-alvinhuang0603@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: 8bit tegra_vi_channels_alloc() iterates over port nodes and skips those whose reg property cannot be read or whose remote endpoint fails v4l2_fwnode_endpoint_parse(), leaving the negative result of the failed call in ret. If that happens on the last port node, the loop ends with ret still negative and tegra_vi_init() fails the whole VI probe. The same defective port earlier in the ports node is skipped silently, so probing succeeds or fails depending on the order of the port nodes. The CSI equivalent, tegra_csi_channels_alloc(), returns 0 unconditionally after its loop and does not have this problem. Use a separate variable for the per-port checks so that only fatal errors end up in ret. Fixes: 1ebaeb09830f ("media: tegra-video: Add support for external sensor capture") Fixes: 2ac4035a78c9 ("media: tegra-video: Add support for x8 captures with gang ports") Assisted-by: Claude:claude-fable-5 Signed-off-by: Hao-Qun Huang --- diff --git a/drivers/staging/media/tegra-video/vi.c b/drivers/staging/media/tegra-video/vi.c index 456134a9e8cf..f461e117305e 100644 --- a/drivers/staging/media/tegra-video/vi.c +++ b/drivers/staging/media/tegra-video/vi.c @@ -1257,6 +1257,7 @@ static int tegra_vi_channels_alloc(struct tegra_vi *vi) struct device_node *parent; struct v4l2_fwnode_endpoint v4l2_ep = { .bus_type = 0 }; unsigned int lanes; + int err; int ret = 0; ports = of_get_child_by_name(node, "ports"); @@ -1267,8 +1268,8 @@ static int tegra_vi_channels_alloc(struct tegra_vi *vi) if (!of_node_name_eq(port, "port")) continue; - ret = of_property_read_u32(port, "reg", &port_num); - if (ret < 0) + err = of_property_read_u32(port, "reg", &port_num); + if (err < 0) continue; if (port_num > vi->soc->vi_max_channels) { @@ -1289,10 +1290,10 @@ static int tegra_vi_channels_alloc(struct tegra_vi *vi) ep = of_graph_get_endpoint_by_regs(parent, 0, 0); of_node_put(parent); - ret = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), + err = v4l2_fwnode_endpoint_parse(of_fwnode_handle(ep), &v4l2_ep); of_node_put(ep); - if (ret) + if (err) continue; lanes = v4l2_ep.bus.mipi_csi2.num_data_lanes;