Lines Matching refs:bt
117 static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt,
133 if (bt->sample_point) {
134 sample_point_nominal = bt->sample_point;
136 if (bt->bitrate > 800000)
138 else if (bt->bitrate > 500000)
150 brp = priv->clock.freq / (tsegall * bt->bitrate) + tseg % 2;
158 bitrate_error = abs(bt->bitrate - bitrate);
185 do_div(v64, bt->bitrate);
198 bt->sample_point = can_update_sample_point(btc, sample_point_nominal,
204 bt->tq = (u32)v64;
205 bt->prop_seg = tseg1 / 2;
206 bt->phase_seg1 = tseg1 - bt->prop_seg;
207 bt->phase_seg2 = tseg2;
210 if (!bt->sjw || !btc->sjw_max) {
211 bt->sjw = 1;
213 /* bt->sjw is at least 1 -> sanitize upper bound to sjw_max */
214 if (bt->sjw > btc->sjw_max)
215 bt->sjw = btc->sjw_max;
216 /* bt->sjw must not be higher than tseg2 */
217 if (tseg2 < bt->sjw)
218 bt->sjw = tseg2;
221 bt->brp = best_brp;
224 bt->bitrate = priv->clock.freq /
225 (bt->brp * (CAN_SYNC_SEG + tseg1 + tseg2));
230 static int can_calc_bittiming(struct net_device *dev, struct can_bittiming *bt,
243 static int can_fixup_bittiming(struct net_device *dev, struct can_bittiming *bt,
250 tseg1 = bt->prop_seg + bt->phase_seg1;
251 if (!bt->sjw)
252 bt->sjw = 1;
253 if (bt->sjw > btc->sjw_max ||
255 bt->phase_seg2 < btc->tseg2_min || bt->phase_seg2 > btc->tseg2_max)
258 brp64 = (u64)priv->clock.freq * (u64)bt->tq;
265 bt->brp = (u32)brp64;
267 if (bt->brp < btc->brp_min || bt->brp > btc->brp_max)
270 alltseg = bt->prop_seg + bt->phase_seg1 + bt->phase_seg2 + 1;
271 bt->bitrate = priv->clock.freq / (bt->brp * alltseg);
272 bt->sample_point = ((tseg1 + 1) * 1000) / alltseg;
279 can_validate_bitrate(struct net_device *dev, struct can_bittiming *bt,
287 if (bt->bitrate == bitrate_const[i])
297 static int can_get_bittiming(struct net_device *dev, struct can_bittiming *bt,
309 if (!bt->tq && bt->bitrate && btc)
310 err = can_calc_bittiming(dev, bt, btc);
311 else if (bt->tq && !bt->bitrate && btc)
312 err = can_fixup_bittiming(dev, bt, btc);
313 else if (!bt->tq && bt->bitrate && bitrate_const)
314 err = can_validate_bitrate(dev, bt, bitrate_const,
975 struct can_bittiming bt;
989 memcpy(&bt, nla_data(data[IFLA_CAN_BITTIMING]), sizeof(bt));
990 err = can_get_bittiming(dev, &bt,
997 if (priv->bitrate_max && bt.bitrate > priv->bitrate_max) {
1003 memcpy(&priv->bittiming, &bt, sizeof(bt));