Hi Oliver, On 09/22/2011 12:24 PM, Oliver Hartkopp wrote: > This patch adds support for SJW user settings to not set the synchronization > jump width (SJW) to 1 in any case when using the in-kernel bittiming > calculation. > > The ip-tool from iproute2 already supports to pass the user defined SJW > value. The given SJW value is sanitized with the controller specific sjw_max > and the calculated tseg2 value. As the SJW can have values up to 4 providing > this value will lead to the maximum possible SJW automatically. A higher SJW > allows higher controller oscillator tolerances. > > Signed-off-by: Oliver Hartkopp <[email protected]> > > --- > > diff --git a/drivers/net/can/dev.c b/drivers/net/can/dev.c > index 9bf1116..25695bd 100644 > --- a/drivers/net/can/dev.c > +++ b/drivers/net/can/dev.c > @@ -150,7 +150,19 @@ static int can_calc_bittiming(struct net_device *dev, > struct can_bittiming *bt) > bt->prop_seg = tseg1 / 2; > bt->phase_seg1 = tseg1 - bt->prop_seg; > bt->phase_seg2 = tseg2; > - bt->sjw = 1; > + > + /* check for sjw user settings */ > + if (!bt->sjw || !btc->sjw_max) > + bt->sjw = 1; > + else { > + /* bt->sjw is at least 1 -> sanitize upper bound to sjw_max */ > + if (bt->sjw > btc->sjw_max) > + bt->sjw = btc->sjw_max; > + /* bt->sjw must not be higher than tseg2 */ > + if (tseg2 < bt->sjw) > + bt->sjw = tseg2; > + } > +
Hm, bt->sjw is always 0 when can_calc_bittiming() is called!? Or have I missed something. Wolfgang, _______________________________________________ Socketcan-core mailing list [email protected] https://lists.berlios.de/mailman/listinfo/socketcan-core
