Skip to content

Commit ea768b2

Browse files
tq-schiffermmarckleinebudde
authored andcommitted
Revert "can: m_can: remove support for custom bit timing"
The timing limits specified by the Elkhart Lake CPU datasheets do not match the defaults. Let's reintroduce the support for custom bit timings. This reverts commit 0ddd83f. Link: https://lore.kernel.org/all/00c9e2596b1a548906921a574d4ef7a03c0dace0.1636967198.git.matthias.schiffer@ew.tq-group.com Signed-off-by: Matthias Schiffer <[email protected]> Signed-off-by: Marc Kleine-Budde <[email protected]>
1 parent 8c03b8b commit ea768b2

File tree

2 files changed

+21
-6
lines changed

2 files changed

+21
-6
lines changed

drivers/net/can/m_can/m_can.c

+18-6
Original file line numberDiff line numberDiff line change
@@ -1494,20 +1494,32 @@ static int m_can_dev_setup(struct m_can_classdev *cdev)
14941494
case 30:
14951495
/* CAN_CTRLMODE_FD_NON_ISO is fixed with M_CAN IP v3.0.x */
14961496
can_set_static_ctrlmode(dev, CAN_CTRLMODE_FD_NON_ISO);
1497-
cdev->can.bittiming_const = &m_can_bittiming_const_30X;
1498-
cdev->can.data_bittiming_const = &m_can_data_bittiming_const_30X;
1497+
cdev->can.bittiming_const = cdev->bit_timing ?
1498+
cdev->bit_timing : &m_can_bittiming_const_30X;
1499+
1500+
cdev->can.data_bittiming_const = cdev->data_timing ?
1501+
cdev->data_timing :
1502+
&m_can_data_bittiming_const_30X;
14991503
break;
15001504
case 31:
15011505
/* CAN_CTRLMODE_FD_NON_ISO is fixed with M_CAN IP v3.1.x */
15021506
can_set_static_ctrlmode(dev, CAN_CTRLMODE_FD_NON_ISO);
1503-
cdev->can.bittiming_const = &m_can_bittiming_const_31X;
1504-
cdev->can.data_bittiming_const = &m_can_data_bittiming_const_31X;
1507+
cdev->can.bittiming_const = cdev->bit_timing ?
1508+
cdev->bit_timing : &m_can_bittiming_const_31X;
1509+
1510+
cdev->can.data_bittiming_const = cdev->data_timing ?
1511+
cdev->data_timing :
1512+
&m_can_data_bittiming_const_31X;
15051513
break;
15061514
case 32:
15071515
case 33:
15081516
/* Support both MCAN version v3.2.x and v3.3.0 */
1509-
cdev->can.bittiming_const = &m_can_bittiming_const_31X;
1510-
cdev->can.data_bittiming_const = &m_can_data_bittiming_const_31X;
1517+
cdev->can.bittiming_const = cdev->bit_timing ?
1518+
cdev->bit_timing : &m_can_bittiming_const_31X;
1519+
1520+
cdev->can.data_bittiming_const = cdev->data_timing ?
1521+
cdev->data_timing :
1522+
&m_can_data_bittiming_const_31X;
15111523

15121524
cdev->can.ctrlmode_supported |=
15131525
(m_can_niso_supported(cdev) ?

drivers/net/can/m_can/m_can.h

+3
Original file line numberDiff line numberDiff line change
@@ -85,6 +85,9 @@ struct m_can_classdev {
8585
struct sk_buff *tx_skb;
8686
struct phy *transceiver;
8787

88+
struct can_bittiming_const *bit_timing;
89+
struct can_bittiming_const *data_timing;
90+
8891
struct m_can_ops *ops;
8992

9093
int version;

0 commit comments

Comments
 (0)