drivers: can: sam0: use bosch m_can timing parameter initializers
The minimum/maximum CAN timing parameters for the Atmel SAM0 CAN driver uses the wrong values for the minimum, nominal phase segment values. The same goes for the maximum, nominal SJW value. Using the static initializers fixes these and aligns them to the Bosch M_CAN manual. The Atmel SAM C20/C21 family data sheet contains contradicting limits for these register values. Fixes: #58429 Signed-off-by: Henrik Brix Andersen <hebad@vestas.com>
This commit is contained in:
parent
6d2a42c21e
commit
56b90e3f63
1 changed files with 4 additions and 28 deletions
|
@ -164,36 +164,12 @@ static const struct can_driver_api can_sam0_driver_api = {
|
|||
.get_max_filters = can_mcan_get_max_filters,
|
||||
.get_max_bitrate = can_mcan_get_max_bitrate,
|
||||
.set_state_change_callback = can_mcan_set_state_change_callback,
|
||||
.timing_min = {
|
||||
.sjw = 0x1,
|
||||
.prop_seg = 0x00,
|
||||
.phase_seg1 = 0x01,
|
||||
.phase_seg2 = 0x01,
|
||||
.prescaler = 0x01
|
||||
},
|
||||
.timing_max = {
|
||||
.sjw = 0x7f,
|
||||
.prop_seg = 0x00,
|
||||
.phase_seg1 = 0x100,
|
||||
.phase_seg2 = 0x80,
|
||||
.prescaler = 0x200
|
||||
},
|
||||
.timing_min = CAN_MCAN_TIMING_MIN_INITIALIZER,
|
||||
.timing_max = CAN_MCAN_TIMING_MAX_INITIALIZER,
|
||||
#ifdef CONFIG_CAN_FD_MODE
|
||||
.set_timing_data = can_mcan_set_timing_data,
|
||||
.timing_data_min = {
|
||||
.sjw = 0x01,
|
||||
.prop_seg = 0x00,
|
||||
.phase_seg1 = 0x01,
|
||||
.phase_seg2 = 0x01,
|
||||
.prescaler = 0x01
|
||||
},
|
||||
.timing_data_max = {
|
||||
.sjw = 0x10,
|
||||
.prop_seg = 0x00,
|
||||
.phase_seg1 = 0x20,
|
||||
.phase_seg2 = 0x10,
|
||||
.prescaler = 0x20
|
||||
}
|
||||
.timing_data_min = CAN_MCAN_TIMING_DATA_MIN_INITIALIZER,
|
||||
.timing_data_max = CAN_MCAN_TIMING_DATA_MAX_INITIALIZER,
|
||||
#endif /* CONFIG_CAN_FD_MODE */
|
||||
};
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue