• Marc Kleine-Budde's avatar
    can: dev: can-calc-bit-timing(): better sample point calculation · 7da29f97
    Marc Kleine-Budde authored
    This patch optimizes the calculation of the sample point. To understand what it
    does have a look at the original implementation.
    
    If there is a combination of timing parameters where both the bitrate and
    sample point error are 0 the current implementation will find it.
    
    However if the reference clock doesn't allow an optimal bitrate (this means the
    bitrate error is always != 0) there might be several timing parameter
    combinations having the same bitrate error. The original implementation will
    allways choose the one with the highest brp. The actual sample point error
    isn't taken into account.
    
    This patch changes the algorithm to minimize the sample point error, too. Now a
    brp/tseg combination is accepted as better if one of these condition are
    fulfilled:
    1) the bit rate error must be smaller, or
    2) the bit rate error must be equal and
       the sample point error must be equal or smaller
    
    If a smaller bit rate error is found the sample point error is reset. This
    ensures that we first optimize for small bit rate error and then for small
    sample point errors.
    Signed-off-by: default avatarMarc Kleine-Budde <mkl@pengutronix.de>
    7da29f97
dev.c 29.1 KB