Re: CAN-FD Transceiver Limitations
From: Franklin S Cooper Jr <hidden>
Date: 2017-06-29 16:36:59
Also in:
linux-can, linux-devicetree
+device tree mailing list Hi Andrew On 06/29/2017 10:41 AM, Andrew Lunn wrote:
quoted
Transceivers for CAN are not apart of any model. Traditional CAN didn't have a problem because all transceivers from my understanding supported the maximum speed of 1 Mbps defined by the spec. However, with the introduction of CAN Flexible Datarate mode it seems that for transceivers that supported CAN-FD the maximum supported speeds vary.So transceivers are dumb devices, nothing to configure, so no need to have a driver for them.quoted
Now that I think of it you also can't determine if the transceiver supports CAN-FD in the first place. IP that supports CAN-FD is backwards compatible with standard CAN. Therefore, its feasible that you may even use a transceiver that doesn't support CAN-FD. So I would think something like the below would be needed. mcan@0 { ... fixed-transceiver { max-canfd-speed = <2000> }; ... };Are there likely to be other transceiver properties? Adding a subnode may not make sense if this is going to be the only property. Also, 2KHz is not very fast :-) Taking a quick look in Documentation/devicetree/bindings/net/can, it seems a bit of a wild west. No standardization, no central binding which CAN drivers are expected to support, etc. This sounds like a generic problem, not an mcan problem. So document this property centrally, implement the parsing of it centrally, etc, to encourage other CAN drivers to use it, rather than re-invent the wheel.
As of now its the only property that I think is needed. In general from past experience and threads it seems that people are fairly adamant about having DT mimic hardware as closely as possible. So since from a hardware perspective the transceiver is an external device that is connected to the CAN IP it would make sense for a subnode to be used to model it. But either way works for me. If the device tree folks do not care for subnode to be created then I can just add a property. Also I agree that attempting to make this optional property/subnode generic to all of CAN would be preferable. Another not sure if its feasible yet without standardization being first forced across all CAN drivers.
Andrew