From nobody Mon Feb 9 07:11:27 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 21F6E324B19; Thu, 15 Jan 2026 10:08:48 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471729; cv=none; b=UoLQK1XFDwszhYfqX6jK2innnVgfRlxdY6Leew+p1DI8Q7s0tGd77ec2VQX7fktuizBIUYnRlIK5NAgAOZYPQwwr/ndw5R6zeCmetz01+XQcWV23oGrPPd8sfMQ+/fsG+l3Yu0Nv6DFXLHN+2fz/YpZyq5PvyZED5BYO7cpaEKs= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471729; c=relaxed/simple; bh=boadNYZb3yTQIm8omxMbxPhFmxl7jhq903UbqxYtuoE=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=YZBMl0xZFjknsCfxyOUTuGgU65QqVpUwVSPzsGb2Kg/2bo4rwcnQG7R4j3zxNkYUW+4jJVPoiofofLphVGXxH/4LVHEbMHLbMKFsx7ED+FVxPXTv3LVHaGhdmsLqJbxkHkjl7OVBIOIJz6UkmCdGdJFFl382geBzXy2d4yw9XTA= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=B9hySAMt; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="B9hySAMt" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 7805B766; Thu, 15 Jan 2026 11:08:17 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768471698; bh=boadNYZb3yTQIm8omxMbxPhFmxl7jhq903UbqxYtuoE=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=B9hySAMtIv4KKxTdaoxOLOfEBR0O6Z7CtM2lKbyhZsK76v1EILj/vVP4MaXy3R9ty VDWPnLlmi95sLW638yK1LD/RDI8NZJS4liAIW8zYdhEkwni5JKwpDvzuGsCqTuxcsa Qm2/K5+yfq6cLHxfPNbunNW7k0hdCSrSo7OgGhZc= From: Tomi Valkeinen Date: Thu, 15 Jan 2026 12:06:57 +0200 Subject: [PATCH 1/5] media: rcar-isp: Improve ISPPROCMODE_DT_PROC_MODE_VC Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260115-rcar-streams-prep-1-v1-1-f87700926c11@ideasonboard.com> References: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> In-Reply-To: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> To: =?utf-8?q?Niklas_S=C3=B6derlund?= , Mauro Carvalho Chehab , Geert Uytterhoeven , Magnus Damm , Laurent Pinchart , Kieran Bingham Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen , Laurent Pinchart , =?utf-8?q?Niklas_S=C3=B6derlund?= X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2029; i=tomi.valkeinen+renesas@ideasonboard.com; h=from:subject:message-id; bh=boadNYZb3yTQIm8omxMbxPhFmxl7jhq903UbqxYtuoE=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBpaLyphbIBCKgAZTX3Atluvoq3hRCuDCc+LWijH aODCqPW35+JAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaWi8qQAKCRD6PaqMvJYe 9QQBD/4p6xbNc+mV5aBjbZlUXiriw/ohMFVrXNGVnYqNpfgHEmQ6PpF7x2Dj3HpYHuF+oG9KMH+ MOD4Snztm1YtEZCYGo3d5rjqijrixCEG28kXWsOX7DR4HPKEKh60w/MU0YN+L2pC+6iq2fwpEpt B1d0eVIx2SzxeBqex6Y1Aqa2J1fR0jEUoLyhOxQ4Tic/VLTG453/a+P/IH+l5iC3freMthBscvZ hEZ3mUexJ7OgEkrVCzu+hOO115eriGsr9TDKhcqqnZV7lJruXz2O+1cJEbjEiBIvEvBun8e0Fmc eKISneWgp2JTN+FwMYL1/3DGPbCexkLeFeOV4Paf1cWqW7QcvgPNCIdxTd64J8+W/aaxTXPd+kN RZ3nFyyuDi2rx9eq92I2pfCv7F1npFflV8BqzIFH8vSUrvAKJb2EhRgj4GmOdFSBHYZvcS0FeyK Lk/llT7RvNNMgLesLfSBnjk/0nnJz8DFHOxjDTy6xc1npn6dJw9h7K4GZ8v74T0AVx4AUNdrMO5 jfSB8hBEoLwPU4A0auOOrHCbTHB9vAgSOpRoiffrmG//dUVyjK5dujU2o4aWyRrXqeDeDRCQ05R wbezqtDWLM9LOtU0BDyqTrPr+CgCb/ZEL04oVttC3oloCe/zVq8asR9FFhSARQy33lnrzZBIgEu NjlGMrKvMcMuhPg== X-Developer-Key: i=tomi.valkeinen+renesas@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Instead of having four macros for ISPPROCMODE_DT_PROC_MODE_VC[0123](pm), have just one ISPPROCMODE_DT_PROC_MODE_VCn(vc, pm). Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart Reviewed-by: Niklas S=C3=B6derlund Tested-by: Niklas S=C3=B6derlund --- drivers/media/platform/renesas/rcar-isp/csisp.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/drivers/media/platform/renesas/rcar-isp/csisp.c b/drivers/medi= a/platform/renesas/rcar-isp/csisp.c index 1eb29a0b774a..8fb2cc3b5650 100644 --- a/drivers/media/platform/renesas/rcar-isp/csisp.c +++ b/drivers/media/platform/renesas/rcar-isp/csisp.c @@ -28,10 +28,7 @@ #define ISPSTART_STOP 0x0000 =20 #define ISPPROCMODE_DT_REG(n) (0x1100 + (0x4 * (n))) -#define ISPPROCMODE_DT_PROC_MODE_VC3(pm) (((pm) & 0x3f) << 24) -#define ISPPROCMODE_DT_PROC_MODE_VC2(pm) (((pm) & 0x3f) << 16) -#define ISPPROCMODE_DT_PROC_MODE_VC1(pm) (((pm) & 0x3f) << 8) -#define ISPPROCMODE_DT_PROC_MODE_VC0(pm) ((pm) & 0x3f) +#define ISPPROCMODE_DT_PROC_MODE_VCn(vc, pm) (((pm) & 0x3f) << (8 * (vc))) =20 #define ISPCS_FILTER_ID_CH_REG(n) (0x3000 + (0x0100 * (n))) =20 @@ -263,10 +260,10 @@ static int risp_start(struct rcar_isp *isp, struct v4= l2_subdev_state *state) =20 /* Setup processing method. */ risp_write_cs(isp, ISPPROCMODE_DT_REG(format->datatype), - ISPPROCMODE_DT_PROC_MODE_VC3(format->procmode) | - ISPPROCMODE_DT_PROC_MODE_VC2(format->procmode) | - ISPPROCMODE_DT_PROC_MODE_VC1(format->procmode) | - ISPPROCMODE_DT_PROC_MODE_VC0(format->procmode)); + ISPPROCMODE_DT_PROC_MODE_VCn(3, format->procmode) | + ISPPROCMODE_DT_PROC_MODE_VCn(2, format->procmode) | + ISPPROCMODE_DT_PROC_MODE_VCn(1, format->procmode) | + ISPPROCMODE_DT_PROC_MODE_VCn(0, format->procmode)); =20 /* Start ISP. */ risp_write_cs(isp, ISPSTART_REG, ISPSTART_START); --=20 2.43.0 From nobody Mon Feb 9 07:11:27 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9E7033612EE; Thu, 15 Jan 2026 10:08:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471731; cv=none; b=p6FC+26scUJ0q1uQ51GxuOk+n1GV1Rqz/e0N7CZJOgDiCABzghrLCYk/jVvfYppFMIDwYWMLezEPsnVucsiN6P/tIUgubeJhyJ6ysHDZzySzesOW2iaDsRmn59/QEE+rhCJPLv6qI2m3aQypUQZ9rGvk19dBZ4GrpPONa4K/giA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471731; c=relaxed/simple; bh=utOQf1vMGqA6bTOF25Nkik7nQcx6ZmtvMsBSPMxIR6s=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=jYtnIzmhT+acH5QKFjiINhSb+i9d8yF/BqeNQ5mgrL/rrIm40CqYPZJgnFf4EbpkCnoiZcc3g527n2Z1WOOqGxZ1ILefCEALTRH6ZPIWEi78ud0Jmr2DcSnTPalgnnaA5mFBHhyUqLVdyIElY3BEBGgSVzgdrgho2bfSBxYOMgU= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=L0vmEiST; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="L0vmEiST" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 3785A289A; Thu, 15 Jan 2026 11:08:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768471698; bh=utOQf1vMGqA6bTOF25Nkik7nQcx6ZmtvMsBSPMxIR6s=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=L0vmEiSTN6P5diHMFBbfpmryYBSZQhPlLo1709dcM2LtMDsk/T4CT+Vhou97PoGKm 71hWjHIqVj7mvfias5Oimo/ebzAwfzwLPfxl8toECz1nIVElvQ8xsjFj+IdyFNqzpl f0mbZgog6G8h5yO2bZwtmpeEINs/vJAY/hkQggVM= From: Tomi Valkeinen Date: Thu, 15 Jan 2026 12:06:58 +0200 Subject: [PATCH 2/5] media: rcar-csi2: Improve FLD_FLD_EN macros Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260115-rcar-streams-prep-1-v1-2-f87700926c11@ideasonboard.com> References: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> In-Reply-To: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> To: =?utf-8?q?Niklas_S=C3=B6derlund?= , Mauro Carvalho Chehab , Geert Uytterhoeven , Magnus Damm , Laurent Pinchart , Kieran Bingham Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=1329; i=tomi.valkeinen+renesas@ideasonboard.com; h=from:subject:message-id; bh=utOQf1vMGqA6bTOF25Nkik7nQcx6ZmtvMsBSPMxIR6s=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBpaLyqzoFgM9MIGR3uO+VWAJ5eltfGJ2VKLwVEi z2KKhFYL5yJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaWi8qgAKCRD6PaqMvJYe 9VSZD/41FYSDZdCuGj8jBY4amaT9+edGUAaZz+TNX13/Y+sHgjg/1Aw8CU4J20umWsVu6zrkXhd cYUtzSWkIaxcmggJE+sJLr38tH74RwwC2QLs7Ja5AK0LVbA0NcyJMOMvyR5aM9urbm5OMY+7/bC ibaY95C6/FlwxblcvWskoIqFEZy9JH4yocfn7OIYPJJmBzSylV0EObmKIKW/b2ghscOSFixdMnx hf2Gpf2qomnUw14pkscL/s2oYtCZcbOUTGL8aNHAGjsdZqpCoRIyEbHlYj1hUWU1CiFK3k2q1/D MCVBwt33O4z+6f3jDM4NAbB7cRHXnarEX1csqlrobXcSeKBT98snEopC+AMFpggJsEVybAv/ruU xYuFKkBwqbo4TWgIsABwkgjtX7b2V3kEZH1UuTCpP5Z0btRQ/pbIHWz8hGJcRNdC0WTZhW5pRRS PfRpIJvVHuwF/3PRRP9+1RlFAZd13eAn2qmBonpmWss76vx1w7LV24OqV6iZmFp1xb47RkN394b AqE3wpkYuzf1AsY4WWXychfvNp6FMO/7qsx7Qw3UbrjCcMrGOCxo9ovgZmDkDg/jXMSFWuK2c1R IbWmxOqNwUKO6u9S2SSlg9S4BlPrbvOk0LxHjh+oNuwrZwZ7BQsH3cNUtLFc17tiWO6fTwue3/2 29dcKijddnlO+QA== X-Developer-Key: i=tomi.valkeinen+renesas@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Instead of having four macros for FLD_FLD_EN for different channels, have just one FLD_FLD_EN(ch). Signed-off-by: Tomi Valkeinen Reviewed-by: Niklas S=C3=B6derlund Tested-by: Niklas S=C3=B6derlund --- drivers/media/platform/renesas/rcar-csi2.c | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/renesas/rcar-csi2.c b/drivers/media/pla= tform/renesas/rcar-csi2.c index d1b31ab8b8c4..3cd35adb6803 100644 --- a/drivers/media/platform/renesas/rcar-csi2.c +++ b/drivers/media/platform/renesas/rcar-csi2.c @@ -71,10 +71,7 @@ struct rcar_csi2; #define FLD_REG 0x1c #define FLD_FLD_NUM(n) (((n) & 0xff) << 16) #define FLD_DET_SEL(n) (((n) & 0x3) << 4) -#define FLD_FLD_EN4 BIT(3) -#define FLD_FLD_EN3 BIT(2) -#define FLD_FLD_EN2 BIT(1) -#define FLD_FLD_EN BIT(0) +#define FLD_FLD_EN(ch) BIT(ch) =20 /* Automatic Standby Control */ #define ASTBY_REG 0x20 @@ -1082,8 +1079,8 @@ static int rcsi2_start_receiver_gen3(struct rcar_csi2= *priv, } =20 if (fmt->field =3D=3D V4L2_FIELD_ALTERNATE) - fld =3D FLD_DET_SEL(1) | FLD_FLD_EN4 | FLD_FLD_EN3 | FLD_FLD_EN2 - | FLD_FLD_EN; + fld =3D FLD_DET_SEL(1) | FLD_FLD_EN(3) | FLD_FLD_EN(2) | + FLD_FLD_EN(1) | FLD_FLD_EN(0); =20 /* * Get the number of active data lanes inspecting the remote mbus --=20 2.43.0 From nobody Mon Feb 9 07:11:27 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id B4BBB3612F1; Thu, 15 Jan 2026 10:08:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471732; cv=none; b=jfx0dNyOz4RsiH1zpQvJb8v3qnSRb3T1kUvOM7vw6ihvUpg+Mjp9DLgoTLtnsEx74+LXZ0ExSSs6sbMuLuyYOGV8o0PkpJCQKQ+GoDdqBd8vgCYZNu9am0/g2xSMuY8xGOLY4pTGC2+06brjYpHz4I/r+fEH9pOIobIfbxfwjrw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471732; c=relaxed/simple; bh=oJTMzq1/AjVMQ8PbrqI2byVCzIoQUjjtUIKEjmzniEU=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=myltZv1QloXBMpoQDBLVVjN9RhKzQR8iIEVIEJKXOADK/xqFkLkrAM1EwcI5jFDGdMwdaBu0GEyc1+SFQD6RptkiEh0/CtNWbUSYAMtKVnQuKVb+u9aHuzkev2rPE4Eggxe+A7cHZEwJpC3b5lPiEav9BCcjd6agvmZzg5fw1pg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=tl0aBZLZ; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="tl0aBZLZ" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id D8BE728F5; Thu, 15 Jan 2026 11:08:18 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768471699; bh=oJTMzq1/AjVMQ8PbrqI2byVCzIoQUjjtUIKEjmzniEU=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=tl0aBZLZVm+X7rNcZf4tFmrTMQS9Tc+DAP1UWflRiqi5uJewdSbEQ5dp7Fq+NDYGN mpnfnpaDCQNR+yMds1Kuef9H5Ns606oztkZ8v4VNR+WKQGa0YhnQQsZwJh5CYMyZIa Jh9vc/uOBI0FgzTmgco7eLvFphnmC56aIfFWBuEM= From: Tomi Valkeinen Date: Thu, 15 Jan 2026 12:06:59 +0200 Subject: [PATCH 3/5] media: rcar-csi2: Move rcsi2_calc_mbps() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260115-rcar-streams-prep-1-v1-3-f87700926c11@ideasonboard.com> References: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> In-Reply-To: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> To: =?utf-8?q?Niklas_S=C3=B6derlund?= , Mauro Carvalho Chehab , Geert Uytterhoeven , Magnus Damm , Laurent Pinchart , Kieran Bingham Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen , Laurent Pinchart , =?utf-8?q?Niklas_S=C3=B6derlund?= X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2376; i=tomi.valkeinen+renesas@ideasonboard.com; h=from:subject:message-id; bh=oJTMzq1/AjVMQ8PbrqI2byVCzIoQUjjtUIKEjmzniEU=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBpaLyqEa1KfRPmOM1br6Ps7xj8XBKbyZTvJ9pmW k9qK/kipJGJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaWi8qgAKCRD6PaqMvJYe 9aYyD/oDJ3euuXmXCt2bZKc+vvqnmqT3yu2xlY9cR/Q/Fc5dh8Q/WMy0Tqw6PqgH8iUuvVdUEt/ M1zoSDRu22LZDximQ07SC77IYsuDBJRTKK0cBubqdp3qjOPw/dq6JhyVYvn2qBrCzhA1H3dM7dk nmb7+4uUli3iRWPtgUQMuVvPycGweBWD8yR2Elp34HftwmMLIoW/JOQvLgKWmRPgAp4ssNPD/bV KlYC+BlZyVs8pmcnSncctqhAxJYPhJOiwp9/r7Kes2CucPKHJ/kCDxWENvrcLkfiT0zRNFsGR7F 8oLbbYbx4fptqqmNKavtHcXU/3b8an4j54/FLoYUDG3sYSP8VhBbKOMZnorbfjWtXLTQ1YAuZ2z eqbrQRBpoqj8SC8hlKrOK5bfXNrJppAeZ9eFThUhvKSlDT/i9m1qVlNozNlavIBkN6XGT46TqSw BGhKQF3f/HHsUyVqUsuZ7YKhz+tPL5Bjf8CyVPqK1FZTUPeEZbPoYuq/AigD07Z9jKTbD/4TxYW F/ogBFa60wSyj15w70H9E/y8FvZyRWsM2SMPQ7//2F/wGmqhYpHmCyd5Wr1yvbPpzShGX5+taKi RyAtS+SroBibZY6qSfRhaKAg1zNssFtReTRCnDvnzq4UANDbIHWisuw1rK0037IsfsKob/YN3fj BZrn+Nffm4LL7hQ== X-Developer-Key: i=tomi.valkeinen+renesas@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Move the function so that it can call rcsi2_get_active_lanes() in the following patch. No functional change intended. Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart Reviewed-by: Niklas S=C3=B6derlund Tested-by: Niklas S=C3=B6derlund --- drivers/media/platform/renesas/rcar-csi2.c | 58 +++++++++++++++-----------= ---- 1 file changed, 29 insertions(+), 29 deletions(-) diff --git a/drivers/media/platform/renesas/rcar-csi2.c b/drivers/media/pla= tform/renesas/rcar-csi2.c index 3cd35adb6803..8032fa4f7a8a 100644 --- a/drivers/media/platform/renesas/rcar-csi2.c +++ b/drivers/media/platform/renesas/rcar-csi2.c @@ -956,35 +956,6 @@ static int rcsi2_set_phypll(struct rcar_csi2 *priv, un= signed int mbps) return 0; } =20 -static int rcsi2_calc_mbps(struct rcar_csi2 *priv, unsigned int bpp, - unsigned int lanes) -{ - struct media_pad *remote_pad; - struct v4l2_subdev *source; - s64 freq; - u64 mbps; - - if (!priv->remote) - return -ENODEV; - - source =3D priv->remote; - remote_pad =3D &source->entity.pads[priv->remote_pad]; - - freq =3D v4l2_get_link_freq(remote_pad, bpp, 2 * lanes); - if (freq < 0) { - int ret =3D (int)freq; - - dev_err(priv->dev, "failed to get link freq for %s: %d\n", - source->name, ret); - - return ret; - } - - mbps =3D div_u64(freq * 2, MEGA); - - return mbps; -} - static int rcsi2_get_active_lanes(struct rcar_csi2 *priv, unsigned int *lanes) { @@ -1032,6 +1003,35 @@ static int rcsi2_get_active_lanes(struct rcar_csi2 *= priv, return 0; } =20 +static int rcsi2_calc_mbps(struct rcar_csi2 *priv, unsigned int bpp, + unsigned int lanes) +{ + struct media_pad *remote_pad; + struct v4l2_subdev *source; + s64 freq; + u64 mbps; + + if (!priv->remote) + return -ENODEV; + + source =3D priv->remote; + remote_pad =3D &source->entity.pads[priv->remote_pad]; + + freq =3D v4l2_get_link_freq(remote_pad, bpp, 2 * lanes); + if (freq < 0) { + int ret =3D (int)freq; + + dev_err(priv->dev, "failed to get link freq for %s: %d\n", + source->name, ret); + + return ret; + } + + mbps =3D div_u64(freq * 2, MEGA); + + return mbps; +} + static int rcsi2_start_receiver_gen3(struct rcar_csi2 *priv, struct v4l2_subdev_state *state) { --=20 2.43.0 From nobody Mon Feb 9 07:11:27 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A6D0361DBC; Thu, 15 Jan 2026 10:08:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471735; cv=none; b=h23Zb++9ZpXqOnaGJ1sbOBoKbz9Bpf+jlWQY9zIOCGfYEOd0BbuTJu7PU/gZoIGwCM4+ut+7ou/7ZRm08kqys6AC4rIGHenyptMnEtnyv/QXZMspJlPW0Yj2QmWNhBA5YMjL6FELM+MGcskjsKFthsE1WAKaH71NYTp8BR0DlIY= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471735; c=relaxed/simple; bh=eTBBPNaGXVujuMVaMDyD5WAUtGtB3Iz2GSBQlnIJYdY=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=m9ZeP1eCmNWLJDMeKkW8bBfiaI2jhwr/nJpeymGFugxsFpNwFQoYyspdf6RfJhXebwxO5XTZxjQnSv43de5UwTy1hoFCGltDmAeCSktZk/kEoqYaJ0KdABKv5O+KZZTcI/D1xWi3cWSYQfoYxGM/rOvsCNKdvt0mNWvLdXgaXx4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=f4r6Cjw1; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="f4r6Cjw1" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 9C98728F7; Thu, 15 Jan 2026 11:08:19 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768471700; bh=eTBBPNaGXVujuMVaMDyD5WAUtGtB3Iz2GSBQlnIJYdY=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=f4r6Cjw1mJufvqEo3emOY4hg55zKEE/QGk6kJZ+F9GMVuX1aU+WXnBW6LJZz4TIZR WKNR/aMrM0oDH+YyycEOdqZ+sC3hq+O/vUyWNINPmiJqbdTtPgboIvvIG93aw2bYn9 YR3sfK6/LU7pbJm3e70cpIblVJc1B/+Mi5sQXQX0= From: Tomi Valkeinen Date: Thu, 15 Jan 2026 12:07:00 +0200 Subject: [PATCH 4/5] media: rcar-csi2: Simplify rcsi2_calc_mbps() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260115-rcar-streams-prep-1-v1-4-f87700926c11@ideasonboard.com> References: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> In-Reply-To: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> To: =?utf-8?q?Niklas_S=C3=B6derlund?= , Mauro Carvalho Chehab , Geert Uytterhoeven , Magnus Damm , Laurent Pinchart , Kieran Bingham Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen , Laurent Pinchart , =?utf-8?q?Niklas_S=C3=B6derlund?= X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=3857; i=tomi.valkeinen+renesas@ideasonboard.com; h=from:subject:message-id; bh=eTBBPNaGXVujuMVaMDyD5WAUtGtB3Iz2GSBQlnIJYdY=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBpaLyqF7167wHo+drMRZPBcTHaGefdYQXdoFo/u lNorOn+lKeJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaWi8qgAKCRD6PaqMvJYe 9et+D/44X5rSjOx6UXwEdFP2FxCApdN39BIbhF3BHrJ8D6SqmmoK82l5s5N7ZIISW5JIHh/HGIu AX5Wga2FHvINlxdxs+sgvvIbwmdPwsUCTtLFRCwdwKOcjnalJr6MI25COuxGEdBK46ww23gnhwm htW79VL597DNMgy0yM9YVuHyZukLP9kYVmABrUIRiGMCSu0uMh/VcsiABKReOleLM1c4gfApgUq IbxbpCyN5EmBEbUWYXDDD9w971geFMJTM6/Iqaeqj6cGEZWFma/QuzApQFHSOPMlGymbt0PhpJK cOk1wYNt/Rm1/NOKBZ9S8nUnSDJAnMvXLtknO91asb3ZppdCtvoTnRETR9axVBlM3uq9Er0A1/I EbHLzxd75FMvmx6MHV3aMHfDdDRbGJucl4a7fo5BxyCgGoXbdwjcDNU7/fcoyUy4TYyupI6oFwj T6pnHiNvI4lQmGa3JuTUPPxSkNZg3flDkCrXJYCT5s0eg3jicYCUritTOpo2vkOT1bNz6dD8HyD LTGhhHprry8FOsLWLWQybF8lJL4MTCs0s670+HdOQHOpOKWolMDH3Fnd29hEeokMIXZ6Pf0nGRD xkCh2YBUWvCkpO1UNmoms+28cNIhazQ1FWQ6FtukAJ5FICye+vvnK57K4YHD1kQICFXQ6GJ+ZId ep2l7aI1AaHgmvw== X-Developer-Key: i=tomi.valkeinen+renesas@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 Instead of taking the bpp and the number of lanes as parameters to rcsi2_calc_mbps(), change the function to get those parameters inside the function. This centralizes the code a bit and makes it easier to add streams support. Also, in the future when the legacy (non-link-freq) code is removed, there will be no need to change rcsi2_calc_mbps() parameters. Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart Reviewed-by: Niklas S=C3=B6derlund Tested-by: Niklas S=C3=B6derlund --- drivers/media/platform/renesas/rcar-csi2.c | 45 ++++++++++++++++----------= ---- 1 file changed, 24 insertions(+), 21 deletions(-) diff --git a/drivers/media/platform/renesas/rcar-csi2.c b/drivers/media/pla= tform/renesas/rcar-csi2.c index 8032fa4f7a8a..a2a87c5bfd7c 100644 --- a/drivers/media/platform/renesas/rcar-csi2.c +++ b/drivers/media/platform/renesas/rcar-csi2.c @@ -1003,13 +1003,18 @@ static int rcsi2_get_active_lanes(struct rcar_csi2 = *priv, return 0; } =20 -static int rcsi2_calc_mbps(struct rcar_csi2 *priv, unsigned int bpp, - unsigned int lanes) +static int rcsi2_calc_mbps(struct rcar_csi2 *priv, + struct v4l2_subdev_state *state) { + const struct rcar_csi2_format *format; + struct v4l2_mbus_framefmt *fmt; struct media_pad *remote_pad; struct v4l2_subdev *source; + unsigned int lanes; + unsigned int bpp; s64 freq; u64 mbps; + int ret; =20 if (!priv->remote) return -ENODEV; @@ -1017,6 +1022,20 @@ static int rcsi2_calc_mbps(struct rcar_csi2 *priv, u= nsigned int bpp, source =3D priv->remote; remote_pad =3D &source->entity.pads[priv->remote_pad]; =20 + ret =3D rcsi2_get_active_lanes(priv, &lanes); + if (ret) + return ret; + + fmt =3D v4l2_subdev_state_get_format(state, RCAR_CSI2_SINK); + if (!fmt) + return -EINVAL; + + format =3D rcsi2_code_to_fmt(fmt->code); + if (!format) + return -EINVAL; + + bpp =3D format->bpp; + freq =3D v4l2_get_link_freq(remote_pad, bpp, 2 * lanes); if (freq < 0) { int ret =3D (int)freq; @@ -1093,7 +1112,7 @@ static int rcsi2_start_receiver_gen3(struct rcar_csi2= *priv, phycnt =3D PHYCNT_ENABLECLK; phycnt |=3D (1 << lanes) - 1; =20 - mbps =3D rcsi2_calc_mbps(priv, format->bpp, lanes); + mbps =3D rcsi2_calc_mbps(priv, state); if (mbps < 0) return mbps; =20 @@ -1475,23 +1494,15 @@ static int rcsi2_start_receiver_v4h(struct rcar_csi= 2 *priv, struct v4l2_subdev_state *state) { const struct rcsi2_cphy_setting *cphy =3D NULL; - const struct rcar_csi2_format *format; - const struct v4l2_mbus_framefmt *fmt; unsigned int lanes; int mbps; int ret; =20 - /* Use the format on the sink pad to compute the receiver config. */ - fmt =3D v4l2_subdev_state_get_format(state, RCAR_CSI2_SINK); - format =3D rcsi2_code_to_fmt(fmt->code); - if (!format) - return -EINVAL; - ret =3D rcsi2_get_active_lanes(priv, &lanes); if (ret) return ret; =20 - mbps =3D rcsi2_calc_mbps(priv, format->bpp, lanes); + mbps =3D rcsi2_calc_mbps(priv, state); if (mbps < 0) return mbps; =20 @@ -1732,23 +1743,15 @@ static int rcsi2_init_common_v4m(struct rcar_csi2 *= priv, unsigned int mbps) static int rcsi2_start_receiver_v4m(struct rcar_csi2 *priv, struct v4l2_subdev_state *state) { - const struct rcar_csi2_format *format; - const struct v4l2_mbus_framefmt *fmt; unsigned int lanes; int mbps; int ret; =20 - /* Calculate parameters */ - fmt =3D v4l2_subdev_state_get_format(state, RCAR_CSI2_SINK); - format =3D rcsi2_code_to_fmt(fmt->code); - if (!format) - return -EINVAL; - ret =3D rcsi2_get_active_lanes(priv, &lanes); if (ret) return ret; =20 - mbps =3D rcsi2_calc_mbps(priv, format->bpp, lanes); + mbps =3D rcsi2_calc_mbps(priv, state); if (mbps < 0) return mbps; =20 --=20 2.43.0 From nobody Mon Feb 9 07:11:27 2026 Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 6A767361DBE; Thu, 15 Jan 2026 10:08:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=213.167.242.64 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471735; cv=none; b=OmrIot9nfw0ERbBagwnjNpPiX2IIEaHwiCzf3cw69SvAct9VsIaig7oKshSbek4jmDMKPU3fYIM6s6mCE6xiTNRHJLMx2/4dgF/ppBmYFpg0+Yn8qGVBMC6PgrZ/gLPO2yn7wfUj/L3Ed+OiVCTHq3tOrZCoHsyQZiIuI0+IB/8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1768471735; c=relaxed/simple; bh=NL9eNhiG2nuGrT5ZCLL8BloiD5r1HsSyMJQi7O2DGME=; h=From:Date:Subject:MIME-Version:Content-Type:Message-Id:References: In-Reply-To:To:Cc; b=qyK5n1dVyRx8U9gen9n6HBN+Q6NnfXgZkQSyStPi75odpIXZDDlbbHr3kbm5VtFzSDwY7fy0sv67ZFktzIiVj578SHgoPxeZ01aiLvZnn98OGJ0faxOPkIrMfnMXxaXYR38RQRuPqHMB9tMvHcUtGSn3ueNFEfY1CBTZGKi4NO4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com; spf=pass smtp.mailfrom=ideasonboard.com; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b=PLVma0cN; arc=none smtp.client-ip=213.167.242.64 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=ideasonboard.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="PLVma0cN" Received: from [127.0.1.1] (91-158-153-178.elisa-laajakaista.fi [91.158.153.178]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 5F58D28F9; Thu, 15 Jan 2026 11:08:20 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1768471700; bh=NL9eNhiG2nuGrT5ZCLL8BloiD5r1HsSyMJQi7O2DGME=; h=From:Date:Subject:References:In-Reply-To:To:Cc:From; b=PLVma0cNUuoQ5hghKI2m8LskdrJnlfQPaQFCi8fDhpeijF3vzqlW3knnWS9foFRrK muhwUq4sP3gX1CBP1qTIMhdXjig2snJTOLw7N8Cucn+rizGfS7psUVRapRLR7fTlXj DPx7akITp4aJNlQkaIFsSyFGO6RXhBbT8asowHw8= From: Tomi Valkeinen Date: Thu, 15 Jan 2026 12:07:01 +0200 Subject: [PATCH 5/5] media: rcar-csi2: Optimize rcsi2_calc_mbps() Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: quoted-printable Message-Id: <20260115-rcar-streams-prep-1-v1-5-f87700926c11@ideasonboard.com> References: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> In-Reply-To: <20260115-rcar-streams-prep-1-v1-0-f87700926c11@ideasonboard.com> To: =?utf-8?q?Niklas_S=C3=B6derlund?= , Mauro Carvalho Chehab , Geert Uytterhoeven , Magnus Damm , Laurent Pinchart , Kieran Bingham Cc: linux-media@vger.kernel.org, linux-renesas-soc@vger.kernel.org, linux-kernel@vger.kernel.org, Tomi Valkeinen , Laurent Pinchart X-Mailer: b4 0.15-dev-c25d1 X-Developer-Signature: v=1; a=openpgp-sha256; l=2953; i=tomi.valkeinen+renesas@ideasonboard.com; h=from:subject:message-id; bh=NL9eNhiG2nuGrT5ZCLL8BloiD5r1HsSyMJQi7O2DGME=; b=owEBbQKS/ZANAwAIAfo9qoy8lh71AcsmYgBpaLyr7zKkqrSX+/2ZKNqUxCmfR7pLed9qOHq33 cuj9kD9zJSJAjMEAAEIAB0WIQTEOAw+ll79gQef86f6PaqMvJYe9QUCaWi8qwAKCRD6PaqMvJYe 9SfyD/0Y0rxmGTiAUyx+GUgohGw/0yeVAwxig+h0HHfII5ucUUo4s4xM+ZETju3sYGN3DGobj/0 eKq+JUD24M7OxbepAItXISg5MsOBQdd2SDw87v1YbeQdEa9lrM18qx6WPy40s7n6Ct85XavI5vy 5YhzOu36bGB4yqQ5BG3jrTmKgKXrjacJ84S0ZfuCKVA7ygHFv25aGlND2AKz0O14ItWCrdC4gcG EAFYBucVZjfJJpfcjRrAWfqMCelORty9D186I0c/YIpz41Jl1yqkkDwL37seEgEMyq1bdh4A6ud IxvT3cRp1ZnW55mMJUu6mPACA0RCycUnHOL44u/ct1C3jpw+OViRCfWZppiiBO1RxI2aYl2Mno0 svAO6nKU5UImH0zkhAoZ7jHrdmXbs6ql/HByQOn8G3TUZMxqckZw7X6OYE7htEBTg9rAbZk/Cz5 aAO18DW7pZ7/ER7ZUTovmafPgw/g+afFjEsVbVQUAvhi+oX0Zf2f24WuF0qucZR2Gt7E0szW4pp wEgnsupESPACNteo0hX2v9cDduy0nAKfFuO4mRgSjhDXGRmWZcFOTDToUglTfsl0ataLo9Gm8/7 lBf4pRYV/hy1kc/mIPJ/pMpSAYwmMF6ic9gmFwh6Z/6KCEwR209/VLgWThNc+R8asfveSoqE88h 3fpGbFsZq+3T9yw== X-Developer-Key: i=tomi.valkeinen+renesas@ideasonboard.com; a=openpgp; fpr=C4380C3E965EFD81079FF3A7FA3DAA8CBC961EF5 With modern drivers supporting link-freq, we don't need to do any calculations based on the bpp and number of lanes when figuring out the link frequency. However, the code currently always runs code to get the bpp and number of lanes. Optimize the rcsi2_calc_mbps() so that we only do that when needed, i.e. when querying the link-freq is not supported by the upstream subdevice. Signed-off-by: Tomi Valkeinen Reviewed-by: Laurent Pinchart Reviewed-by: Niklas S=C3=B6derlund Tested-by: Niklas S=C3=B6derlund --- drivers/media/platform/renesas/rcar-csi2.c | 50 +++++++++++++++++---------= ---- 1 file changed, 29 insertions(+), 21 deletions(-) diff --git a/drivers/media/platform/renesas/rcar-csi2.c b/drivers/media/pla= tform/renesas/rcar-csi2.c index a2a87c5bfd7c..7305cc4a04cb 100644 --- a/drivers/media/platform/renesas/rcar-csi2.c +++ b/drivers/media/platform/renesas/rcar-csi2.c @@ -1006,15 +1006,10 @@ static int rcsi2_get_active_lanes(struct rcar_csi2 = *priv, static int rcsi2_calc_mbps(struct rcar_csi2 *priv, struct v4l2_subdev_state *state) { - const struct rcar_csi2_format *format; - struct v4l2_mbus_framefmt *fmt; struct media_pad *remote_pad; struct v4l2_subdev *source; - unsigned int lanes; - unsigned int bpp; s64 freq; u64 mbps; - int ret; =20 if (!priv->remote) return -ENODEV; @@ -1022,28 +1017,41 @@ static int rcsi2_calc_mbps(struct rcar_csi2 *priv, source =3D priv->remote; remote_pad =3D &source->entity.pads[priv->remote_pad]; =20 - ret =3D rcsi2_get_active_lanes(priv, &lanes); - if (ret) - return ret; + /* + * First try to get the real link freq. If that fails, try the heuristic + * method with bpp and lanes (but that only works for one route). + */ + freq =3D v4l2_get_link_freq(remote_pad, 0, 0); + if (freq < 0) { + const struct rcar_csi2_format *format; + const struct v4l2_mbus_framefmt *fmt; + unsigned int lanes; + unsigned int bpp; + int ret; =20 - fmt =3D v4l2_subdev_state_get_format(state, RCAR_CSI2_SINK); - if (!fmt) - return -EINVAL; + ret =3D rcsi2_get_active_lanes(priv, &lanes); + if (ret) + return ret; =20 - format =3D rcsi2_code_to_fmt(fmt->code); - if (!format) - return -EINVAL; + fmt =3D v4l2_subdev_state_get_format(state, RCAR_CSI2_SINK); + if (!fmt) + return -EINVAL; =20 - bpp =3D format->bpp; + format =3D rcsi2_code_to_fmt(fmt->code); + if (!format) + return -EINVAL; =20 - freq =3D v4l2_get_link_freq(remote_pad, bpp, 2 * lanes); - if (freq < 0) { - int ret =3D (int)freq; + bpp =3D format->bpp; =20 - dev_err(priv->dev, "failed to get link freq for %s: %d\n", - source->name, ret); + freq =3D v4l2_get_link_freq(remote_pad, bpp, 2 * lanes); + if (freq < 0) { + int ret =3D (int)freq; =20 - return ret; + dev_err(priv->dev, "failed to get link freq for %s: %d\n", + source->name, ret); + + return ret; + } } =20 mbps =3D div_u64(freq * 2, MEGA); --=20 2.43.0