Re: [PATCH v4 1/4] dt-bindings: net: can: Add poll-interval for MCAN

From: Rob Herring
Date: Fri May 05 2023 - 17:30:01 EST


On Mon, May 01, 2023 at 05:46:21PM -0500, Judith Mendez wrote:
> On AM62x SoC, MCANs on MCU domain do not have hardware interrupt
> routed to A53 Linux, instead they will use software interrupt by
> hrtimer. To enable timer method, interrupts should be optional so
> remove interrupts property from required section and introduce
> poll-interval property.
>
> Signed-off-by: Judith Mendez <jm@xxxxxx>
> ---
> Changelog:
> v3:
> 1. Move binding patch to first in series
> 2. Update description for poll-interval
> 3. Add oneOf to specify using interrupts/interrupt-names or poll-interval
> 4. Fix example property: add comment below 'example'
>
> v2:
> 1. Add poll-interval property to enable timer polling method
> 2. Add example using poll-interval property
>
> .../bindings/net/can/bosch,m_can.yaml | 36 +++++++++++++++++--
> 1 file changed, 34 insertions(+), 2 deletions(-)
>
> diff --git a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
> index 67879aab623b..c024ee49962c 100644
> --- a/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
> +++ b/Documentation/devicetree/bindings/net/can/bosch,m_can.yaml
> @@ -14,6 +14,13 @@ maintainers:
> allOf:
> - $ref: can-controller.yaml#
>
> +oneOf:
> + - required:
> + - interrupts
> + - interrupt-names
> + - required:
> + - poll-interval

Move this next to 'required'.

> +
> properties:
> compatible:
> const: bosch,m_can
> @@ -40,6 +47,14 @@ properties:
> - const: int1
> minItems: 1
>
> + poll-interval:
> + $ref: /schemas/types.yaml#/definitions/flag

This is a common property already defined as a uint32. You shouldn't
define a new type.

A flag doesn't even make sense. If that's all you need, then just enable
polling if no interrupt is present.

> + description: Enable hrtimer polling method for an M_CAN device.
> + If this property is defined in MCAN node, it tells the driver to
> + enable polling method for an MCAN device. If for an MCAN device,
> + hardware interrupt is found and hrtimer polling method is enabled,

What's hrtimer? (Don't put Linuxisms in bindings)

> + the driver will use hardware interrupt method.
> +
> clocks:
> items:
> - description: peripheral clock
> @@ -122,8 +137,6 @@ required:
> - compatible
> - reg
> - reg-names
> - - interrupts
> - - interrupt-names
> - clocks
> - clock-names
> - bosch,mram-cfg
> @@ -132,6 +145,7 @@ additionalProperties: false
>
> examples:
> - |
> + // Example with interrupts
> #include <dt-bindings/clock/imx6sx-clock.h>
> can@20e8000 {
> compatible = "bosch,m_can";
> @@ -149,4 +163,22 @@ examples:
> };
> };
>
> + - |
> + // Example with timer polling
> + #include <dt-bindings/clock/imx6sx-clock.h>
> + can@20e8000 {
> + compatible = "bosch,m_can";
> + reg = <0x020e8000 0x4000>, <0x02298000 0x4000>;
> + reg-names = "m_can", "message_ram";
> + poll-interval;
> + clocks = <&clks IMX6SX_CLK_CANFD>,
> + <&clks IMX6SX_CLK_CANFD>;
> + clock-names = "hclk", "cclk";
> + bosch,mram-cfg = <0x0 0 0 32 0 0 0 1>;
> +
> + can-transceiver {
> + max-bitrate = <5000000>;
> + };
> + };
> +
> ...
> --
> 2.17.1
>