From patchwork Wed Mar 26 12:19:36 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030014 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 5FE151DF72C; Wed, 26 Mar 2025 12:20:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991619; cv=none; b=TVD7Uf1Ccr7/rfl7//3L7EhSwPZzGP3h5IJkKixdUQ2uSucx8qwQXMUBsJP94WT6eZ6W70nq6VR80O/AAyeDM0vA+/ksU/VujOFOc9Cn8AMaiM+Mmfiojnq+IrwEWk8d45iSnutwF3FQeo/6OMzKp6rBUWhViHXLzx66gZG7w9s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991619; c=relaxed/simple; bh=A6JpH/98dDThSHnV9RRCfbwnEY1eT9OWBNi+CRv7WI4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=GW8WqVlsmdUumC9YNr0UrfA63RFGyRZFPEvFuzTEUTZwu1mq4UzqOlLviPe9Xvjgjq89+DUF6dkHZ5yO/zZxgEnlne8aFhRit3h9+ln8MFyWs4Hlg9Qju84yFJrj9J2fCWZvTlv+ZkWw2CxnhYGh9SjXSWnbikmPP9JcMvTOiFc= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: yPzQ169bSXu2kJMsMlxL2A== X-CSE-MsgGUID: KGCG/m9CQwe85Ikt5d5reQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:17 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 67AD240104CB; Wed, 26 Mar 2025 21:20:11 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm Cc: Biju Das , Fabrizio Castro , Simon Horman , Duy Nguyen , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , Conor Dooley Subject: [PATCH v7 01/18] dt-bindings: can: renesas,rcar-canfd: Simplify the conditional schema Date: Wed, 26 Mar 2025 12:19:36 +0000 Message-ID: <20250326122003.122976-2-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 RZ/G3E SoC has 20 interrupts, 2 resets and 6 channels that need more branching with conditional schema. Simplify the conditional schema with if statements rather than the complex if-else statements to prepare for supporting RZ/G3E SoC. Acked-by: Conor Dooley Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * No change. v5->v6: * No change. v4->v5: * The rules for R-Car Gen3/4 could be kept together, reducing the number of lines. Done the similar change for rzg2l-canfd. * Retained the tags as it is trivial change. v3->v4: * No change. v2->v3: * Collected tags. v1->v2: * No change --- .../bindings/net/can/renesas,rcar-canfd.yaml | 99 +++++++++++-------- 1 file changed, 60 insertions(+), 39 deletions(-) diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml index f6884f6e59e7..4a83498b2a8b 100644 --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml @@ -45,7 +45,35 @@ properties: reg: maxItems: 1 - interrupts: true + interrupts: + oneOf: + - items: + - description: Channel interrupt + - description: Global interrupt + - items: + - description: CAN global error interrupt + - description: CAN receive FIFO interrupt + - description: CAN0 error interrupt + - description: CAN0 transmit interrupt + - description: CAN0 transmit/receive FIFO receive completion interrupt + - description: CAN1 error interrupt + - description: CAN1 transmit interrupt + - description: CAN1 transmit/receive FIFO receive completion interrupt + + interrupt-names: + oneOf: + - items: + - const: ch_int + - const: g_int + - items: + - const: g_err + - const: g_recc + - const: ch0_err + - const: ch0_rec + - const: ch0_trx + - const: ch1_err + - const: ch1_rec + - const: ch1_trx clocks: maxItems: 3 @@ -117,52 +145,55 @@ allOf: then: properties: interrupts: - items: - - description: CAN global error interrupt - - description: CAN receive FIFO interrupt - - description: CAN0 error interrupt - - description: CAN0 transmit interrupt - - description: CAN0 transmit/receive FIFO receive completion interrupt - - description: CAN1 error interrupt - - description: CAN1 transmit interrupt - - description: CAN1 transmit/receive FIFO receive completion interrupt + minItems: 8 + maxItems: 8 interrupt-names: - items: - - const: g_err - - const: g_recc - - const: ch0_err - - const: ch0_rec - - const: ch0_trx - - const: ch1_err - - const: ch1_rec - - const: ch1_trx + minItems: 8 + maxItems: 8 resets: + minItems: 2 maxItems: 2 reset-names: - items: - - const: rstp_n - - const: rstc_n + minItems: 2 + maxItems: 2 required: - reset-names - else: + + - if: + properties: + compatible: + contains: + enum: + - renesas,rcar-gen3-canfd + - renesas,rcar-gen4-canfd + then: properties: interrupts: - items: - - description: Channel interrupt - - description: Global interrupt + minItems: 2 + maxItems: 2 interrupt-names: - items: - - const: ch_int - - const: g_int + minItems: 2 + maxItems: 2 resets: maxItems: 1 + - if: + properties: + compatible: + contains: + enum: + - renesas,rcar-gen3-canfd + - renesas,rzg2l-canfd + then: + patternProperties: + "^channel[2-7]$": false + - if: properties: compatible: @@ -171,16 +202,6 @@ allOf: then: patternProperties: "^channel[4-7]$": false - else: - if: - not: - properties: - compatible: - contains: - const: renesas,rcar-gen4-canfd - then: - patternProperties: - "^channel[2-7]$": false unevaluatedProperties: false From patchwork Wed Mar 26 12:19:37 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030015 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C42281CB9E2; Wed, 26 Mar 2025 12:20:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991626; cv=none; b=EOzGugqy/05lMSO+nTZtLw6b4CZ0mYpYRwQAUSe4tYujZXVRHE7pLPMGEvM/wT7gS85/ohee92yXx6bwxiKKJdAr9c2U2ndVRvj36x12Rm5ns+61rcITvUOUpgwMONYvvieJtoq4rvCYCCRxTCUHoXSUFJreOvbNdXtWm6LpIGg= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991626; c=relaxed/simple; bh=uB96c8FVSanIDqgW9dypHZSlVs4aD9u/ihR0qGBBQts=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ufCsV9wxI/KNGruz5huFSD/BZV2GA85BmcYlIr647sQJwh7GKpHby/68hyA7wjBfe8xLQh9R3XYN35YUFGXopLWdQ3Xl985ZV19A2ym7BsF0OcVIWq+/dt7S2eKGAlpA3X+xUTr03WZsf1fu+sZNwP2pQTNPeyDJDUw0xMCc5l4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: vu1Ti2sOTSu+FQqdpGlo4g== X-CSE-MsgGUID: /uOEKz12TKaHkHhCTgD6cA== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:22 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id B163440104FA; Wed, 26 Mar 2025 21:20:17 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol , Rob Herring , Krzysztof Kozlowski , Conor Dooley , Geert Uytterhoeven , Magnus Damm Cc: Biju Das , Fabrizio Castro , Simon Horman , Duy Nguyen , linux-can@vger.kernel.org, devicetree@vger.kernel.org, linux-renesas-soc@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das Subject: [PATCH v7 02/18] dt-bindings: can: renesas,rcar-canfd: Document RZ/G3E support Date: Wed, 26 Mar 2025 12:19:37 +0000 Message-ID: <20250326122003.122976-3-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Document support for the CAN-FD Interface on the RZ/G3E (R9A09G047) SoC, which supports up to six channels. The CAN-FD module on RZ/G3E is very similar to the one on both R-Car V4H and RZ/G2L, but differs in some hardware parameters: * No external clock, but instead has ram clock. * Support up to 6 channels. * 20 interrupts. Reviewed-by: Rob Herring (Arm) Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Keeping interrupts and resets together allows to keep a clear separation between RZ/G2L and RZ/G3E, at the expense of only a single line. * Retained the tags as it is trivial change. v3->v4: * Added Rb tag from Rob. v2->v3: * Replaced maxItems->minItems: 20 for RZ/G3E interrupt,s as the list has 20 elements and for existing platforms dropped minItems and keep maxItems: 8. v1->v2: * No change. --- .../bindings/net/can/renesas,rcar-canfd.yaml | 76 +++++++++++++++++-- 1 file changed, 70 insertions(+), 6 deletions(-) diff --git a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml index 4a83498b2a8b..f4ac21c68427 100644 --- a/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml +++ b/Documentation/devicetree/bindings/net/can/renesas,rcar-canfd.yaml @@ -42,6 +42,8 @@ properties: - renesas,r9a07g054-canfd # RZ/V2L - const: renesas,rzg2l-canfd # RZ/G2L family + - const: renesas,r9a09g047-canfd # RZ/G3E + reg: maxItems: 1 @@ -59,6 +61,19 @@ properties: - description: CAN1 error interrupt - description: CAN1 transmit interrupt - description: CAN1 transmit/receive FIFO receive completion interrupt + - description: CAN2 error interrupt + - description: CAN2 transmit interrupt + - description: CAN2 transmit/receive FIFO receive completion interrupt + - description: CAN3 error interrupt + - description: CAN3 transmit interrupt + - description: CAN3 transmit/receive FIFO receive completion interrupt + - description: CAN4 error interrupt + - description: CAN4 transmit interrupt + - description: CAN4 transmit/receive FIFO receive completion interrupt + - description: CAN5 error interrupt + - description: CAN5 transmit interrupt + - description: CAN5 transmit/receive FIFO receive completion interrupt + minItems: 8 interrupt-names: oneOf: @@ -74,15 +89,33 @@ properties: - const: ch1_err - const: ch1_rec - const: ch1_trx + - const: ch2_err + - const: ch2_rec + - const: ch2_trx + - const: ch3_err + - const: ch3_rec + - const: ch3_trx + - const: ch4_err + - const: ch4_rec + - const: ch4_trx + - const: ch5_err + - const: ch5_rec + - const: ch5_trx + minItems: 8 clocks: maxItems: 3 clock-names: - items: - - const: fck - - const: canfd - - const: can_clk + oneOf: + - items: + - const: fck + - const: canfd + - const: can_clk + - items: + - const: fck + - const: ram_clk + - const: can_clk power-domains: maxItems: 1 @@ -145,11 +178,9 @@ allOf: then: properties: interrupts: - minItems: 8 maxItems: 8 interrupt-names: - minItems: 8 maxItems: 8 resets: @@ -183,6 +214,30 @@ allOf: resets: maxItems: 1 + - if: + properties: + compatible: + contains: + const: renesas,r9a09g047-canfd + then: + properties: + interrupts: + minItems: 20 + + interrupt-names: + minItems: 20 + + resets: + minItems: 2 + maxItems: 2 + + reset-names: + minItems: 2 + maxItems: 2 + + required: + - reset-names + - if: properties: compatible: @@ -203,6 +258,15 @@ allOf: patternProperties: "^channel[4-7]$": false + - if: + properties: + compatible: + contains: + const: renesas,r9a09g047-canfd + then: + patternProperties: + "^channel[6-7]$": false + unevaluatedProperties: false examples: From patchwork Wed Mar 26 12:19:38 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030016 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 10FA61CB9E2; Wed, 26 Mar 2025 12:20:26 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991629; cv=none; b=sDuak6ArnpzPrpRB+h3/xrRbPPrKwbG6fZ9PNPGRvh+PBhzoFPZwRN5/VAKZLxCdueI22+ifySnDDLnY3Q6yw0c5hrGxPXJiQbN+bL/F3wzWmCf67nvaaa6iIIWyP8p/rVLX/dIVNxvNU4R5JQEu1NMKxTbt3hW8Eo1znMhd6rI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991629; c=relaxed/simple; bh=n75XCanXWQlV2QcHQIeO2rSLvXWbU/i0mx5xIih8fBo=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=DuhPU2/W2CXN/1XuQO+8WkkF+GQ5u2mzWYgo3jpD8dcEVDkDlzwpTuT4gXz/O693z+8PMk5/GtBw80Sj/pNWf31n0xm495yAqY+ZPKpPL6VVUV2mCDHJiePH6k4thXzg96z/rA+ej+7HxE/ntafXvQBRN00PC4qCLAIymMAYIzs= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: utB0WjmTQg2aFFTQC+hExQ== X-CSE-MsgGUID: HVeGjpqyQ5KXT1fBC1goBg== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:26 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id C262340104CB; Wed, 26 Mar 2025 21:20:22 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Geert Uytterhoeven , Wolfram Sang , =?utf-8?q?Uwe_Kleine-K?= =?utf-8?q?=C3=B6nig?= , Rob Herring , Ulrich Hecht , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 03/18] can: rcar_canfd: Use of_get_available_child_by_name() Date: Wed, 26 Mar 2025 12:19:38 +0000 Message-ID: <20250326122003.122976-4-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Simplify rcar_canfd_probe() using of_get_available_child_by_name(). While at it, move of_node_put(child) inside the if block to avoid additional check if of_child is NULL. Reviewed-by: Vincent Mailhol Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * No change. v5->v6: * No change. v4->v5: * No change. v3->v4: * No change. v2->v3: * Added Rb tag from Geert. v2: * Added to this series as dependency patch hit on can-next. * Added Rb tag from Vincent Mailhol * Dropped redundant comment from commit description. --- drivers/net/can/rcar/rcar_canfd.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index aa3df0d05b85..2d9569fd0e0b 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -1855,13 +1855,13 @@ static int rcar_canfd_probe(struct platform_device *pdev) for (i = 0; i < info->max_channels; ++i) { name[7] = '0' + i; - of_child = of_get_child_by_name(dev->of_node, name); - if (of_child && of_device_is_available(of_child)) { + of_child = of_get_available_child_by_name(dev->of_node, name); + if (of_child) { channels_mask |= BIT(i); transceivers[i] = devm_of_phy_optional_get(dev, of_child, NULL); + of_node_put(of_child); } - of_node_put(of_child); if (IS_ERR(transceivers[i])) return PTR_ERR(transceivers[i]); } From patchwork Wed Mar 26 12:19:39 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030017 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id D9FEF1799F; Wed, 26 Mar 2025 12:20:30 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991632; cv=none; b=NOx57bn9t57vN78Fb+u98LXDP77QfUyNAv4zxiL3Pd41WpYYDXu7CThXdbFolf1ISpkP+Y9k+kDxwJkzWEkitIrrYk2NXB0Ho6w/SP23lHx5Um1rtlsT3ePs1V+j74N35srX1XSFRkIUPQaGubkER1HbUXYRu/WAn9K5wRA/K8U= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991632; c=relaxed/simple; bh=sFZhX8rcZFj1zgboDFphz7qtX7j/1ruZvk0KVsNHp/c=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Gzp6xbvIVBEa5lDNUTP/KnOasqhjselnQcvll/74J2gQS/vMQemEB12wpv9x356MWwdOXW/0EUd82EzOVQvYdejttaDiokLu5RSqj8LPkcifEF1q4rD5OGaJCBJdfe58hN/VzN4ykx0fYazG33+PaPlIOAyiq/rrY+0vIqxecF8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: 9HrpnW/DTuycoroSnMOrDw== X-CSE-MsgGUID: zRy5MAyWScugR0A46zoD3g== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:29 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id C44FA40104CB; Wed, 26 Mar 2025 21:20:26 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 04/18] can: rcar_canfd: Drop RCANFD_GAFLCFG_GETRNC macro Date: Wed, 26 Mar 2025 12:19:39 +0000 Message-ID: <20250326122003.122976-5-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Drop the unused macro RCANFD_GAFLCFG_GETRNC. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * Collected tag. v5: * New patch --- drivers/net/can/rcar/rcar_canfd.c | 4 ---- 1 file changed, 4 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 2d9569fd0e0b..565a91c2ca83 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -94,10 +94,6 @@ (((x) & reg_gen4(gpriv, 0x1ff, 0xff)) << \ (reg_gen4(gpriv, 16, 24) - ((n) & 1) * reg_gen4(gpriv, 16, 8))) -#define RCANFD_GAFLCFG_GETRNC(gpriv, n, x) \ - (((x) >> (reg_gen4(gpriv, 16, 24) - ((n) & 1) * reg_gen4(gpriv, 16, 8))) & \ - reg_gen4(gpriv, 0x1ff, 0xff)) - /* RSCFDnCFDGAFLECTR / RSCFDnGAFLECTR */ #define RCANFD_GAFLECTR_AFLDAE BIT(8) #define RCANFD_GAFLECTR_AFLPN(gpriv, x) ((x) & reg_gen4(gpriv, 0x7f, 0x1f)) From patchwork Wed Mar 26 12:19:40 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030018 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 49DCB1799F; Wed, 26 Mar 2025 12:20:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991636; cv=none; b=fX4yB2mZ795cY6Asqm3iIZamk+m2iTygbso5uANo+ZX4OF2CxFhJm7J9sNlaKpwIKLpLkSq84hPI0D2FIoMJP+yXg7Ag3d3r6Yl1EKE9uzeq/iOULq1I76dKy2pF9twY+tPlHQD50Leq8wlsuX0nABOZU9eqAKwMWjoCQJvKT9c= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991636; c=relaxed/simple; bh=/z+NQXUmW8iu4pTcSDCl2k92lNgva5WpYy0+NMp+wx0=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=X0CXcSb/BztsABNBp/pzZI72UPTm/qhbfF3OOwJtxwqQSgKsZBkgcDOQsKMbA7ccimyuZEPJj4B42FZ9kkJ4TsoQudLMK8mwm1JVJkws19hFuGfE1wmnCVdtaT3cdNSRZooRFjCOp+ief7qHB956xSHw0qitS2JgMl0R/ICpgZM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: Ysj/moIYQB2buwhfjTnRfg== X-CSE-MsgGUID: Ph++b9xSRbW/835QPJqbgQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:33 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 37F5140104CB; Wed, 26 Mar 2025 21:20:29 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 05/18] can: rcar_canfd: Drop RCANFD_GERFL_EEF* macros in RCANFD_GERFL_ERR Date: Wed, 26 Mar 2025 12:19:40 +0000 Message-ID: <20250326122003.122976-6-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The macros RCANFD_GERFL_EEF* in RCANFD_GERFL_ERR can be replaced by gpriv->channels_mask << 16. After this drop the macro RCANFD_GERFL_EEF0_7 as it is unused. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * No change. v5->v6: * Collected tag. v5: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 565a91c2ca83..a9e962a1510e 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -74,7 +74,6 @@ #define RCANFD_GSTS_GNOPM (BIT(0) | BIT(1) | BIT(2) | BIT(3)) /* RSCFDnCFDGERFL / RSCFDnGERFL */ -#define RCANFD_GERFL_EEF0_7 GENMASK(23, 16) #define RCANFD_GERFL_EEF(ch) BIT(16 + (ch)) #define RCANFD_GERFL_CMPOF BIT(3) /* CAN FD only */ #define RCANFD_GERFL_THLES BIT(2) @@ -82,9 +81,7 @@ #define RCANFD_GERFL_DEF BIT(0) #define RCANFD_GERFL_ERR(gpriv, x) \ - ((x) & (reg_gen4(gpriv, RCANFD_GERFL_EEF0_7, \ - RCANFD_GERFL_EEF(0) | RCANFD_GERFL_EEF(1)) | \ - RCANFD_GERFL_MES | \ + ((x) & ((gpriv->channels_mask << 16) | RCANFD_GERFL_MES | \ ((gpriv)->fdmode ? RCANFD_GERFL_CMPOF : 0))) /* AFL Rx rules registers */ From patchwork Wed Mar 26 12:19:41 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030019 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id CD8611799F; Wed, 26 Mar 2025 12:20:36 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991638; cv=none; b=glN3+CDNExmjhV8i3Rfbgu2T+ZFV70aLqBS2Adg/9ZOFrytNsNxrAPzWAWS5qtedxk3CRaAlF6mqBs/OvTKStwtv7v7Y4YhZ8VwnVXf5/T63uRDsX1pPSJVvuXs4vADxN+3jGKurMBU+wmMYzpWI9uHGKNJadYmC/BDP3y1N4i8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991638; c=relaxed/simple; bh=TzEMV6KUgL19pMquHrMWzBMpNCmm34ZGnQXlEruvvsg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=iKQlxXnluNaAWgOJwsgknqC4lKTDrRuB6L+ZcRWKiArArgFpDFgGqnF7VSXX2sKqE8ZzGkS3LlfE5x/+chmBPxjVwnhSWefhBBAPwTf4j+XhkXgQ5lVIHYU66k7ujCVqcrWu6THlVttT5wYia6awoYb+Z6AJITw+PhrfOW/TA70= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: 09JkYCTuTwivYRrKxp/hGg== X-CSE-MsgGUID: 4CjPEXzsSB6AtV2W4+JALQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:36 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id AADF340104CB; Wed, 26 Mar 2025 21:20:33 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 06/18] can: rcar_canfd: Add num_supported_rules variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:41 +0000 Message-ID: <20250326122003.122976-7-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The RNC mask is the number of supported rules - 1. Add num_supported_rules variable to struct rcar_canfd_hw_info to replace RNC mask in RCANFD_GAFLCFG_SETRNC macro. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * Collected tag. v5: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index a9e962a1510e..32d700962d69 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -88,7 +88,7 @@ /* RSCFDnCFDGAFLCFG0 / RSCFDnGAFLCFG0 */ #define RCANFD_GAFLCFG_SETRNC(gpriv, n, x) \ - (((x) & reg_gen4(gpriv, 0x1ff, 0xff)) << \ + (((x) & ((gpriv)->info->num_supported_rules - 1)) << \ (reg_gen4(gpriv, 16, 24) - ((n) & 1) * reg_gen4(gpriv, 16, 8))) /* RSCFDnCFDGAFLECTR / RSCFDnGAFLECTR */ @@ -504,6 +504,7 @@ struct rcar_canfd_global; struct rcar_canfd_hw_info { + u16 num_supported_rules; u8 max_channels; u8 postdiv; /* hardware features */ @@ -580,18 +581,21 @@ static const struct can_bittiming_const rcar_canfd_bittiming_const = { }; static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { + .num_supported_rules = 256, .max_channels = 2, .postdiv = 2, .shared_global_irqs = 1, }; static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { + .num_supported_rules = 512, .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, }; static const struct rcar_canfd_hw_info rzg2l_hw_info = { + .num_supported_rules = 256, .max_channels = 2, .postdiv = 1, .multi_channel_irqs = 1, From patchwork Wed Mar 26 12:19:42 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030020 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 496461E1DEE; Wed, 26 Mar 2025 12:20:40 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991642; cv=none; b=ew5THp2lyc09Y6eb4Sv9pVRquaj1pzxPjL/iHzJQoY+dv6oNmlVzxYIQ49kUfe4eFur6AHYe9bX8KEqqZJRkmTaWRYAAZcIdRN/tzVD+80XFPQdtPcwKlbw6O7s6nkawnGxAznPm++i0FVzgwUy30ihleefeeSpKJk+hfdPBCBA= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991642; c=relaxed/simple; bh=scPctfcU2VOQnWytY8qIJlihDLnI+P+l7bd+Y13Q61Y=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=kqej0d4WG6Wo/bdNiWYZr4Q3xpu/dnmbd10iNwogouGhkfjovz/3F+IYBNUSStKAu+t3rEpXtvn3rl9voF5w09ShYXT2SNsyacSOptLnvdzctTR5WGFOOZ7hyAB3lftTlDPMtIj8QC9vfaTrFAqQa0qbaKRCmzh7OzKne2npzsg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: wy2AImQ2RJ24VtN2H4Wyaw== X-CSE-MsgGUID: 6N6qZaXnS7GJM7oQar/t7A== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:40 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 20CE140104FA; Wed, 26 Mar 2025 21:20:36 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 07/18] can: rcar_canfd: Add rnc_stride variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:42 +0000 Message-ID: <20250326122003.122976-8-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen4 packs 2 RNC values in a 32-bit word, whereas R-Car Gen3 packs up to 4 values in a 32-bit word. Handle this difference by adding rnc_stride variable to struct rcar_canfd_hw_info and update the macro RCANFD_GAFLCFG. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * Collected tag. v5->v6: * Replaced RCANFD_RNC_PER_REG macro with rnc_stride variable. * Updated commit description * Dropped Rb tag. v5: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 32d700962d69..0001c8043c25 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -291,7 +291,7 @@ /* RSCFDnCFDGAFLECTR / RSCFDnGAFLECTR */ #define RCANFD_GAFLECTR (0x0098) /* RSCFDnCFDGAFLCFG / RSCFDnGAFLCFG */ -#define RCANFD_GAFLCFG(ch) (0x009c + (0x04 * ((ch) / 2))) +#define RCANFD_GAFLCFG(gpriv, ch) (0x009c + (0x04 * ((ch) / (gpriv)->info->rnc_stride))) /* RSCFDnCFDRMNB / RSCFDnRMNB */ #define RCANFD_RMNB (0x00a4) /* RSCFDnCFDRMND / RSCFDnRMND */ @@ -505,6 +505,7 @@ struct rcar_canfd_global; struct rcar_canfd_hw_info { u16 num_supported_rules; + u8 rnc_stride; u8 max_channels; u8 postdiv; /* hardware features */ @@ -582,6 +583,7 @@ static const struct can_bittiming_const rcar_canfd_bittiming_const = { static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .num_supported_rules = 256, + .rnc_stride = 4, .max_channels = 2, .postdiv = 2, .shared_global_irqs = 1, @@ -589,6 +591,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .num_supported_rules = 512, + .rnc_stride = 2, .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, @@ -596,6 +599,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { static const struct rcar_canfd_hw_info rzg2l_hw_info = { .num_supported_rules = 256, + .rnc_stride = 4, .max_channels = 2, .postdiv = 1, .multi_channel_irqs = 1, @@ -797,7 +801,7 @@ static void rcar_canfd_configure_afl_rules(struct rcar_canfd_global *gpriv, RCANFD_GAFLECTR_AFLDAE)); /* Write number of rules for channel */ - rcar_canfd_set_bit(gpriv->base, RCANFD_GAFLCFG(ch), + rcar_canfd_set_bit(gpriv->base, RCANFD_GAFLCFG(gpriv, ch), RCANFD_GAFLCFG_SETRNC(gpriv, ch, num_rules)); if (is_gen4(gpriv)) offset = RCANFD_GEN4_GAFL_OFFSET; From patchwork Wed Mar 26 12:19:43 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030021 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id E10C81DF963; Wed, 26 Mar 2025 12:20:44 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991646; cv=none; b=BbCf5tM6EUf7kB/uXbekk+HqRijMd5a/veUOG5VjpNTEptGdcpocTOgtdeUXrpqTbpq5lVeMSSsAlkZt+Iro9hI+1/f9cocQomTdVjkdnY8TbjKBT+97j5aYxJdzJuV6Zj7stO1QpGV4k56H1KXHxok1Myl3J6thJ9UvNfVApvc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991646; c=relaxed/simple; bh=CXWLhfLlvuuJgjB0fYl7DUp5Ds+GRUqKM6NJyRKdDBY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=nk2YZhR6eX79vtVwca3XDkbJRh3x4tZEtdikoB7FPQ7CzFLR0DSQYx6tMHuFW2TlZuJWdL43kPApk7FOeN0d7mRov4oboHoU6hrDQw7Tpn6qGF4XAL0QjfwBxddaSOooBdgiRCgajACWJrOBi/cog6ISks6+PKwpNxT5KKo4zKM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: u8F+SzC+SpGBb9fB2LIWxQ== X-CSE-MsgGUID: yRvl0Ok+SnuZRbYiNcsEmg== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:43 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 8C22540104FA; Wed, 26 Mar 2025 21:20:40 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 08/18] can: rcar_canfd: Simplify RCANFD_GAFLCFG_SETRNC macro Date: Wed, 26 Mar 2025 12:19:43 +0000 Message-ID: <20250326122003.122976-9-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The shift values in RCANFD_GAFLCFG_SETRNC are dictated by the field width: - R-Car Gen4 packs 2 values in a 32-bit word, using a field width of 16 bits, - R-Car Gen3 packs up to 4 values in a 32-bit word, using a field width of 8 bits. Add rnc_field_width variable to struct rcar_canfd_hw_info to handle this difference and simplify the shift value in RCANFD_GAFLCFG_SETRNC macro by using a formula (32 - (n % rnc_stride + 1) * rnc_field_width). Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->7: * Collected tag. v5->6: * Replaced RCANFD_RNC_PER_REG macro with rnc_stride variable. * Updated commit description * Dropped the Rb tag. v5: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 0001c8043c25..62cde1efa0c0 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -89,7 +89,7 @@ /* RSCFDnCFDGAFLCFG0 / RSCFDnGAFLCFG0 */ #define RCANFD_GAFLCFG_SETRNC(gpriv, n, x) \ (((x) & ((gpriv)->info->num_supported_rules - 1)) << \ - (reg_gen4(gpriv, 16, 24) - ((n) & 1) * reg_gen4(gpriv, 16, 8))) + (32 - (((n) % (gpriv)->info->rnc_stride + 1) * (gpriv)->info->rnc_field_width))) /* RSCFDnCFDGAFLECTR / RSCFDnGAFLECTR */ #define RCANFD_GAFLECTR_AFLDAE BIT(8) @@ -506,6 +506,7 @@ struct rcar_canfd_global; struct rcar_canfd_hw_info { u16 num_supported_rules; u8 rnc_stride; + u8 rnc_field_width; u8 max_channels; u8 postdiv; /* hardware features */ @@ -584,6 +585,7 @@ static const struct can_bittiming_const rcar_canfd_bittiming_const = { static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .num_supported_rules = 256, .rnc_stride = 4, + .rnc_field_width = 8, .max_channels = 2, .postdiv = 2, .shared_global_irqs = 1, @@ -592,6 +594,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .num_supported_rules = 512, .rnc_stride = 2, + .rnc_field_width = 16, .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, @@ -600,6 +603,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { static const struct rcar_canfd_hw_info rzg2l_hw_info = { .num_supported_rules = 256, .rnc_stride = 4, + .rnc_field_width = 8, .max_channels = 2, .postdiv = 1, .multi_channel_irqs = 1, From patchwork Wed Mar 26 12:19:44 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030022 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 266871E5B73; Wed, 26 Mar 2025 12:20:47 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991648; cv=none; b=HPRrQxHATGXi++HYwf+9vkkUcNhmRpm8X06JTuWRoVPW8GCHKdia4Gh27sLC87i1MAMjcUvUXqLrOTMVBHZPUDcqTblJwE8NGQdnjZ8hyimmqUQwVLfFTBNENft0RE2G9ttfu1imVHYfZ3ztJmxNLds8xkiO04RPPXnDKXrGeZU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991648; c=relaxed/simple; bh=iluxQJNxmzSzwVZDtBN7JHmPDqYw4PyqOmnXuM6oT4A=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=umxlf/QIEaY+NQk9Z5c3qumlwomaufzbtiUb0LPwafhH1RXR/UD+LaliT4+fa32qrEiTXfI4owgt72SLOwfQebcROO7cBtzJbNgJw0MC3pu9MW6j4JiHuKQ084F/SdXc/Y2AinkI9sil769TiBLtPuysrMNUwj2MJ1fSp+CmwdM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: 0A61C4odSzybzTeAwd3Z9A== X-CSE-MsgGUID: DItLMYkiSVqcXSvCdzRuog== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:46 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 0188F40104FA; Wed, 26 Mar 2025 21:20:43 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 09/18] can: rcar_canfd: Add max_aflpn variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:44 +0000 Message-ID: <20250326122003.122976-10-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen3 has maximum acceptance filter list page number of 31 whereas on R-Car Gen4 it is 127. Add max_aflpn variable to struct rcar_canfd_hw_info in order to support RZ/G3E that has max AFLPN of 63. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * Collected tag. v6: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 62cde1efa0c0..7cef0673fbc8 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -93,7 +93,7 @@ /* RSCFDnCFDGAFLECTR / RSCFDnGAFLECTR */ #define RCANFD_GAFLECTR_AFLDAE BIT(8) -#define RCANFD_GAFLECTR_AFLPN(gpriv, x) ((x) & reg_gen4(gpriv, 0x7f, 0x1f)) +#define RCANFD_GAFLECTR_AFLPN(gpriv, x) ((x) & (gpriv)->info->max_aflpn) /* RSCFDnCFDGAFLIDj / RSCFDnGAFLIDj */ #define RCANFD_GAFLID_GAFLLB BIT(29) @@ -507,6 +507,7 @@ struct rcar_canfd_hw_info { u16 num_supported_rules; u8 rnc_stride; u8 rnc_field_width; + u8 max_aflpn; u8 max_channels; u8 postdiv; /* hardware features */ @@ -586,6 +587,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, + .max_aflpn = 31, .max_channels = 2, .postdiv = 2, .shared_global_irqs = 1, @@ -595,6 +597,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .num_supported_rules = 512, .rnc_stride = 2, .rnc_field_width = 16, + .max_aflpn = 127, .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, @@ -604,6 +607,7 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, + .max_aflpn = 31, .max_channels = 2, .postdiv = 1, .multi_channel_irqs = 1, From patchwork Wed Mar 26 12:19:45 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030023 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 94ACD1E1DF9; Wed, 26 Mar 2025 12:20:50 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991652; cv=none; b=SgL8twEi2b1mBI9l9IuJ5NigbUtB7JMqwB+m5uES9AMD4wK5V9s9ekM+fj0CAqOiQsOgFkOUC/qo2xNsoazkwETJal/eyhMgITZpDuHUkliYorTV+TAnaDBI/1pahgSOep7EIiQUjca2NhAhB2AqMRHCGTAneaNXzh3vQwnEFao= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991652; c=relaxed/simple; bh=d1O2PKc2kvVszRV9ErO7GDNYrcdzZaE/WHRhc7LRPRA=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=fPlzgS3KLS4wv8JPcPn5daGKV2ipPMXX1ISYMHhQOzS7YA5cIs9w68dflnH1b+/Cs9E9NAtPK0+gWX4BHJEjXq6k/8B+t7N1FUXZtSW4g+ozkcy8rkmSeoHaoF+gOAjK8sir1DkwM+3w+NulbKv+Qn+MvZ1RGauhjUnkxTYkZTo= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: 2XbnXISdQtydSY9DjK6osQ== X-CSE-MsgGUID: 7+JRJaajQ5WzUUiDXzWI8A== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:50 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 6DFA440104CB; Wed, 26 Mar 2025 21:20:47 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 10/18] can: rcar_canfd: Add max_cftml variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:45 +0000 Message-ID: <20250326122003.122976-11-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen3 has CFTML max positional value is 15 whereas on R-Car Gen4 it is 31. Add a max_cftml variable to struct rcar_canfd_hw_info to handle this difference. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * Collected tag. v6: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 7cef0673fbc8..c37fb85fe478 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -227,7 +227,7 @@ /* RSCFDnCFDCFCCk */ #define RCANFD_CFCC_CFTML(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0x1f, 0xf)) << reg_gen4(gpriv, 16, 20)) + (((x) & (gpriv)->info->max_cftml) << reg_gen4(gpriv, 16, 20)) #define RCANFD_CFCC_CFM(gpriv, x) (((x) & 0x3) << reg_gen4(gpriv, 8, 16)) #define RCANFD_CFCC_CFIM BIT(12) #define RCANFD_CFCC_CFDC(gpriv, x) (((x) & 0x7) << reg_gen4(gpriv, 21, 8)) @@ -508,6 +508,7 @@ struct rcar_canfd_hw_info { u8 rnc_stride; u8 rnc_field_width; u8 max_aflpn; + u8 max_cftml; u8 max_channels; u8 postdiv; /* hardware features */ @@ -588,6 +589,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .rnc_stride = 4, .rnc_field_width = 8, .max_aflpn = 31, + .max_cftml = 15, .max_channels = 2, .postdiv = 2, .shared_global_irqs = 1, @@ -598,6 +600,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .rnc_stride = 2, .rnc_field_width = 16, .max_aflpn = 127, + .max_cftml = 31, .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, @@ -608,6 +611,7 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { .rnc_stride = 4, .rnc_field_width = 8, .max_aflpn = 31, + .max_cftml = 15, .max_channels = 2, .postdiv = 1, .multi_channel_irqs = 1, From patchwork Wed Mar 26 12:19:46 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030024 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 0C410282EB; Wed, 26 Mar 2025 12:20:53 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991655; cv=none; b=JRoyfO/sjn2Li7oMGp8d9JR1XVf3quYLjD00XwDH/uk0UexAbjDT/UkXI47BHpO24s6VOCfzimkBG7D06f28LOwWXnCZs7/GM6gc9wX5NlK3+HNAPyBGJJ1eZf+3I2M9o0cLgTOAB9dN9Q3zq/CHqKOmZCEsHkW7XXFko5WZcP8= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991655; c=relaxed/simple; bh=62C5D/L5IjG/dnZyz4XkNie7BGjk/0BGeqfQN53ULNI=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=pt4c16JK9vZKSD9vklnd8EU0LMdqpWXp+5GBnoXH8xBbeKqSXpMdeNTnPiHvjdSDES7EkevaVTGCpVsCyBi5s9E3Ild7pnGdU8KEjeQcYpPlNoUzMaMOjMw4sBdb4wJEdWhXoBRW5AfUPFfymGCM3KHkQ88oMnXr/Xk8Bn8lXEw= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: QNV17cOiT2el0lPB/wp9xg== X-CSE-MsgGUID: pMEGSn81TVq5H1pDjb+SAg== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:53 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id DC32240104FA; Wed, 26 Mar 2025 21:20:50 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 11/18] can: rcar_canfd: Add {nom,data}_bittiming variables to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:46 +0000 Message-ID: <20250326122003.122976-12-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Both R-Car Gen4 and R-Car Gen3 have different bit timing parameters Add {nom,data}_bittiming variables to struct rcar_canfd_hw_info to handle this difference. Since the mask used in the macros are max value - 1, replace that as well. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * Collected tag. * Updated 'aswell'->'as well' in commit description. v6: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 53 ++++++++++++++++++++++++------- 1 file changed, 42 insertions(+), 11 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index c37fb85fe478..7e7f3c3307ae 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -111,13 +111,13 @@ /* RSCFDnCFDCmNCFG - CAN FD only */ #define RCANFD_NCFG_NTSEG2(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0x7f, 0x1f)) << reg_gen4(gpriv, 25, 24)) + (((x) & ((gpriv)->info->nom_bittiming->tseg2_max - 1)) << reg_gen4(gpriv, 25, 24)) #define RCANFD_NCFG_NTSEG1(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0xff, 0x7f)) << reg_gen4(gpriv, 17, 16)) + (((x) & ((gpriv)->info->nom_bittiming->tseg1_max - 1)) << reg_gen4(gpriv, 17, 16)) #define RCANFD_NCFG_NSJW(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0x7f, 0x1f)) << reg_gen4(gpriv, 10, 11)) + (((x) & ((gpriv)->info->nom_bittiming->sjw_max - 1)) << reg_gen4(gpriv, 10, 11)) #define RCANFD_NCFG_NBRP(x) (((x) & 0x3ff) << 0) @@ -179,13 +179,13 @@ #define RCANFD_CERFL_ERR(x) ((x) & (0x7fff)) /* above bits 14:0 */ /* RSCFDnCFDCmDCFG */ -#define RCANFD_DCFG_DSJW(gpriv, x) (((x) & reg_gen4(gpriv, 0xf, 0x7)) << 24) +#define RCANFD_DCFG_DSJW(gpriv, x) (((x) & ((gpriv)->info->data_bittiming->sjw_max - 1)) << 24) #define RCANFD_DCFG_DTSEG2(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0x0f, 0x7)) << reg_gen4(gpriv, 16, 20)) + (((x) & ((gpriv)->info->data_bittiming->tseg2_max - 1)) << reg_gen4(gpriv, 16, 20)) #define RCANFD_DCFG_DTSEG1(gpriv, x) \ - (((x) & reg_gen4(gpriv, 0x1f, 0xf)) << reg_gen4(gpriv, 8, 16)) + (((x) & ((gpriv)->info->data_bittiming->tseg1_max - 1)) << reg_gen4(gpriv, 8, 16)) #define RCANFD_DCFG_DBRP(x) (((x) & 0xff) << 0) @@ -504,6 +504,8 @@ struct rcar_canfd_global; struct rcar_canfd_hw_info { + const struct can_bittiming_const *nom_bittiming; + const struct can_bittiming_const *data_bittiming; u16 num_supported_rules; u8 rnc_stride; u8 rnc_field_width; @@ -546,7 +548,7 @@ struct rcar_canfd_global { }; /* CAN FD mode nominal rate constants */ -static const struct can_bittiming_const rcar_canfd_nom_bittiming_const = { +static const struct can_bittiming_const rcar_canfd_gen3_nom_bittiming_const = { .name = RCANFD_DRV_NAME, .tseg1_min = 2, .tseg1_max = 128, @@ -558,8 +560,20 @@ static const struct can_bittiming_const rcar_canfd_nom_bittiming_const = { .brp_inc = 1, }; +static const struct can_bittiming_const rcar_canfd_gen4_nom_bittiming_const = { + .name = RCANFD_DRV_NAME, + .tseg1_min = 2, + .tseg1_max = 256, + .tseg2_min = 2, + .tseg2_max = 128, + .sjw_max = 128, + .brp_min = 1, + .brp_max = 1024, + .brp_inc = 1, +}; + /* CAN FD mode data rate constants */ -static const struct can_bittiming_const rcar_canfd_data_bittiming_const = { +static const struct can_bittiming_const rcar_canfd_gen3_data_bittiming_const = { .name = RCANFD_DRV_NAME, .tseg1_min = 2, .tseg1_max = 16, @@ -571,6 +585,18 @@ static const struct can_bittiming_const rcar_canfd_data_bittiming_const = { .brp_inc = 1, }; +static const struct can_bittiming_const rcar_canfd_gen4_data_bittiming_const = { + .name = RCANFD_DRV_NAME, + .tseg1_min = 2, + .tseg1_max = 32, + .tseg2_min = 2, + .tseg2_max = 16, + .sjw_max = 16, + .brp_min = 1, + .brp_max = 256, + .brp_inc = 1, +}; + /* Classical CAN mode bitrate constants */ static const struct can_bittiming_const rcar_canfd_bittiming_const = { .name = RCANFD_DRV_NAME, @@ -585,6 +611,8 @@ static const struct can_bittiming_const rcar_canfd_bittiming_const = { }; static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { + .nom_bittiming = &rcar_canfd_gen3_nom_bittiming_const, + .data_bittiming = &rcar_canfd_gen3_data_bittiming_const, .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, @@ -596,6 +624,8 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { }; static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { + .nom_bittiming = &rcar_canfd_gen4_nom_bittiming_const, + .data_bittiming = &rcar_canfd_gen4_data_bittiming_const, .num_supported_rules = 512, .rnc_stride = 2, .rnc_field_width = 16, @@ -607,6 +637,8 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { }; static const struct rcar_canfd_hw_info rzg2l_hw_info = { + .nom_bittiming = &rcar_canfd_gen3_nom_bittiming_const, + .data_bittiming = &rcar_canfd_gen3_data_bittiming_const, .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, @@ -1795,9 +1827,8 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch, } if (gpriv->fdmode) { - priv->can.bittiming_const = &rcar_canfd_nom_bittiming_const; - priv->can.data_bittiming_const = - &rcar_canfd_data_bittiming_const; + priv->can.bittiming_const = gpriv->info->nom_bittiming; + priv->can.data_bittiming_const = gpriv->info->data_bittiming; /* Controller starts in CAN FD only mode */ err = can_set_static_ctrlmode(ndev, CAN_CTRLMODE_FD); From patchwork Wed Mar 26 12:19:47 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030025 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 75D00282EB; Wed, 26 Mar 2025 12:20:57 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991659; cv=none; b=XTw/vv8wkmqIHuw+fLgSYpTmB/n2ag9Xdn8uniEmO++NsaqDweUr5GdKWeBFbjeg8SSaDKMbvmZLUW8DlN8bndeKXgOVnjOW/sISLsyq90KzHMy9eEnhvIu6Ict+f8S/sp9UrErDF0HKRKjOFzKi5Xf42DeA7KxTQ7GHoBu1fmU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991659; c=relaxed/simple; bh=56aInkKVzEvHcw17WLzVo7COk6QCQaeHgS73aHd3Eis=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=cfGPDHjz0nbpFQ2o2v22+QWOwdTyt+lqMSyPe/u+OB8mvBZ4IqohCcBssCljGNrg4w2UtlsUzQVdhkmNiJAR7PXu2eTMWZPvHBMxAwKg7mpJPumiRgBNAi8wF6klElC2v3Gh5LQ2yV/hiTwQTOLh+IzhlGugJwQ6ovCj5WcsmfI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: XysAiw2cSqeu2JLHjofRYw== X-CSE-MsgGUID: Zd+BvSHASlqebNfZFhfqdQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:20:57 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 52C6940104FA; Wed, 26 Mar 2025 21:20:54 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 12/18] can: rcar_canfd: Add ch_interface_mode variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:47 +0000 Message-ID: <20250326122003.122976-13-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen4 has channel specific interface mode bit for setting CAN-FD or Classical CAN mode whereas on R-Car Gen3 it is global. Add a ch_interface_mode variable to struct rcar_canfd_hw_info to handle this difference. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Collected tag. v3->v4: * No change. v3: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 7e7f3c3307ae..85542e78e3bf 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -516,6 +516,7 @@ struct rcar_canfd_hw_info { /* hardware features */ unsigned shared_global_irqs:1; /* Has shared global irqs */ unsigned multi_channel_irqs:1; /* Has multiple channel irqs */ + unsigned ch_interface_mode:1; /* Has channel interface mode */ }; /* Channel priv data */ @@ -634,6 +635,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .max_channels = 8, .postdiv = 2, .shared_global_irqs = 1, + .ch_interface_mode = 1, }; static const struct rcar_canfd_hw_info rzg2l_hw_info = { @@ -728,7 +730,7 @@ static void rcar_canfd_tx_failure_cleanup(struct net_device *ndev) static void rcar_canfd_set_mode(struct rcar_canfd_global *gpriv) { - if (is_gen4(gpriv)) { + if (gpriv->info->ch_interface_mode) { u32 ch, val = gpriv->fdmode ? RCANFD_GEN4_FDCFG_FDOE : RCANFD_GEN4_FDCFG_CLOE; From patchwork Wed Mar 26 12:19:48 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030026 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C1B0E282EB; Wed, 26 Mar 2025 12:21:01 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991663; cv=none; b=Zuiw8m2rQHSS4RG8Rjt7zooxx1yW3LbmhD7NmRvHD9eZH8psVDl/E44SlHPC7UU9OQEgVp7yFEZPS26ZhCqPBbKfnHjjwg15B9Jb12qJLvMFtVGl3rmtmjikFSOGHZutu62wYZYpiCVDq8i5EeNwTt16cV3Eu5y1/hBPw5Uf9dk= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991663; c=relaxed/simple; bh=FhHhamYTUkZolUHcA6sUChfCDlGrbzZyB4W1vAkKfoc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=AM7IkAFDRgEKVtlIRJSz6hNLbEKB6jPJPakAcfre9xedD8UrfDvuNRY/PumQQdjxdsEb903MtCrXvS61j7IKhsO/RIqQNxVhBVbrn/o5GCP1hxqa/GZcFRmC4YR6ee5Mr5HRqvseUKbRvmOiHCLLWydjl6e+sEd/h6Ap27kbVpM= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: nMlnJ4EeTeyqxgQtMh0B0A== X-CSE-MsgGUID: Vun4EqI0QqGppp9pI5Gz1Q== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Mar 2025 21:21:00 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id BBF0040104FA; Wed, 26 Mar 2025 21:20:57 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 13/18] can: rcar_canfd: Add shared_can_regs variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:48 +0000 Message-ID: <20250326122003.122976-14-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen4 has shared regs for both CAN-FD and Classical CAN operations. Add shared_can_regs variable to struct rcar_canfd_hw_info to handle this difference. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Collected tag. * Replaced the variable name shared_can_reg->shared_can_regs. v3->v4: * No change. v3: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 85542e78e3bf..360999e6ab45 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -517,6 +517,7 @@ struct rcar_canfd_hw_info { unsigned shared_global_irqs:1; /* Has shared global irqs */ unsigned multi_channel_irqs:1; /* Has multiple channel irqs */ unsigned ch_interface_mode:1; /* Has channel interface mode */ + unsigned shared_can_regs:1; /* Has shared classical can registers */ }; /* Channel priv data */ @@ -636,6 +637,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .postdiv = 2, .shared_global_irqs = 1, .ch_interface_mode = 1, + .shared_can_regs = 1, }; static const struct rcar_canfd_hw_info rzg2l_hw_info = { @@ -849,7 +851,7 @@ static void rcar_canfd_configure_afl_rules(struct rcar_canfd_global *gpriv, /* Write number of rules for channel */ rcar_canfd_set_bit(gpriv->base, RCANFD_GAFLCFG(gpriv, ch), RCANFD_GAFLCFG_SETRNC(gpriv, ch, num_rules)); - if (is_gen4(gpriv)) + if (gpriv->info->shared_can_regs) offset = RCANFD_GEN4_GAFL_OFFSET; else if (gpriv->fdmode) offset = RCANFD_F_GAFL_OFFSET; @@ -1385,7 +1387,7 @@ static void rcar_canfd_set_bittiming(struct net_device *dev) brp, sjw, tseg1, tseg2); } else { /* Classical CAN only mode */ - if (is_gen4(gpriv)) { + if (gpriv->info->shared_can_regs) { cfg = (RCANFD_NCFG_NTSEG1(gpriv, tseg1) | RCANFD_NCFG_NBRP(brp) | RCANFD_NCFG_NSJW(gpriv, sjw) | @@ -1550,7 +1552,7 @@ static netdev_tx_t rcar_canfd_start_xmit(struct sk_buff *skb, dlc = RCANFD_CFPTR_CFDLC(can_fd_len2dlc(cf->len)); - if ((priv->can.ctrlmode & CAN_CTRLMODE_FD) || is_gen4(gpriv)) { + if ((priv->can.ctrlmode & CAN_CTRLMODE_FD) || gpriv->info->shared_can_regs) { rcar_canfd_write(priv->base, RCANFD_F_CFID(gpriv, ch, RCANFD_CFFIFO_IDX), id); rcar_canfd_write(priv->base, @@ -1609,7 +1611,7 @@ static void rcar_canfd_rx_pkt(struct rcar_canfd_channel *priv) u32 ch = priv->channel; u32 ridx = ch + RCANFD_RFFIFO_IDX; - if ((priv->can.ctrlmode & CAN_CTRLMODE_FD) || is_gen4(gpriv)) { + if ((priv->can.ctrlmode & CAN_CTRLMODE_FD) || gpriv->info->shared_can_regs) { id = rcar_canfd_read(priv->base, RCANFD_F_RFID(gpriv, ridx)); dlc = rcar_canfd_read(priv->base, RCANFD_F_RFPTR(gpriv, ridx)); @@ -1660,7 +1662,7 @@ static void rcar_canfd_rx_pkt(struct rcar_canfd_channel *priv) cf->len = can_cc_dlc2len(RCANFD_RFPTR_RFDLC(dlc)); if (id & RCANFD_RFID_RFRTR) cf->can_id |= CAN_RTR_FLAG; - else if (is_gen4(gpriv)) + else if (gpriv->info->shared_can_regs) rcar_canfd_get_data(priv, cf, RCANFD_F_RFDF(gpriv, ridx, 0)); else rcar_canfd_get_data(priv, cf, RCANFD_C_RFDF(ridx, 0)); From patchwork Wed Mar 26 12:19:49 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030027 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 4EB321E1DEE; Wed, 26 Mar 2025 12:21:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991667; cv=none; b=rxUAanu7w9peDCNmndZ+FyA+FzbyPeHSnQEBvrIw7WXe19ABqwLlu7yl1odfSgqSKMcjZq26mvJGarGe5XhZudMzSKLThkLA5LArMOJekwHANkPheY0RgtPA/+6GaJpQQZx6957OQNoaeqt3sYOpta90vKHplh8Bwk1mkFPBwJQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991667; c=relaxed/simple; bh=oNBV/Polqtl1sWkkb0RV7uyBDX8WQGxGGRT1jVCvJuY=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=uqFVf7gGTfz/9RHzc34fCVuD3jawb/Jz8y4QUIZR3pzuS22UN574TIzrNw5cVrjsb7EkOKn8rgmtXqAKnYJ7k3yPkhV4G4OG50mgNebBwdrTn9ILrKDgavqj4FT28uX8j5TMDcva/voQiE2S3DcFTvm/naWexJuFIKPvJLj+2C4= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: JsiFe9ttSvqUg3tpqRKP9w== X-CSE-MsgGUID: tq3w07QvTdmUDIWH9n3Mhw== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:21:04 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 45C714010902; Wed, 26 Mar 2025 21:21:01 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 14/18] can: rcar_canfd: Add register mapping table to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:49 +0000 Message-ID: <20250326122003.122976-15-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen3 and Gen4 have some differences in the register offsets. Add a mapping table to handle these differences. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Improved commit description by replacing has->have. * Collected tag. v3->v4: * Added prefix RCANFD_* to enum rcar_canfd_reg_offset_id. v3: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 48 ++++++++++++++++++++++++++----- 1 file changed, 41 insertions(+), 7 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 360999e6ab45..a96cf499f04b 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -298,7 +298,7 @@ #define RCANFD_RMND(y) (0x00a8 + (0x04 * (y))) /* RSCFDnCFDRFCCx / RSCFDnRFCCx */ -#define RCANFD_RFCC(gpriv, x) (reg_gen4(gpriv, 0x00c0, 0x00b8) + (0x04 * (x))) +#define RCANFD_RFCC(gpriv, x) ((gpriv)->info->regs[RCANFD_RFCC] + (0x04 * (x))) /* RSCFDnCFDRFSTSx / RSCFDnRFSTSx */ #define RCANFD_RFSTS(gpriv, x) (RCANFD_RFCC(gpriv, x) + 0x20) /* RSCFDnCFDRFPCTRx / RSCFDnRFPCTRx */ @@ -308,13 +308,13 @@ /* RSCFDnCFDCFCCx / RSCFDnCFCCx */ #define RCANFD_CFCC(gpriv, ch, idx) \ - (reg_gen4(gpriv, 0x0120, 0x0118) + (0x0c * (ch)) + (0x04 * (idx))) + ((gpriv)->info->regs[RCANFD_CFCC] + (0x0c * (ch)) + (0x04 * (idx))) /* RSCFDnCFDCFSTSx / RSCFDnCFSTSx */ #define RCANFD_CFSTS(gpriv, ch, idx) \ - (reg_gen4(gpriv, 0x01e0, 0x0178) + (0x0c * (ch)) + (0x04 * (idx))) + ((gpriv)->info->regs[RCANFD_CFSTS] + (0x0c * (ch)) + (0x04 * (idx))) /* RSCFDnCFDCFPCTRx / RSCFDnCFPCTRx */ #define RCANFD_CFPCTR(gpriv, ch, idx) \ - (reg_gen4(gpriv, 0x0240, 0x01d8) + (0x0c * (ch)) + (0x04 * (idx))) + ((gpriv)->info->regs[RCANFD_CFPCTR] + (0x0c * (ch)) + (0x04 * (idx))) /* RSCFDnCFDFESTS / RSCFDnFESTS */ #define RCANFD_FESTS (0x0238) @@ -430,7 +430,7 @@ /* CAN FD mode specific register map */ /* RSCFDnCFDCmXXX -> RCANFD_F_XXX(m) */ -#define RCANFD_F_DCFG(gpriv, m) (reg_gen4(gpriv, 0x1400, 0x0500) + (0x20 * (m))) +#define RCANFD_F_DCFG(gpriv, m) ((gpriv)->info->regs[RCANFD_F_DCFG] + (0x20 * (m))) #define RCANFD_F_CFDCFG(m) (0x0504 + (0x20 * (m))) #define RCANFD_F_CFDCTR(m) (0x0508 + (0x20 * (m))) #define RCANFD_F_CFDSTS(m) (0x050c + (0x20 * (m))) @@ -446,7 +446,7 @@ #define RCANFD_F_RMDF(q, b) (0x200c + (0x04 * (b)) + (0x20 * (q))) /* RSCFDnCFDRFXXx -> RCANFD_F_RFXX(x) */ -#define RCANFD_F_RFOFFSET(gpriv) reg_gen4(gpriv, 0x6000, 0x3000) +#define RCANFD_F_RFOFFSET(gpriv) ((gpriv)->info->regs[RCANFD_RFOFFSET]) #define RCANFD_F_RFID(gpriv, x) (RCANFD_F_RFOFFSET(gpriv) + (0x80 * (x))) #define RCANFD_F_RFPTR(gpriv, x) (RCANFD_F_RFOFFSET(gpriv) + 0x04 + (0x80 * (x))) #define RCANFD_F_RFFDSTS(gpriv, x) (RCANFD_F_RFOFFSET(gpriv) + 0x08 + (0x80 * (x))) @@ -454,7 +454,7 @@ (RCANFD_F_RFOFFSET(gpriv) + 0x0c + (0x80 * (x)) + (0x04 * (df))) /* RSCFDnCFDCFXXk -> RCANFD_F_CFXX(ch, k) */ -#define RCANFD_F_CFOFFSET(gpriv) reg_gen4(gpriv, 0x6400, 0x3400) +#define RCANFD_F_CFOFFSET(gpriv) ((gpriv)->info->regs[RCANFD_CFOFFSET]) #define RCANFD_F_CFID(gpriv, ch, idx) \ (RCANFD_F_CFOFFSET(gpriv) + (0x180 * (ch)) + (0x80 * (idx))) @@ -501,11 +501,22 @@ */ #define RCANFD_CFFIFO_IDX 0 +enum rcar_canfd_reg_offset_id { + RCANFD_RFCC, /* RX FIFO Configuration/Control Register */ + RCANFD_CFCC, /* Common FIFO Configuration/Control Register */ + RCANFD_CFSTS, /* Common FIFO Status Register */ + RCANFD_CFPCTR, /* Common FIFO Pointer Control Register */ + RCANFD_F_DCFG, /* Global FD Configuration Register */ + RCANFD_RFOFFSET, /* Receive FIFO buffer access ID register */ + RCANFD_CFOFFSET, /* Transmit/receive FIFO buffer access ID register */ +}; + struct rcar_canfd_global; struct rcar_canfd_hw_info { const struct can_bittiming_const *nom_bittiming; const struct can_bittiming_const *data_bittiming; + const u16 *regs; u16 num_supported_rules; u8 rnc_stride; u8 rnc_field_width; @@ -612,9 +623,30 @@ static const struct can_bittiming_const rcar_canfd_bittiming_const = { .brp_inc = 1, }; +static const u16 rcar_gen3_regs[] = { + [RCANFD_RFCC] = 0x00b8, + [RCANFD_CFCC] = 0x0118, + [RCANFD_CFSTS] = 0x0178, + [RCANFD_CFPCTR] = 0x01d8, + [RCANFD_F_DCFG] = 0x0500, + [RCANFD_RFOFFSET] = 0x3000, + [RCANFD_CFOFFSET] = 0x3400, +}; + +static const u16 rcar_gen4_regs[] = { + [RCANFD_RFCC] = 0x00c0, + [RCANFD_CFCC] = 0x0120, + [RCANFD_CFSTS] = 0x01e0, + [RCANFD_CFPCTR] = 0x0240, + [RCANFD_F_DCFG] = 0x1400, + [RCANFD_RFOFFSET] = 0x6000, + [RCANFD_CFOFFSET] = 0x6400, +}; + static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .nom_bittiming = &rcar_canfd_gen3_nom_bittiming_const, .data_bittiming = &rcar_canfd_gen3_data_bittiming_const, + .regs = rcar_gen3_regs, .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, @@ -628,6 +660,7 @@ static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .nom_bittiming = &rcar_canfd_gen4_nom_bittiming_const, .data_bittiming = &rcar_canfd_gen4_data_bittiming_const, + .regs = rcar_gen4_regs, .num_supported_rules = 512, .rnc_stride = 2, .rnc_field_width = 16, @@ -643,6 +676,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { static const struct rcar_canfd_hw_info rzg2l_hw_info = { .nom_bittiming = &rcar_canfd_gen3_nom_bittiming_const, .data_bittiming = &rcar_canfd_gen3_data_bittiming_const, + .regs = rcar_gen3_regs, .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, From patchwork Wed Mar 26 12:19:50 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030028 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 963D11E1DEC; Wed, 26 Mar 2025 12:21:08 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991670; cv=none; b=qCbIUMgRI8/37vFIu5V/9G44E7s+jk+Ymy1EkHivET/OAhXgkAMBk/6/FQ4f7kCp26ccIVbFXVqXrgNmNUcJ/rb/EEKEzGRtCkoMwfx0f+Ri+di63SO00NQ/FWrYqDepGw99/L6bj/RSJZUPsIAUi8COk+FxgBeUkN1xWnUGFGQ= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991670; c=relaxed/simple; bh=gewjgOrg2zO4Umylx0flA92mi5UvwU/BQkuEaRkMOII=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MugWvWNG0ycATt51e6P4CE3CduM8QRIVKwt25SFS8Oa49PVE5Oov0Coo1y1JX+Og4dMw+/LJ32C4b+ylYx00EP/y9x62JQTZcd/sXvEn5Cbm5p0hSw6JOo99Zv4s5fpmJ3Olq3YfdUykq2EYYLwzX/CreDtuf3ijn2eBXbYucuk= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: 7mssWJ3nTqGKzNW/c3exyw== X-CSE-MsgGUID: tbeN6pMPTTGhas6S9s1cBQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:21:07 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id CAA7940104CB; Wed, 26 Mar 2025 21:21:04 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 15/18] can: rcar_canfd: Add shift table to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:50 +0000 Message-ID: <20250326122003.122976-16-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 R-Car Gen3 and Gen4 have some differences in the shift bits. Add a shift table to handle these differences. After this drop the unused functions reg_gen4() and is_gen4(). Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Collected tag. * Dropped RCANFD_FIRST_RNC_SH and RCANFD_SECOND_RNC_SH by using a formula (32 - (n % rnc_per_reg + 1) * rnc_field_width. v3->v4: * Added prefix RCANFD_* to enum rcar_canfd_shift_id. v3: * New patch. --- drivers/net/can/rcar/rcar_canfd.c | 69 ++++++++++++++++++++++--------- 1 file changed, 50 insertions(+), 19 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index a96cf499f04b..20e591421cc6 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -111,13 +111,16 @@ /* RSCFDnCFDCmNCFG - CAN FD only */ #define RCANFD_NCFG_NTSEG2(gpriv, x) \ - (((x) & ((gpriv)->info->nom_bittiming->tseg2_max - 1)) << reg_gen4(gpriv, 25, 24)) + (((x) & ((gpriv)->info->nom_bittiming->tseg2_max - 1)) << \ + (gpriv)->info->shift_table[RCANFD_NTSEG2_SH]) #define RCANFD_NCFG_NTSEG1(gpriv, x) \ - (((x) & ((gpriv)->info->nom_bittiming->tseg1_max - 1)) << reg_gen4(gpriv, 17, 16)) + (((x) & ((gpriv)->info->nom_bittiming->tseg1_max - 1)) << \ + (gpriv)->info->shift_table[RCANFD_NTSEG1_SH]) #define RCANFD_NCFG_NSJW(gpriv, x) \ - (((x) & ((gpriv)->info->nom_bittiming->sjw_max - 1)) << reg_gen4(gpriv, 10, 11)) + (((x) & ((gpriv)->info->nom_bittiming->sjw_max - 1)) << \ + (gpriv)->info->shift_table[RCANFD_NSJW_SH]) #define RCANFD_NCFG_NBRP(x) (((x) & 0x3ff) << 0) @@ -182,10 +185,12 @@ #define RCANFD_DCFG_DSJW(gpriv, x) (((x) & ((gpriv)->info->data_bittiming->sjw_max - 1)) << 24) #define RCANFD_DCFG_DTSEG2(gpriv, x) \ - (((x) & ((gpriv)->info->data_bittiming->tseg2_max - 1)) << reg_gen4(gpriv, 16, 20)) + (((x) & ((gpriv)->info->data_bittiming->tseg2_max - 1)) << \ + (gpriv)->info->shift_table[RCANFD_DTSEG2_SH]) #define RCANFD_DCFG_DTSEG1(gpriv, x) \ - (((x) & ((gpriv)->info->data_bittiming->tseg1_max - 1)) << reg_gen4(gpriv, 8, 16)) + (((x) & ((gpriv)->info->data_bittiming->tseg1_max - 1)) << \ + (gpriv)->info->shift_table[RCANFD_DTSEG1_SH]) #define RCANFD_DCFG_DBRP(x) (((x) & 0xff) << 0) @@ -227,10 +232,10 @@ /* RSCFDnCFDCFCCk */ #define RCANFD_CFCC_CFTML(gpriv, x) \ - (((x) & (gpriv)->info->max_cftml) << reg_gen4(gpriv, 16, 20)) -#define RCANFD_CFCC_CFM(gpriv, x) (((x) & 0x3) << reg_gen4(gpriv, 8, 16)) + (((x) & (gpriv)->info->max_cftml) << (gpriv)->info->shift_table[RCANFD_CFTML_SH]) +#define RCANFD_CFCC_CFM(gpriv, x) (((x) & 0x3) << (gpriv)->info->shift_table[RCANFD_CFM_SH]) #define RCANFD_CFCC_CFIM BIT(12) -#define RCANFD_CFCC_CFDC(gpriv, x) (((x) & 0x7) << reg_gen4(gpriv, 21, 8)) +#define RCANFD_CFCC_CFDC(gpriv, x) (((x) & 0x7) << (gpriv)->info->shift_table[RCANFD_CFDC_SH]) #define RCANFD_CFCC_CFPLS(x) (((x) & 0x7) << 4) #define RCANFD_CFCC_CFTXIE BIT(2) #define RCANFD_CFCC_CFE BIT(0) @@ -511,12 +516,24 @@ enum rcar_canfd_reg_offset_id { RCANFD_CFOFFSET, /* Transmit/receive FIFO buffer access ID register */ }; +enum rcar_canfd_shift_id { + RCANFD_NTSEG2_SH, /* Nominal Bit Rate Time Segment 2 Control */ + RCANFD_NTSEG1_SH, /* Nominal Bit Rate Time Segment 1 Control */ + RCANFD_NSJW_SH, /* Nominal Bit Rate Resynchronization Jump Width Control */ + RCANFD_DTSEG2_SH, /* Data Bit Rate Time Segment 2 Control */ + RCANFD_DTSEG1_SH, /* Data Bit Rate Time Segment 1 Control */ + RCANFD_CFTML_SH, /* Common FIFO TX Message Buffer Link */ + RCANFD_CFM_SH, /* Common FIFO Mode */ + RCANFD_CFDC_SH, /* Common FIFO Depth Configuration */ +}; + struct rcar_canfd_global; struct rcar_canfd_hw_info { const struct can_bittiming_const *nom_bittiming; const struct can_bittiming_const *data_bittiming; const u16 *regs; + const u8 *shift_table; u16 num_supported_rules; u8 rnc_stride; u8 rnc_field_width; @@ -643,10 +660,33 @@ static const u16 rcar_gen4_regs[] = { [RCANFD_CFOFFSET] = 0x6400, }; +static const u8 rcar_gen3_shift_table[] = { + [RCANFD_NTSEG2_SH] = 24, + [RCANFD_NTSEG1_SH] = 16, + [RCANFD_NSJW_SH] = 11, + [RCANFD_DTSEG2_SH] = 20, + [RCANFD_DTSEG1_SH] = 16, + [RCANFD_CFTML_SH] = 20, + [RCANFD_CFM_SH] = 16, + [RCANFD_CFDC_SH] = 8, +}; + +static const u8 rcar_gen4_shift_table[] = { + [RCANFD_NTSEG2_SH] = 25, + [RCANFD_NTSEG1_SH] = 17, + [RCANFD_NSJW_SH] = 10, + [RCANFD_DTSEG2_SH] = 16, + [RCANFD_DTSEG1_SH] = 8, + [RCANFD_CFTML_SH] = 16, + [RCANFD_CFM_SH] = 8, + [RCANFD_CFDC_SH] = 21, +}; + static const struct rcar_canfd_hw_info rcar_gen3_hw_info = { .nom_bittiming = &rcar_canfd_gen3_nom_bittiming_const, .data_bittiming = &rcar_canfd_gen3_data_bittiming_const, .regs = rcar_gen3_regs, + .shift_table = rcar_gen3_shift_table, .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, @@ -661,6 +701,7 @@ static const struct rcar_canfd_hw_info rcar_gen4_hw_info = { .nom_bittiming = &rcar_canfd_gen4_nom_bittiming_const, .data_bittiming = &rcar_canfd_gen4_data_bittiming_const, .regs = rcar_gen4_regs, + .shift_table = rcar_gen4_shift_table, .num_supported_rules = 512, .rnc_stride = 2, .rnc_field_width = 16, @@ -677,6 +718,7 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { .nom_bittiming = &rcar_canfd_gen3_nom_bittiming_const, .data_bittiming = &rcar_canfd_gen3_data_bittiming_const, .regs = rcar_gen3_regs, + .shift_table = rcar_gen3_shift_table, .num_supported_rules = 256, .rnc_stride = 4, .rnc_field_width = 8, @@ -688,17 +730,6 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { }; /* Helper functions */ -static inline bool is_gen4(struct rcar_canfd_global *gpriv) -{ - return gpriv->info == &rcar_gen4_hw_info; -} - -static inline u32 reg_gen4(struct rcar_canfd_global *gpriv, - u32 gen4, u32 not_gen4) -{ - return is_gen4(gpriv) ? gen4 : not_gen4; -} - static inline void rcar_canfd_update(u32 mask, u32 val, u32 __iomem *reg) { u32 data = readl(reg); From patchwork Wed Mar 26 12:19:51 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030029 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 42DA81E1C2B; Wed, 26 Mar 2025 12:21:11 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991673; cv=none; b=Y7SwogOuSl+llRnkLlm22Jp7ZHtE20NCAGLrhxt6ItE3DLzUV3Ge5kpkUFB020uUBTzMrhsX50PtYs1hpHaUSAEV8dm3MmqUa6S4UICb5Of5DoBS6763QnIQeYttXWRpVtqAmMhKKH4eHPwwNLb0IblL0t1mBVc2hLcwnycHlZ0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991673; c=relaxed/simple; bh=GCA/h7JXBbPrRaHZaqh353DSOW6ZlzcWmmyGRY6jYq4=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=U5pxJM4oLLCJij+xDcplvGt9JR0FsTZaB9ZmWZH0JWrXFW4nze2QvhNV5TlQSpNpfQFtvrVD64ZEMWbNJH2JQHgsBoqCV5ymEOgWkbKFRcNKBs1qYUL1A3sh4LcaYLaBiqKDYAcb+liDGvSvVE9R9YypEWCJEtXOEZ99AMYKDFg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: FILwTVt3SaC0X2Q/+fRqRw== X-CSE-MsgGUID: 74VXc3QTQiuO/fg9Pe7QFw== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Mar 2025 21:21:11 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 40C4240104CB; Wed, 26 Mar 2025 21:21:08 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 16/18] can: rcar_canfd: Add only_internal_clks variable to struct rcar_canfd_hw_info Date: Wed, 26 Mar 2025 12:19:51 +0000 Message-ID: <20250326122003.122976-17-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 All existing SoCs support an external clock, but RZ/G3E has only internal clocks. Add only_internal_clks to struct rcar_canfd_hw_info to handle this difference. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Collected tag. * Improved commit description by "All SoCs supports extenal clock"-> "All existing SoCs support an external clock". v3->v4: * No change. v2->v3: * No change v1->v2: * No change. --- drivers/net/can/rcar/rcar_canfd.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 20e591421cc6..7ad27087a176 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -546,6 +546,7 @@ struct rcar_canfd_hw_info { unsigned multi_channel_irqs:1; /* Has multiple channel irqs */ unsigned ch_interface_mode:1; /* Has channel interface mode */ unsigned shared_can_regs:1; /* Has shared classical can registers */ + unsigned only_internal_clks:1; /* Has only internal clocks */ }; /* Channel priv data */ @@ -2045,7 +2046,7 @@ static int rcar_canfd_probe(struct platform_device *pdev) fcan_freq = clk_get_rate(gpriv->can_clk) / info->postdiv; } else { fcan_freq = clk_get_rate(gpriv->can_clk); - gpriv->extclk = true; + gpriv->extclk = !gpriv->info->only_internal_clks; } addr = devm_platform_ioremap_resource(pdev, 0); From patchwork Wed Mar 26 12:19:52 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030030 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie6.idc.renesas.com (relmlor2.renesas.com [210.160.252.172]) by smtp.subspace.kernel.org (Postfix) with ESMTP id C7E9A1DF963; Wed, 26 Mar 2025 12:21:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.172 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991676; cv=none; b=WVg3YYXUSWrPRn6Zj9PA6W2+f5ELumgJNLBGx79JJjoYhsA5f4gTef9mhVhC7d7RQTl2bvOeTgF7Uwe8HQzTrYQ6GAR7TMB4Iscr5tKBqYAIpEUqSEyKRJzRf0jrh9k2RkTMiWjRxWercyyFLX7MBGH1LkOL0UEgcZdt4pecwPc= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991676; c=relaxed/simple; bh=Cm0VAgCjDAZTz7FFj5RDnzBqvaoyFRE+Tmryu9mCFCw=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=ZE1gBoMQuA6w25/828FzJ4Wi1A5dfPtbHKgFe1yTRzJ2GdY+p6uPOVsbrAGgJL268LF4FnjMAW81ukpf84sfFSSfY8q8NygO7VO1ToLwi3OM9MdEU5UpL6rxpY56GYZ/LCxLfx9179CzsESDqK389JeKmYl1F8U8ifViT8mUDZI= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.172 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: 7EUIL3t5RSaOP0NWsJDGTQ== X-CSE-MsgGUID: 8DS0BzxoRlWo2dRRfl8gEQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie6.idc.renesas.com with ESMTP; 26 Mar 2025 21:21:14 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id ADF9640104FA; Wed, 26 Mar 2025 21:21:11 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 17/18] can: rcar_canfd: Enhance multi_channel_irqs handling Date: Wed, 26 Mar 2025 12:19:52 +0000 Message-ID: <20250326122003.122976-18-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Currently multi_channel_irqs has only 2 channels. But RZ/G3E has six channels. Enhance multi_channel_irqs handling to support more than two channels. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * No change. v4->v5: * Collected tag. v3->v4: * No change. v2->v3: * No change. v1->v2: * No change. --- drivers/net/can/rcar/rcar_canfd.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 7ad27087a176..91f5649078c6 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -1851,16 +1851,19 @@ static int rcar_canfd_channel_probe(struct rcar_canfd_global *gpriv, u32 ch, if (info->multi_channel_irqs) { char *irq_name; + char name[10]; int err_irq; int tx_irq; - err_irq = platform_get_irq_byname(pdev, ch == 0 ? "ch0_err" : "ch1_err"); + scnprintf(name, 10, "ch%u_err", ch); + err_irq = platform_get_irq_byname(pdev, name); if (err_irq < 0) { err = err_irq; goto fail; } - tx_irq = platform_get_irq_byname(pdev, ch == 0 ? "ch0_trx" : "ch1_trx"); + scnprintf(name, 10, "ch%u_trx", ch); + tx_irq = platform_get_irq_byname(pdev, name); if (tx_irq < 0) { err = tx_irq; goto fail; From patchwork Wed Mar 26 12:19:53 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Biju Das X-Patchwork-Id: 14030031 X-Patchwork-Delegate: geert@linux-m68k.org Received: from relmlie5.idc.renesas.com (relmlor1.renesas.com [210.160.252.171]) by smtp.subspace.kernel.org (Postfix) with ESMTP id 701741DF963; Wed, 26 Mar 2025 12:21:18 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=210.160.252.171 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991680; cv=none; b=eBWzM13z7c6cPPrqWLXbDn1twof3E1LfYx2TWmVq02SjQHJ0Jx5/9P3ftvTDQkIapDKf2n/YhJsoEnyQlGWlQzYyBJraFw2BEEVfSde3InudsBMyn5Q05oA+UiseikmsvK3uMKRDblV4zHlWzj0rWJ76h+ziDa+VZU40NZe7InU= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1742991680; c=relaxed/simple; bh=/h0/GwO8iEZ0rlUPZab7dy4ECfbH8lLFIzs3CJXJjhQ=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=aDPDj+kEAviFf5hA7u1Zf9j5lHxaJvpcD493MXCPVWhQk33WCWFW+UCpM83p6bw8OOJ7erE1U1gLwe56z3AlzMDVcoj7TpYUrQVrnxtbadKG9ATsdBt+1BKkeXxLPAsynMGsTgFpBuF9skSFywdRJXdqMK3HzfFLVb5cZdR4Gcg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com; spf=pass smtp.mailfrom=bp.renesas.com; arc=none smtp.client-ip=210.160.252.171 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=bp.renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=bp.renesas.com X-CSE-ConnectionGUID: USWJUceiQLWFw1OMM1YEpg== X-CSE-MsgGUID: psrj5hQ2Rlepfpj6xakwpQ== Received: from unknown (HELO relmlir5.idc.renesas.com) ([10.200.68.151]) by relmlie5.idc.renesas.com with ESMTP; 26 Mar 2025 21:21:18 +0900 Received: from localhost.localdomain (unknown [10.226.92.116]) by relmlir5.idc.renesas.com (Postfix) with ESMTP id 2649240104CB; Wed, 26 Mar 2025 21:21:14 +0900 (JST) From: Biju Das To: Marc Kleine-Budde , Vincent Mailhol Cc: Biju Das , Wolfram Sang , Geert Uytterhoeven , =?utf-8?q?Uwe_Kleine-K=C3=B6n?= =?utf-8?q?ig?= , linux-can@vger.kernel.org, Prabhakar Mahadev Lad , Biju Das , linux-renesas-soc@vger.kernel.org Subject: [PATCH v7 18/18] can: rcar_canfd: Add RZ/G3E support Date: Wed, 26 Mar 2025 12:19:53 +0000 Message-ID: <20250326122003.122976-19-biju.das.jz@bp.renesas.com> X-Mailer: git-send-email 2.43.0 In-Reply-To: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> References: <20250326122003.122976-1-biju.das.jz@bp.renesas.com> Precedence: bulk X-Mailing-List: linux-renesas-soc@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 The CAN-FD IP found on the RZ/G3E SoC is similar to R-Car Gen4, but it has no external clock instead it has clk_ram, it has 6 channels and supports 20 interrupts. Add support for RZ/G3E CAN-FD driver. Reviewed-by: Geert Uytterhoeven Signed-off-by: Biju Das Reviewed-by: Vincent Mailhol --- v6->v7: * No change. v5->v6: * Collected tag * Updated r9a09g047_hw_info table. v4->v5: * Updated error description as "cannot get enabled ram clock" * Updated r9a09g047_hw_info table. v3->v4: * No change. v2->v3: * Replaced gen4_type entry with mask_table, shift_table, regs, ch_interface_mode and shared_can_reg. v1->v2: * No change. --- drivers/net/can/rcar/rcar_canfd.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) diff --git a/drivers/net/can/rcar/rcar_canfd.c b/drivers/net/can/rcar/rcar_canfd.c index 91f5649078c6..243eaf6c24c4 100644 --- a/drivers/net/can/rcar/rcar_canfd.c +++ b/drivers/net/can/rcar/rcar_canfd.c @@ -730,6 +730,24 @@ static const struct rcar_canfd_hw_info rzg2l_hw_info = { .multi_channel_irqs = 1, }; +static const struct rcar_canfd_hw_info r9a09g047_hw_info = { + .nom_bittiming = &rcar_canfd_gen4_nom_bittiming_const, + .data_bittiming = &rcar_canfd_gen4_data_bittiming_const, + .regs = rcar_gen4_regs, + .shift_table = rcar_gen4_shift_table, + .num_supported_rules = 512, + .rnc_stride = 2, + .rnc_field_width = 16, + .max_aflpn = 63, + .max_cftml = 31, + .max_channels = 6, + .postdiv = 1, + .multi_channel_irqs = 1, + .ch_interface_mode = 1, + .shared_can_regs = 1, + .only_internal_clks = 1, +}; + /* Helper functions */ static inline void rcar_canfd_update(u32 mask, u32 val, u32 __iomem *reg) { @@ -1963,6 +1981,7 @@ static int rcar_canfd_probe(struct platform_device *pdev) u32 rule_entry = 0; bool fdmode = true; /* CAN FD only mode - default */ char name[9] = "channelX"; + struct clk *clk_ram; int i; info = of_device_get_match_data(dev); @@ -2052,6 +2071,11 @@ static int rcar_canfd_probe(struct platform_device *pdev) gpriv->extclk = !gpriv->info->only_internal_clks; } + clk_ram = devm_clk_get_optional_enabled(dev, "ram_clk"); + if (IS_ERR(clk_ram)) + return dev_err_probe(dev, PTR_ERR(clk_ram), + "cannot get enabled ram clock\n"); + addr = devm_platform_ioremap_resource(pdev, 0); if (IS_ERR(addr)) { err = PTR_ERR(addr); @@ -2214,6 +2238,7 @@ static SIMPLE_DEV_PM_OPS(rcar_canfd_pm_ops, rcar_canfd_suspend, static const __maybe_unused struct of_device_id rcar_canfd_of_table[] = { { .compatible = "renesas,r8a779a0-canfd", .data = &rcar_gen4_hw_info }, + { .compatible = "renesas,r9a09g047-canfd", .data = &r9a09g047_hw_info }, { .compatible = "renesas,rcar-gen3-canfd", .data = &rcar_gen3_hw_info }, { .compatible = "renesas,rcar-gen4-canfd", .data = &rcar_gen4_hw_info }, { .compatible = "renesas,rzg2l-canfd", .data = &rzg2l_hw_info },