Lines Matching refs:bt
9 void can_sjw_set_default(struct can_bittiming *bt)
11 if (bt->sjw)
15 bt->sjw = max(1U, min(bt->phase_seg1, bt->phase_seg2 / 2));
18 int can_sjw_check(const struct net_device *dev, const struct can_bittiming *bt,
21 if (bt->sjw > btc->sjw_max) {
23 bt->sjw, btc->sjw_max);
27 if (bt->sjw > bt->phase_seg1) {
30 bt->sjw, bt->phase_seg1);
34 if (bt->sjw > bt->phase_seg2) {
37 bt->sjw, bt->phase_seg2);
49 static int can_fixup_bittiming(const struct net_device *dev, struct can_bittiming *bt,
53 const unsigned int tseg1 = bt->prop_seg + bt->phase_seg1;
68 if (bt->phase_seg2 < btc->tseg2_min) {
70 bt->phase_seg2, btc->tseg2_min);
73 if (bt->phase_seg2 > btc->tseg2_max) {
75 bt->phase_seg2, btc->tseg2_max);
79 can_sjw_set_default(bt);
81 err = can_sjw_check(dev, bt, btc, extack);
85 brp64 = (u64)priv->clock.freq * (u64)bt->tq;
92 bt->brp = (u32)brp64;
94 if (bt->brp < btc->brp_min) {
96 bt->brp, btc->brp_min);
99 if (bt->brp > btc->brp_max) {
101 bt->brp, btc->brp_max);
105 bt->bitrate = priv->clock.freq / (bt->brp * can_bit_time(bt));
106 bt->sample_point = ((CAN_SYNC_SEG + tseg1) * 1000) / can_bit_time(bt);
107 bt->tq = DIV_U64_ROUND_CLOSEST(mul_u32_u32(bt->brp, NSEC_PER_SEC),
115 can_validate_bitrate(const struct net_device *dev, const struct can_bittiming *bt,
123 if (bt->bitrate == bitrate_const[i])
128 bt->brp);
133 int can_get_bittiming(const struct net_device *dev, struct can_bittiming *bt,
144 if (!bt->tq && bt->bitrate && btc)
145 return can_calc_bittiming(dev, bt, btc, extack);
146 if (bt->tq && !bt->bitrate && btc)
147 return can_fixup_bittiming(dev, bt, btc, extack);
148 if (!bt->tq && bt->bitrate && bitrate_const)
149 return can_validate_bitrate(dev, bt, bitrate_const,