RE: [EXTERNAL] [PATCH 2/3] net: ti: icss-iep: Enable compare events

From: Sunil Kovvuri Goutham
Date: Fri May 31 2024 - 01:12:41 EST




>-----Original Message-----
>From: Diogo Ivo <diogo.ivo@xxxxxxxxxxx>
>Sent: Wednesday, May 29, 2024 9:35 PM
>To: MD Danish Anwar <danishanwar@xxxxxx>; Roger Quadros
><rogerq@xxxxxxxxxx>; David S. Miller <davem@xxxxxxxxxxxxx>; Eric Dumazet
><edumazet@xxxxxxxxxx>; Jakub Kicinski <kuba@xxxxxxxxxx>; Paolo Abeni
><pabeni@xxxxxxxxxx>; Richard Cochran <richardcochran@xxxxxxxxx>;
>Nishanth Menon <nm@xxxxxx>; Vignesh Raghavendra <vigneshr@xxxxxx>;
>Tero Kristo <kristo@xxxxxxxxxx>; Rob Herring <robh@xxxxxxxxxx>; Krzysztof
>Kozlowski <krzk+dt@xxxxxxxxxx>; Conor Dooley <conor+dt@xxxxxxxxxx>; Jan
>Kiszka <jan.kiszka@xxxxxxxxxxx>
>Cc: linux-arm-kernel@xxxxxxxxxxxxxxxxxxx; netdev@xxxxxxxxxxxxxxx; linux-
>kernel@xxxxxxxxxxxxxxx; devicetree@xxxxxxxxxxxxxxx; Diogo Ivo
><diogo.ivo@xxxxxxxxxxx>
>Subject: [EXTERNAL] [PATCH 2/3] net: ti: icss-iep: Enable compare events
>
>The IEP module supports compare events, in which a value is written to a
>hardware register and when the IEP counter reaches the written value an
>interrupt is generated. Add handling for this interrupt in order to support PPS
>events.
>
>Signed-off-by: Diogo Ivo <diogo.ivo@xxxxxxxxxxx>
>---
> iep = devm_kzalloc(dev, sizeof(*iep), GFP_KERNEL);
> if (!iep)
>@@ -827,6 +883,21 @@ static int icss_iep_probe(struct platform_device
>*pdev)
> if (IS_ERR(iep->base))
> return -ENODEV;
>
>+ iep->cap_cmp_irq = platform_get_irq_byname_optional(pdev,
>"iep_cap_cmp");
>+ if (iep->cap_cmp_irq < 0) {
>+ if (iep->cap_cmp_irq == -EPROBE_DEFER)
>+ return iep->cap_cmp_irq;

This info is coming from DT, is PROBE_DIFFER error return value possible ?

>+ iep->cap_cmp_irq = 0;
>+ } else {
>+ ret = devm_request_irq(dev, iep->cap_cmp_irq,
>+ icss_iep_cap_cmp_irq,
>IRQF_TRIGGER_HIGH,
>+ "iep_cap_cmp", iep);
>+ if (ret)
>+ return dev_err_probe(iep->dev, ret,
>+ "Request irq failed for cap_cmp\n");

Can't this driver live without this feature ?

>+ INIT_WORK(&iep->work, icss_iep_cap_cmp_work);
>+ }
>+