Skip to content

Commit b803c4a

Browse files
vincent-mailholmarckleinebudde
authored andcommitted
can: dev: add struct data_bittiming_params to group FD parameters
This is a preparation patch for the introduction of CAN XL. CAN FD and CAN XL uses similar bittiming parameters. Add one level of nesting for all the CAN FD parameters. Typically: priv->can.data_bittiming; becomes: priv->can.fd.data_bittiming; This way, the CAN XL equivalent (to be introduced later) would be: priv->can.xl.data_bittiming; Add the new struct data_bittiming_params which contains all the data bittiming parameters, including the TDC and the callback functions. This done, update all the CAN FD drivers to make use of the new layout. Acked-by: Oliver Hartkopp <[email protected]> Signed-off-by: Vincent Mailhol <[email protected]> Link: https://patch.msgid.link/[email protected] [mkl: fix rcar_canfd] Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent 851013e commit b803c4a

File tree

21 files changed

+117
-113
lines changed

21 files changed

+117
-113
lines changed

drivers/net/can/ctucanfd/ctucanfd_base.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -275,7 +275,7 @@ static int ctucan_set_bittiming(struct net_device *ndev)
275275
static int ctucan_set_data_bittiming(struct net_device *ndev)
276276
{
277277
struct ctucan_priv *priv = netdev_priv(ndev);
278-
struct can_bittiming *dbt = &priv->can.data_bittiming;
278+
struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
279279

280280
/* Note that dbt may be modified here */
281281
return ctucan_set_btr(ndev, dbt, false);
@@ -290,7 +290,7 @@ static int ctucan_set_data_bittiming(struct net_device *ndev)
290290
static int ctucan_set_secondary_sample_point(struct net_device *ndev)
291291
{
292292
struct ctucan_priv *priv = netdev_priv(ndev);
293-
struct can_bittiming *dbt = &priv->can.data_bittiming;
293+
struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
294294
int ssp_offset = 0;
295295
u32 ssp_cfg = 0; /* No SSP by default */
296296

@@ -1358,12 +1358,12 @@ int ctucan_probe_common(struct device *dev, void __iomem *addr, int irq, unsigne
13581358
priv->ntxbufs = ntxbufs;
13591359
priv->dev = dev;
13601360
priv->can.bittiming_const = &ctu_can_fd_bit_timing_max;
1361-
priv->can.data_bittiming_const = &ctu_can_fd_bit_timing_data_max;
1361+
priv->can.fd.data_bittiming_const = &ctu_can_fd_bit_timing_data_max;
13621362
priv->can.do_set_mode = ctucan_do_set_mode;
13631363

13641364
/* Needed for timing adjustment to be performed as soon as possible */
13651365
priv->can.do_set_bittiming = ctucan_set_bittiming;
1366-
priv->can.do_set_data_bittiming = ctucan_set_data_bittiming;
1366+
priv->can.fd.do_set_data_bittiming = ctucan_set_data_bittiming;
13671367

13681368
priv->can.do_get_berr_counter = ctucan_get_berr_counter;
13691369
priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK

drivers/net/can/dev/dev.c

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -404,8 +404,8 @@ int open_candev(struct net_device *dev)
404404

405405
/* For CAN FD the data bitrate has to be >= the arbitration bitrate */
406406
if ((priv->ctrlmode & CAN_CTRLMODE_FD) &&
407-
(!priv->data_bittiming.bitrate ||
408-
priv->data_bittiming.bitrate < priv->bittiming.bitrate)) {
407+
(!priv->fd.data_bittiming.bitrate ||
408+
priv->fd.data_bittiming.bitrate < priv->bittiming.bitrate)) {
409409
netdev_err(dev, "incorrect/missing data bit-timing\n");
410410
return -EINVAL;
411411
}
@@ -543,16 +543,16 @@ int register_candev(struct net_device *dev)
543543
if (!priv->bitrate_const != !priv->bitrate_const_cnt)
544544
return -EINVAL;
545545

546-
if (!priv->data_bitrate_const != !priv->data_bitrate_const_cnt)
546+
if (!priv->fd.data_bitrate_const != !priv->fd.data_bitrate_const_cnt)
547547
return -EINVAL;
548548

549549
/* We only support either fixed bit rates or bit timing const. */
550-
if ((priv->bitrate_const || priv->data_bitrate_const) &&
551-
(priv->bittiming_const || priv->data_bittiming_const))
550+
if ((priv->bitrate_const || priv->fd.data_bitrate_const) &&
551+
(priv->bittiming_const || priv->fd.data_bittiming_const))
552552
return -EINVAL;
553553

554554
if (!can_bittiming_const_valid(priv->bittiming_const) ||
555-
!can_bittiming_const_valid(priv->data_bittiming_const))
555+
!can_bittiming_const_valid(priv->fd.data_bittiming_const))
556556
return -EINVAL;
557557

558558
if (!priv->termination_const) {

drivers/net/can/dev/netlink.c

Lines changed: 37 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -141,7 +141,7 @@ static int can_tdc_changelink(struct can_priv *priv, const struct nlattr *nla,
141141
{
142142
struct nlattr *tb_tdc[IFLA_CAN_TDC_MAX + 1];
143143
struct can_tdc tdc = { 0 };
144-
const struct can_tdc_const *tdc_const = priv->tdc_const;
144+
const struct can_tdc_const *tdc_const = priv->fd.tdc_const;
145145
int err;
146146

147147
if (!tdc_const || !can_tdc_is_enabled(priv))
@@ -179,7 +179,7 @@ static int can_tdc_changelink(struct can_priv *priv, const struct nlattr *nla,
179179
tdc.tdcf = tdcf;
180180
}
181181

182-
priv->tdc = tdc;
182+
priv->fd.tdc = tdc;
183183

184184
return 0;
185185
}
@@ -228,10 +228,10 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
228228
dev->mtu = CANFD_MTU;
229229
} else {
230230
dev->mtu = CAN_MTU;
231-
memset(&priv->data_bittiming, 0,
232-
sizeof(priv->data_bittiming));
231+
memset(&priv->fd.data_bittiming, 0,
232+
sizeof(priv->fd.data_bittiming));
233233
priv->ctrlmode &= ~CAN_CTRLMODE_TDC_MASK;
234-
memset(&priv->tdc, 0, sizeof(priv->tdc));
234+
memset(&priv->fd.tdc, 0, sizeof(priv->fd.tdc));
235235
}
236236

237237
tdc_mask = cm->mask & CAN_CTRLMODE_TDC_MASK;
@@ -312,16 +312,16 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
312312
* directly via do_set_bitrate(). Bail out if neither
313313
* is given.
314314
*/
315-
if (!priv->data_bittiming_const && !priv->do_set_data_bittiming &&
316-
!priv->data_bitrate_const)
315+
if (!priv->fd.data_bittiming_const && !priv->fd.do_set_data_bittiming &&
316+
!priv->fd.data_bitrate_const)
317317
return -EOPNOTSUPP;
318318

319319
memcpy(&dbt, nla_data(data[IFLA_CAN_DATA_BITTIMING]),
320320
sizeof(dbt));
321321
err = can_get_bittiming(dev, &dbt,
322-
priv->data_bittiming_const,
323-
priv->data_bitrate_const,
324-
priv->data_bitrate_const_cnt,
322+
priv->fd.data_bittiming_const,
323+
priv->fd.data_bitrate_const,
324+
priv->fd.data_bitrate_const_cnt,
325325
extack);
326326
if (err)
327327
return err;
@@ -333,7 +333,7 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
333333
return -EINVAL;
334334
}
335335

336-
memset(&priv->tdc, 0, sizeof(priv->tdc));
336+
memset(&priv->fd.tdc, 0, sizeof(priv->fd.tdc));
337337
if (data[IFLA_CAN_TDC]) {
338338
/* TDC parameters are provided: use them */
339339
err = can_tdc_changelink(priv, data[IFLA_CAN_TDC],
@@ -346,17 +346,17 @@ static int can_changelink(struct net_device *dev, struct nlattr *tb[],
346346
/* Neither of TDC parameters nor TDC flags are
347347
* provided: do calculation
348348
*/
349-
can_calc_tdco(&priv->tdc, priv->tdc_const, &dbt,
349+
can_calc_tdco(&priv->fd.tdc, priv->fd.tdc_const, &dbt,
350350
&priv->ctrlmode, priv->ctrlmode_supported);
351351
} /* else: both CAN_CTRLMODE_TDC_{AUTO,MANUAL} are explicitly
352352
* turned off. TDC is disabled: do nothing
353353
*/
354354

355-
memcpy(&priv->data_bittiming, &dbt, sizeof(dbt));
355+
memcpy(&priv->fd.data_bittiming, &dbt, sizeof(dbt));
356356

357-
if (priv->do_set_data_bittiming) {
357+
if (priv->fd.do_set_data_bittiming) {
358358
/* Finally, set the bit-timing registers */
359-
err = priv->do_set_data_bittiming(dev);
359+
err = priv->fd.do_set_data_bittiming(dev);
360360
if (err)
361361
return err;
362362
}
@@ -394,7 +394,7 @@ static size_t can_tdc_get_size(const struct net_device *dev)
394394
struct can_priv *priv = netdev_priv(dev);
395395
size_t size;
396396

397-
if (!priv->tdc_const)
397+
if (!priv->fd.tdc_const)
398398
return 0;
399399

400400
size = nla_total_size(0); /* nest IFLA_CAN_TDC */
@@ -404,17 +404,17 @@ static size_t can_tdc_get_size(const struct net_device *dev)
404404
}
405405
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCO_MIN */
406406
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCO_MAX */
407-
if (priv->tdc_const->tdcf_max) {
407+
if (priv->fd.tdc_const->tdcf_max) {
408408
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCF_MIN */
409409
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCF_MAX */
410410
}
411411

412412
if (can_tdc_is_enabled(priv)) {
413413
if (priv->ctrlmode & CAN_CTRLMODE_TDC_MANUAL ||
414-
priv->do_get_auto_tdcv)
414+
priv->fd.do_get_auto_tdcv)
415415
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCV */
416416
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCO */
417-
if (priv->tdc_const->tdcf_max)
417+
if (priv->fd.tdc_const->tdcf_max)
418418
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_TDCF */
419419
}
420420

@@ -442,9 +442,9 @@ static size_t can_get_size(const struct net_device *dev)
442442
size += nla_total_size(sizeof(u32)); /* IFLA_CAN_RESTART_MS */
443443
if (priv->do_get_berr_counter) /* IFLA_CAN_BERR_COUNTER */
444444
size += nla_total_size(sizeof(struct can_berr_counter));
445-
if (priv->data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */
445+
if (priv->fd.data_bittiming.bitrate) /* IFLA_CAN_DATA_BITTIMING */
446446
size += nla_total_size(sizeof(struct can_bittiming));
447-
if (priv->data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */
447+
if (priv->fd.data_bittiming_const) /* IFLA_CAN_DATA_BITTIMING_CONST */
448448
size += nla_total_size(sizeof(struct can_bittiming_const));
449449
if (priv->termination_const) {
450450
size += nla_total_size(sizeof(priv->termination)); /* IFLA_CAN_TERMINATION */
@@ -454,9 +454,9 @@ static size_t can_get_size(const struct net_device *dev)
454454
if (priv->bitrate_const) /* IFLA_CAN_BITRATE_CONST */
455455
size += nla_total_size(sizeof(*priv->bitrate_const) *
456456
priv->bitrate_const_cnt);
457-
if (priv->data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */
458-
size += nla_total_size(sizeof(*priv->data_bitrate_const) *
459-
priv->data_bitrate_const_cnt);
457+
if (priv->fd.data_bitrate_const) /* IFLA_CAN_DATA_BITRATE_CONST */
458+
size += nla_total_size(sizeof(*priv->fd.data_bitrate_const) *
459+
priv->fd.data_bitrate_const_cnt);
460460
size += sizeof(priv->bitrate_max); /* IFLA_CAN_BITRATE_MAX */
461461
size += can_tdc_get_size(dev); /* IFLA_CAN_TDC */
462462
size += can_ctrlmode_ext_get_size(); /* IFLA_CAN_CTRLMODE_EXT */
@@ -468,8 +468,8 @@ static int can_tdc_fill_info(struct sk_buff *skb, const struct net_device *dev)
468468
{
469469
struct nlattr *nest;
470470
struct can_priv *priv = netdev_priv(dev);
471-
struct can_tdc *tdc = &priv->tdc;
472-
const struct can_tdc_const *tdc_const = priv->tdc_const;
471+
struct can_tdc *tdc = &priv->fd.tdc;
472+
const struct can_tdc_const *tdc_const = priv->fd.tdc_const;
473473

474474
if (!tdc_const)
475475
return 0;
@@ -497,8 +497,8 @@ static int can_tdc_fill_info(struct sk_buff *skb, const struct net_device *dev)
497497
if (priv->ctrlmode & CAN_CTRLMODE_TDC_MANUAL) {
498498
tdcv = tdc->tdcv;
499499
err = 0;
500-
} else if (priv->do_get_auto_tdcv) {
501-
err = priv->do_get_auto_tdcv(dev, &tdcv);
500+
} else if (priv->fd.do_get_auto_tdcv) {
501+
err = priv->fd.do_get_auto_tdcv(dev, &tdcv);
502502
}
503503
if (!err && nla_put_u32(skb, IFLA_CAN_TDC_TDCV, tdcv))
504504
goto err_cancel;
@@ -564,14 +564,14 @@ static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
564564
!priv->do_get_berr_counter(dev, &bec) &&
565565
nla_put(skb, IFLA_CAN_BERR_COUNTER, sizeof(bec), &bec)) ||
566566

567-
(priv->data_bittiming.bitrate &&
567+
(priv->fd.data_bittiming.bitrate &&
568568
nla_put(skb, IFLA_CAN_DATA_BITTIMING,
569-
sizeof(priv->data_bittiming), &priv->data_bittiming)) ||
569+
sizeof(priv->fd.data_bittiming), &priv->fd.data_bittiming)) ||
570570

571-
(priv->data_bittiming_const &&
571+
(priv->fd.data_bittiming_const &&
572572
nla_put(skb, IFLA_CAN_DATA_BITTIMING_CONST,
573-
sizeof(*priv->data_bittiming_const),
574-
priv->data_bittiming_const)) ||
573+
sizeof(*priv->fd.data_bittiming_const),
574+
priv->fd.data_bittiming_const)) ||
575575

576576
(priv->termination_const &&
577577
(nla_put_u16(skb, IFLA_CAN_TERMINATION, priv->termination) ||
@@ -586,11 +586,11 @@ static int can_fill_info(struct sk_buff *skb, const struct net_device *dev)
586586
priv->bitrate_const_cnt,
587587
priv->bitrate_const)) ||
588588

589-
(priv->data_bitrate_const &&
589+
(priv->fd.data_bitrate_const &&
590590
nla_put(skb, IFLA_CAN_DATA_BITRATE_CONST,
591-
sizeof(*priv->data_bitrate_const) *
592-
priv->data_bitrate_const_cnt,
593-
priv->data_bitrate_const)) ||
591+
sizeof(*priv->fd.data_bitrate_const) *
592+
priv->fd.data_bitrate_const_cnt,
593+
priv->fd.data_bitrate_const)) ||
594594

595595
(nla_put(skb, IFLA_CAN_BITRATE_MAX,
596596
sizeof(priv->bitrate_max),

drivers/net/can/flexcan/flexcan-core.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1226,7 +1226,7 @@ static void flexcan_set_bittiming_cbt(const struct net_device *dev)
12261226
{
12271227
struct flexcan_priv *priv = netdev_priv(dev);
12281228
struct can_bittiming *bt = &priv->can.bittiming;
1229-
struct can_bittiming *dbt = &priv->can.data_bittiming;
1229+
struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
12301230
struct flexcan_regs __iomem *regs = priv->regs;
12311231
u32 reg_cbt, reg_fdctrl;
12321232

@@ -2239,7 +2239,7 @@ static int flexcan_probe(struct platform_device *pdev)
22392239
priv->can.ctrlmode_supported |= CAN_CTRLMODE_FD |
22402240
CAN_CTRLMODE_FD_NON_ISO;
22412241
priv->can.bittiming_const = &flexcan_fd_bittiming_const;
2242-
priv->can.data_bittiming_const =
2242+
priv->can.fd.data_bittiming_const =
22432243
&flexcan_fd_data_bittiming_const;
22442244
} else {
22452245
priv->can.bittiming_const = &flexcan_bittiming_const;

drivers/net/can/ifi_canfd/ifi_canfd.c

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -669,7 +669,7 @@ static void ifi_canfd_set_bittiming(struct net_device *ndev)
669669
{
670670
struct ifi_canfd_priv *priv = netdev_priv(ndev);
671671
const struct can_bittiming *bt = &priv->can.bittiming;
672-
const struct can_bittiming *dbt = &priv->can.data_bittiming;
672+
const struct can_bittiming *dbt = &priv->can.fd.data_bittiming;
673673
u16 brp, sjw, tseg1, tseg2, tdc;
674674

675675
/* Configure bit timing */
@@ -1000,10 +1000,10 @@ static int ifi_canfd_plat_probe(struct platform_device *pdev)
10001000

10011001
priv->can.clock.freq = readl(addr + IFI_CANFD_CANCLOCK);
10021002

1003-
priv->can.bittiming_const = &ifi_canfd_bittiming_const;
1004-
priv->can.data_bittiming_const = &ifi_canfd_bittiming_const;
1005-
priv->can.do_set_mode = ifi_canfd_set_mode;
1006-
priv->can.do_get_berr_counter = ifi_canfd_get_berr_counter;
1003+
priv->can.bittiming_const = &ifi_canfd_bittiming_const;
1004+
priv->can.fd.data_bittiming_const = &ifi_canfd_bittiming_const;
1005+
priv->can.do_set_mode = ifi_canfd_set_mode;
1006+
priv->can.do_get_berr_counter = ifi_canfd_get_berr_counter;
10071007

10081008
/* IFI CANFD can do both Bosch FD and ISO FD */
10091009
priv->can.ctrlmode = CAN_CTRLMODE_FD;

drivers/net/can/kvaser_pciefd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -856,7 +856,7 @@ static int kvaser_pciefd_set_bittiming(struct kvaser_pciefd_can *can, bool data)
856856
struct can_bittiming *bt;
857857

858858
if (data)
859-
bt = &can->can.data_bittiming;
859+
bt = &can->can.fd.data_bittiming;
860860
else
861861
bt = &can->can.bittiming;
862862

@@ -991,9 +991,9 @@ static int kvaser_pciefd_setup_can_ctrls(struct kvaser_pciefd *pcie)
991991
spin_lock_init(&can->lock);
992992

993993
can->can.bittiming_const = &kvaser_pciefd_bittiming_const;
994-
can->can.data_bittiming_const = &kvaser_pciefd_bittiming_const;
994+
can->can.fd.data_bittiming_const = &kvaser_pciefd_bittiming_const;
995995
can->can.do_set_bittiming = kvaser_pciefd_set_nominal_bittiming;
996-
can->can.do_set_data_bittiming = kvaser_pciefd_set_data_bittiming;
996+
can->can.fd.do_set_data_bittiming = kvaser_pciefd_set_data_bittiming;
997997
can->can.do_set_mode = kvaser_pciefd_set_mode;
998998
can->can.do_get_berr_counter = kvaser_pciefd_get_berr_counter;
999999
can->can.ctrlmode_supported = CAN_CTRLMODE_LISTENONLY |

drivers/net/can/m_can/m_can.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1372,7 +1372,7 @@ static int m_can_set_bittiming(struct net_device *dev)
13721372
{
13731373
struct m_can_classdev *cdev = netdev_priv(dev);
13741374
const struct can_bittiming *bt = &cdev->can.bittiming;
1375-
const struct can_bittiming *dbt = &cdev->can.data_bittiming;
1375+
const struct can_bittiming *dbt = &cdev->can.fd.data_bittiming;
13761376
u16 brp, sjw, tseg1, tseg2;
13771377
u32 reg_btp;
13781378

@@ -1738,21 +1738,21 @@ static int m_can_dev_setup(struct m_can_classdev *cdev)
17381738
if (err)
17391739
return err;
17401740
cdev->can.bittiming_const = &m_can_bittiming_const_30X;
1741-
cdev->can.data_bittiming_const = &m_can_data_bittiming_const_30X;
1741+
cdev->can.fd.data_bittiming_const = &m_can_data_bittiming_const_30X;
17421742
break;
17431743
case 31:
17441744
/* CAN_CTRLMODE_FD_NON_ISO is fixed with M_CAN IP v3.1.x */
17451745
err = can_set_static_ctrlmode(dev, CAN_CTRLMODE_FD_NON_ISO);
17461746
if (err)
17471747
return err;
17481748
cdev->can.bittiming_const = &m_can_bittiming_const_31X;
1749-
cdev->can.data_bittiming_const = &m_can_data_bittiming_const_31X;
1749+
cdev->can.fd.data_bittiming_const = &m_can_data_bittiming_const_31X;
17501750
break;
17511751
case 32:
17521752
case 33:
17531753
/* Support both MCAN version v3.2.x and v3.3.0 */
17541754
cdev->can.bittiming_const = &m_can_bittiming_const_31X;
1755-
cdev->can.data_bittiming_const = &m_can_data_bittiming_const_31X;
1755+
cdev->can.fd.data_bittiming_const = &m_can_data_bittiming_const_31X;
17561756

17571757
niso = m_can_niso_supported(cdev);
17581758
if (niso < 0)

drivers/net/can/peak_canfd/peak_canfd.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -624,7 +624,7 @@ static int peak_canfd_set_data_bittiming(struct net_device *ndev)
624624
{
625625
struct peak_canfd_priv *priv = netdev_priv(ndev);
626626

627-
return pucan_set_timing_fast(priv, &priv->can.data_bittiming);
627+
return pucan_set_timing_fast(priv, &priv->can.fd.data_bittiming);
628628
}
629629

630630
static int peak_canfd_close(struct net_device *ndev)
@@ -813,12 +813,12 @@ struct net_device *alloc_peak_canfd_dev(int sizeof_priv, int index,
813813
/* complete now socket-can initialization side */
814814
priv->can.state = CAN_STATE_STOPPED;
815815
priv->can.bittiming_const = &peak_canfd_nominal_const;
816-
priv->can.data_bittiming_const = &peak_canfd_data_const;
816+
priv->can.fd.data_bittiming_const = &peak_canfd_data_const;
817817

818818
priv->can.do_set_mode = peak_canfd_set_mode;
819819
priv->can.do_get_berr_counter = peak_canfd_get_berr_counter;
820820
priv->can.do_set_bittiming = peak_canfd_set_bittiming;
821-
priv->can.do_set_data_bittiming = peak_canfd_set_data_bittiming;
821+
priv->can.fd.do_set_data_bittiming = peak_canfd_set_data_bittiming;
822822
priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK |
823823
CAN_CTRLMODE_LISTENONLY |
824824
CAN_CTRLMODE_3_SAMPLES |

0 commit comments

Comments
 (0)