On 15.08.2021 12:32:43, Vincent Mailhol wrote: > ISO 11898-1 specifies in section 11.3.3 "Transmitter delay > compensation" that "the configuration range for [the] SSP position > shall be at least 0 to 63 minimum time quanta." > > Because SSP = TDCV + TDCO, it means that we should allow both TDCV and > TDCO to hold zero value in order to honor SSP's minimum possible > value. > > However, current implementation assigned special meaning to TDCV and > TDCO's zero values: > * TDCV = 0 -> TDCV is automatically measured by the transceiver. > * TDCO = 0 -> TDC is off. > > In order to allow for those values to really be zero and to maintain > current features, we introduce two new flags: > * CAN_CTRLMODE_TDC_AUTO indicates that the controller support > automatic measurement of TDCV. > * CAN_CTRLMODE_TDC_MANUAL indicates that the controller support > manual configuration of TDCV. N.B.: current implementation failed > to provide an option for the driver to indicate that only manual > mode was supported. > > TDC is disabled if both CAN_CTRLMODE_TDC_AUTO and > CAN_CTRLMODE_TDC_MANUAL flags are off, c.f. the helper function > can_tdc_is_enabled() which is also introduced in this patch. Nitpick: We can only say that TDC is disabled, if the driver supports the TDC interface at all, which is the case if tdc_const is set. > Also, this patch adds three fields: tdcv_min, tdco_min and tdcf_min to > struct can_tdc_const. While we are not convinced that those three > fields could be anything else than zero, we can imagine that some > controllers might specify a lower bound on these. Thus, those minimums > are really added "just in case". I'm not sure, if we talked about the mcp251xfd's tcdo, valid values are -64...63. Marc -- Pengutronix e.K. | Marc Kleine-Budde | Embedded Linux | https://www.pengutronix.de | Vertretung West/Dortmund | Phone: +49-231-2826-924 | Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |