Re: [PATCH v8 4/7] can: Add Nuvoton NCT6694 CANFD support
From: Ming Yu <hidden>
Date: 2025-03-28 08:57:58
Also in:
linux-can, linux-gpio, linux-hwmon, linux-i2c, linux-rtc, linux-usb, linux-watchdog, lkml
Marc Kleine-Budde [off-list ref] 於 2025年3月28日 週五 下午3:22寫道:
quoted
quoted
quoted
quoted
quoted
quoted
quoted
quoted
quoted
+ priv->can.clock.freq = can_clk; + priv->can.bittiming_const = &nct6694_can_bittiming_nominal_const; + priv->can.data_bittiming_const = &nct6694_can_bittiming_data_const; + priv->can.do_set_mode = nct6694_can_set_mode; + priv->can.do_get_berr_counter = nct6694_can_get_berr_counter; + priv->can.ctrlmode_supported = CAN_CTRLMODE_LOOPBACK | + CAN_CTRLMODE_LISTENONLY | CAN_CTRLMODE_BERR_REPORTING | + CAN_CTRLMODE_FD | CAN_CTRLMODE_FD_NON_ISO;Does your device run in CAN-FD mode all the time? If so, please use can_set_static_ctrlmode() to set it after priv->can.ctrlmode_supported and remove CAN_CTRLMODE_FD from ctrlmode_supported.Our device is designed to allow users to dynamically switch between Classical CAN and CAN-FD mode via ip link set ... fd on/off. Therefore, CAN_CTRLMODE_FD needs to remain in ctrlmode_supported, and can_set_static_ctrlmode() is not suitable in this case. Please let me know if you have any concerns about this approach.Where do you evaluate if the user has configured CAN_CTRLMODE_FD or not?Sorry, I was previously confused about our device's control mode. I will use can_set_static_ctrlmode() to set CAN_FD mode in the next patch.Does your device support CAN-CC only mode? Does your device support to switch between CAN-CC only and CAN-FD mode?Our device supports both CAN-CC and CAN-FD mode.This doesn't answer my question: Does your device support CAN-CC only mode?It can dynamically switch between CAN-CC and CAN-FD mode when trasmitting or receiving, depending on whether the nct6694_can_frame passs the flag with NCT6694_CAN_FRAME_FLAG_FD.Ok, but what about the receive path? Does the device support CAN-CC only mode? Will it throw an error, if it receives a CAN-FD frame?
No, it can receive both CAN-CC and CAN-FD frames, if the hardware receives a CAN-FD frame, the firmware will set the NCT6694_CAN_FRAME_FLAG_FD flag.