Re: [PATCH 04/10] can: grcan: Add clock handling
From: Arun Muthusamy
Date: Mon Nov 24 2025 - 04:46:55 EST
Hi Krzysztof,
Thank you for your thorough review. I wanted to get your guidance
regarding the clock property in the DT binding.
In the binding, I included the clocks property with maxItems: 1 to
indicate that a clock should be described. The driver calls:
clk = devm_clk_get(dev, NULL);
Since we pass NULL, the driver always requests the first (and only)
clock from the clocks property.
I want to ensure the binding is fully compliant with the Linux DT ABI.
Could you advise the preferred way to document the clocks and
clock-names properties in this scenario? Specifically:
Do we still need a clock-names entry even if the driver never uses it by
name?
For LEON systems, the driver relies on the "freq" property, while NOEL
systems use a standard "clocks" binding. Given this dual approach,
should the clocks property be marked as optional or required in the
binding?
Thank you for your time and help.
--
BR,
Arun Muthusamy
Software Engineer
Frontgrade Gaisler
T : +46 (0) 700 558 528
arun.muthusamy@xxxxxxxxxxx
Frontgrade Gaisler AB, Kungsgatan 12, SE-411 19 GÖTEBORG, Sweden.
+46 (0) 31 775 8650, www.gaisler.com
On 18.11.2025 12:01, Krzysztof Kozlowski wrote:
On 18/11/2025 10:21, Arun Muthusamy wrote:
From: Daniel Hellstrom <daniel@xxxxxxxxxxx>
Add clock handling and add error messages for missing 'freq' DT
property.
Signed-off-by: Arun Muthusamy <arun.muthusamy@xxxxxxxxxxx>
Signed-off-by: Daniel Hellstrom <daniel@xxxxxxxxxxx>
---
drivers/net/can/grcan.c | 19 ++++++++++++++++---
1 file changed, 16 insertions(+), 3 deletions(-)
diff --git a/drivers/net/can/grcan.c b/drivers/net/can/grcan.c
index 3b1b09943436..538a9b4f82ab 100644
--- a/drivers/net/can/grcan.c
+++ b/drivers/net/can/grcan.c
@@ -34,7 +34,7 @@
#include <linux/spinlock.h>
#include <linux/of.h>
#include <linux/of_irq.h>
-
+#include <linux/clk.h>
#include <linux/dma-mapping.h>
#define DRV_NAME "grcan"
@@ -1644,6 +1644,7 @@ static int grcan_probe(struct platform_device
*ofdev)
{
struct device_node *np = ofdev->dev.of_node;
struct device_node *sysid_parent;
+ struct clk *clk;
u32 sysid, ambafreq;
int irq, err;
void __iomem *base;
@@ -1663,8 +1664,20 @@ static int grcan_probe(struct platform_device
*ofdev)
err = of_property_read_u32(np, "freq", &ambafreq);
if (err) {
- dev_err(&ofdev->dev, "unable to fetch \"freq\" property\n");
- goto exit_error;
+ clk = devm_clk_get(&ofdev->dev, NULL);
Nope, your binding said there is no clock... you cannot add
undocumented
ABI.
Best regards,
Krzysztof