Tag current CAN FD controllers as non-ISO
Subsystems (2)
PATCH 1/1 Tag current CAN FD controllers as non-ISO
During the CAN FD standardization process within the ISO it turned out that the failure detection capability has to be improved.
The CAN in Automation organization (CiA) defined the already implemented CAN FD controllers as 'non-ISO' and the upcoming improved CAN FD controllers as 'ISO' compliant. See at http://www.can-cia.com/index.php?id=1937
Finally there will be three types of CAN FD controllers in the future:
1. ISO compliant (fixed)
2. non-ISO compliant (fixed, like the M_CAN IP v3.0.1 in m_can.c)
3. ISO/non-ISO CAN FD controllers (switchable, like the PEAK USB FD)
So the current M_CAN driver for the M_CAN IP v3.0.1 has to expose its non-ISO implementation by setting the CAN_CTRLMODE_FD_NON_ISO ctrlmode at startup. As this bit cannot be switched at configuration time CAN_CTRLMODE_FD_NON_ISO must not be set in ctrlmode_supported of the current M_CAN driver.
---
drivers/net/can/m_can/m_can.c +5 -0
@@ -955,6 +955,11 @@ static struct net_device *alloc_m_can_dev(void) priv->can.data_bittiming_const = &m_can_data_bittiming_const; priv->can.do_set_mode = m_can_set_mode; priv->can.do_get_berr_counter = m_can_get_berr_counter; + +/* CAN_CTRLMODE_FD_NON_ISO is fixed with M_CAN IP v3.0.1 */ + priv->can.ctrlmode =CAN_CTRLMODE_FD_NON_ISO ; + +/* CAN_CTRLMODE_FD_NON_ISO can not be changed with M_CAN IP v3.0.1 */ priv->can.ctrlmode_supported =CAN_CTRLMODE_LOOPBACK |CAN_CTRLMODE_LISTENONLY | CAN_CTRLMODE_BERR_REPORTING |
include/uapi/linux/can/netlink.h +1 -0
@@ -98,6 +98,7 @@ struct can_ctrlmode {#define CAN_CTRLMODE_BERR_REPORTING 0x10/* Bus-error reporting */ #define CAN_CTRLMODE_FD 0x20/* CAN FD mode */ #define CAN_CTRLMODE_PRESUME_ACK 0x40/* Ignore missing CAN ACKs */ +#define CAN_CTRLMODE_FD_NON_ISO 0x80/* CAN FD in non-ISO mode */ /* * CAN device statistics
Quoted 13 lines · Oliver Hartkopp
During the CAN FD standardization process within the ISO it turned out that the failure detection capability has to be improved.
The CAN in Automation organization (CiA) defined the already implemented CAN FD controllers as 'non-ISO' and the upcoming improved CAN FD controllers as 'ISO' compliant. See at http://www.can-cia.com/index.php?id=1937
Finally there will be three types of CAN FD controllers in the future:
1. ISO compliant (fixed)
2. non-ISO compliant (fixed, like theM_CANIP v3.0.1 inm_can.c)
3. ISO/non-ISO CAN FD controllers (switchable, like the PEAK USB FD)
Quoted 6 lines
So the current
M_CANdriver for theM_CANIP v3.0.1 has to expose its non-ISO implementation by setting theCAN_CTRLMODE_FD_NON_ISOctrlmode at startup. As this bit cannot be switched at configuration timeCAN_CTRLMODE_FD_NON_ISOmust not be set inctrlmode_supportedof the currentM_CANdriver.Signed-off-by Oliver Hartkopp <[email protected]>
Applied to can/master and added stable on Cc.
thanks,
Marc
Signature · 4 lines
Pengutronix e.K. | Marc Kleine-Budde | Industrial Linux Solutions | Phone: +49-231-2826-924 | Vertretung West/Dortmund | Fax: +49-5121-206917-5555 | Amtsgericht Hildesheim, HRA 2686 | http://www.pengutronix.de |