• Vincent Mailhol's avatar
    can: bittiming: allow TDC{V,O} to be zero and add can_tdc_const::tdc{v,o,f}_min · 63dfe070
    Vincent Mailhol authored
    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.
    
    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".
    
    Comments of struct can_tdc and can_tdc_const are updated accordingly.
    
    Finally, the changes are applied to the etas_es58x driver.
    
    Link: https://lore.kernel.org/all/20210918095637.20108-2-mailhol.vincent@wanadoo.frSigned-off-by: default avatarVincent Mailhol <mailhol.vincent@wanadoo.fr>
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    63dfe070
bittiming.c 8.6 KB