Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

STM32N6: add CAN support #85554

Merged
merged 3 commits into from
Feb 13, 2025
Merged

Conversation

gautierg-st
Copy link
Contributor

Add CAN support for STM32N6. Enable CAN on STM32N6570-DK and Nucleo N657X0, and add CAN test overlays for these two boards.

@gautierg-st
Copy link
Contributor Author

Test result of stm32n6570_dk//sb tests/drivers/can/api/

*** Booting Zephyr OS build v4.0.0-4947-g6ea543d0ddb9 ***
Running TESTSUITE can_classic
===================================================================
START - test_add_filter
 PASS - test_add_filter in 0.001 seconds
===================================================================
START - test_add_filter_without_callback
 PASS - test_add_filter_without_callback in 0.001 seconds
===================================================================
START - test_add_invalid_ext_filter
E: invalid filter with extended (29-bit) CAN ID 0x1fffffff, CAN ID mask 0x20000000
E: invalid filter with extended (29-bit) CAN ID 0x20000000, CAN ID mask 0x1fffffff
 PASS - test_add_invalid_ext_filter in 0.015 seconds
===================================================================
START - test_add_invalid_null_filter
 PASS - test_add_invalid_null_filter in 0.001 seconds
===================================================================
START - test_add_invalid_std_filter
E: invalid filter with standard (11-bit) CAN ID 0x7ff, CAN ID mask 0x800
E: invalid filter with standard (11-bit) CAN ID 0x800, CAN ID mask 0x7ff
 PASS - test_add_invalid_std_filter in 0.013 seconds
===================================================================
START - test_bitrate_limits
 PASS - test_bitrate_limits in 0.001 seconds
===================================================================
START - test_classic_get_capabilities
 PASS - test_classic_get_capabilities in 0.001 seconds
===================================================================
START - test_filters_added_while_stopped
 PASS - test_filters_added_while_stopped in 0.002 seconds
===================================================================
START - test_filters_preserved_through_bitrate_change
 PASS - test_filters_preserved_through_bitrate_change in 0.003 seconds
===================================================================
START - test_filters_preserved_through_mode_change
 PASS - test_filters_preserved_through_mode_change in 0.003 seconds
===================================================================
START - test_get_core_clock
 PASS - test_get_core_clock in 0.001 seconds
===================================================================
START - test_get_state
 PASS - test_get_state in 0.001 seconds
===================================================================
START - test_invalid_sample_point
 PASS - test_invalid_sample_point in 0.001 seconds
===================================================================
START - test_max_ext_filters
W: No free extended id filter left
 PASS - test_max_ext_filters in 0.004 seconds
===================================================================
START - test_max_std_filters
W: No free standard id filter left
 PASS - test_max_std_filters in 0.004 seconds
===================================================================
START - test_receive_timeout
 PASS - test_receive_timeout in 0.101 seconds
===================================================================
START - test_recover
 PASS - test_recover in 0.001 seconds
===================================================================
START - test_recover_while_stopped
 PASS - test_recover_while_stopped in 0.001 seconds
===================================================================
START - test_reject_ext_id_rtr
 PASS - test_reject_ext_id_rtr in 0.101 seconds
===================================================================
START - test_reject_std_id_rtr
 PASS - test_reject_std_id_rtr in 0.101 seconds
===================================================================
START - test_send_and_forget
 PASS - test_send_and_forget in 0.001 seconds
===================================================================
START - test_send_callback
 PASS - test_send_callback in 0.001 seconds
===================================================================
START - test_send_ext_id_dlc_of_range
E: DLC of 9 for non-FD format frame
 PASS - test_send_ext_id_dlc_of_range in 0.004 seconds
===================================================================
START - test_send_ext_id_out_of_range
E: invalid frame with extended (29-bit) CAN ID 0x20000000
 PASS - test_send_ext_id_out_of_range in 0.006 seconds
===================================================================
START - test_send_fd_format
E: CAN FD format not supported in non-FD mode
 PASS - test_send_fd_format in 0.005 seconds
===================================================================
START - test_send_invalid_dlc
E: DLC of 9 for non-FD format frame
 PASS - test_send_invalid_dlc in 0.004 seconds
===================================================================
START - test_send_null_frame
 PASS - test_send_null_frame in 0.001 seconds
===================================================================
START - test_send_receive_ext_id
 PASS - test_send_receive_ext_id in 0.004 seconds
===================================================================
START - test_send_receive_ext_id_masked
 PASS - test_send_receive_ext_id_masked in 0.004 seconds
===================================================================
START - test_send_receive_ext_id_rtr
 SKIP - test_send_receive_ext_id_rtr in 0.001 seconds
===================================================================
START - test_send_receive_msgq
 PASS - test_send_receive_msgq in 0.010 seconds
===================================================================
START - test_send_receive_std_id
 PASS - test_send_receive_std_id in 0.003 seconds
===================================================================
START - test_send_receive_std_id_masked
 PASS - test_send_receive_std_id_masked in 0.003 seconds
===================================================================
START - test_send_receive_std_id_no_data
 PASS - test_send_receive_std_id_no_data in 0.001 seconds
===================================================================
START - test_send_receive_std_id_rtr
 SKIP - test_send_receive_std_id_rtr in 0.001 seconds
===================================================================
START - test_send_receive_wrong_id
 PASS - test_send_receive_wrong_id in 0.102 seconds
===================================================================
START - test_send_std_id_dlc_of_range
E: DLC of 9 for non-FD format frame
 PASS - test_send_std_id_dlc_of_range in 0.004 seconds
===================================================================
START - test_send_std_id_out_of_range
E: invalid frame with standard (11-bit) CAN ID 0x800
 PASS - test_send_std_id_out_of_range in 0.005 seconds
===================================================================
START - test_send_while_stopped
 PASS - test_send_while_stopped in 0.001 seconds
===================================================================
START - test_set_bitrate
 PASS - test_set_bitrate in 0.001 seconds
===================================================================
START - test_set_bitrate_too_high
 PASS - test_set_bitrate_too_high in 0.001 seconds
===================================================================
START - test_set_bitrate_too_low
 SKIP - test_set_bitrate_too_low in 0.001 seconds
===================================================================
START - test_set_bitrate_while_started
 PASS - test_set_bitrate_while_started in 0.001 seconds
===================================================================
START - test_set_mode_while_started
 PASS - test_set_mode_while_started in 0.001 seconds
===================================================================
START - test_set_state_change_callback
 PASS - test_set_state_change_callback in 0.001 seconds
===================================================================
START - test_set_timing_max
 PASS - test_set_timing_max in 0.001 seconds
===================================================================
START - test_set_timing_min
 PASS - test_set_timing_min in 0.001 seconds
===================================================================
START - test_set_timing_while_started
 PASS - test_set_timing_while_started in 0.001 seconds
===================================================================
START - test_start_while_started
 PASS - test_start_while_started in 0.001 seconds
===================================================================
START - test_stop_while_stopped
 PASS - test_stop_while_stopped in 0.001 seconds
===================================================================
TESTSUITE can_classic succeeded
Running TESTSUITE can_stats
===================================================================
START - test_can_stats_accessors
 PASS - test_can_stats_accessors in 0.001 seconds
===================================================================
TESTSUITE can_stats succeeded
CAN transceiver device not readyRunning TESTSUITE can_utilities
===================================================================
START - test_can_bytes_to_dlc
 PASS - test_can_bytes_to_dlc in 0.001 seconds
===================================================================
START - test_can_dlc_to_bytes
 PASS - test_can_dlc_to_bytes in 0.001 seconds
===================================================================
START - test_can_frame_matches_filter
 PASS - test_can_frame_matches_filter in 0.001 seconds
===================================================================
TESTSUITE can_utilities succeeded
Running TESTSUITE canfd
===================================================================
START - test_canfd_get_capabilities
 PASS - test_canfd_get_capabilities in 0.001 seconds
===================================================================
START - test_filters_preserved_through_classic_to_fd_mode_change
 PASS - test_filters_preserved_through_classic_to_fd_mode_change in 0.004 seconds
===================================================================
START - test_filters_preserved_through_fd_to_classic_mode_change
 PASS - test_filters_preserved_through_fd_to_classic_mode_change in 0.004 seconds
===================================================================
START - test_invalid_sample_point
 PASS - test_invalid_sample_point in 0.001 seconds
===================================================================
START - test_send_fd_dlc_out_of_range
E: DLC of 16 for CAN FD format frame
 PASS - test_send_fd_dlc_out_of_range in 0.004 seconds
===================================================================
START - test_send_fd_incorrect_esi
E: unsupported CAN frame flags 0x14
 PASS - test_send_fd_incorrect_esi in 0.004 seconds
===================================================================
START - test_send_receive_classic
 PASS - test_send_receive_classic in 0.003 seconds
===================================================================
START - test_send_receive_fd
 PASS - test_send_receive_fd in 0.003 seconds
===================================================================
START - test_send_receive_mixed
 PASS - test_send_receive_mixed in 0.003 seconds
===================================================================
START - test_set_bitrate_data_too_low
 SKIP - test_set_bitrate_data_too_low in 0.001 seconds
===================================================================
START - test_set_bitrate_data_while_started
 PASS - test_set_bitrate_data_while_started in 0.001 seconds
===================================================================
START - test_set_bitrate_too_high
 PASS - test_set_bitrate_too_high in 0.001 seconds
===================================================================
START - test_set_timing_data_max
 PASS - test_set_timing_data_max in 0.001 seconds
===================================================================
START - test_set_timing_data_min
 PASS - test_set_timing_data_min in 0.001 seconds
===================================================================
START - test_set_timing_data_while_started
 PASS - test_set_timing_data_while_started in 0.001 seconds
===================================================================
TESTSUITE canfd succeeded

------ TESTSUITE SUMMARY START ------

SUITE PASS - 100.00% [can_classic]: pass = 47, fail = 0, skip = 3, total = 50 duration = 0.529 seconds
 - PASS - [can_classic.test_add_filter] duration = 0.001 seconds
 - PASS - [can_classic.test_add_filter_without_callback] duration = 0.001 seconds
 - PASS - [can_classic.test_add_invalid_ext_filter] duration = 0.015 seconds
 - PASS - [can_classic.test_add_invalid_null_filter] duration = 0.001 seconds
 - PASS - [can_classic.test_add_invalid_std_filter] duration = 0.013 seconds
 - PASS - [can_classic.test_bitrate_limits] duration = 0.001 seconds
 - PASS - [can_classic.test_classic_get_capabilities] duration = 0.001 seconds
 - PASS - [can_classic.test_filters_added_while_stopped] duration = 0.002 seconds
 - PASS - [can_classic.test_filters_preserved_through_bitrate_change] duration = 0.003 seconds
 - PASS - [can_classic.test_filters_preserved_through_mode_change] duration = 0.003 seconds
 - PASS - [can_classic.test_get_core_clock] duration = 0.001 seconds
 - PASS - [can_classic.test_get_state] duration = 0.001 seconds
 - PASS - [can_classic.test_invalid_sample_point] duration = 0.001 seconds
 - PASS - [can_classic.test_max_ext_filters] duration = 0.004 seconds
 - PASS - [can_classic.test_max_std_filters] duration = 0.004 seconds
 - PASS - [can_classic.test_receive_timeout] duration = 0.101 seconds
 - PASS - [can_classic.test_recover] duration = 0.001 seconds
 - PASS - [can_classic.test_recover_while_stopped] duration = 0.001 seconds
 - PASS - [can_classic.test_reject_ext_id_rtr] duration = 0.101 seconds
 - PASS - [can_classic.test_reject_std_id_rtr] duration = 0.101 seconds
 - PASS - [can_classic.test_send_and_forget] duration = 0.001 seconds
 - PASS - [can_classic.test_send_callback] duration = 0.001 seconds
 - PASS - [can_classic.test_send_ext_id_dlc_of_range] duration = 0.004 seconds
 - PASS - [can_classic.test_send_ext_id_out_of_range] duration = 0.006 seconds
 - PASS - [can_classic.test_send_fd_format] duration = 0.005 seconds
 - PASS - [can_classic.test_send_invalid_dlc] duration = 0.004 seconds
 - PASS - [can_classic.test_send_null_frame] duration = 0.001 seconds
 - PASS - [can_classic.test_send_receive_ext_id] duration = 0.004 seconds
 - PASS - [can_classic.test_send_receive_ext_id_masked] duration = 0.004 seconds
 - SKIP - [can_classic.test_send_receive_ext_id_rtr] duration = 0.001 seconds
 - PASS - [can_classic.test_send_receive_msgq] duration = 0.010 seconds
 - PASS - [can_classic.test_send_receive_std_id] duration = 0.003 seconds
 - PASS - [can_classic.test_send_receive_std_id_masked] duration = 0.003 seconds
 - PASS - [can_classic.test_send_receive_std_id_no_data] duration = 0.001 seconds
 - SKIP - [can_classic.test_send_receive_std_id_rtr] duration = 0.001 seconds
 - PASS - [can_classic.test_send_receive_wrong_id] duration = 0.102 seconds
 - PASS - [can_classic.test_send_std_id_dlc_of_range] duration = 0.004 seconds
 - PASS - [can_classic.test_send_std_id_out_of_range] duration = 0.005 seconds
 - PASS - [can_classic.test_send_while_stopped] duration = 0.001 seconds
 - PASS - [can_classic.test_set_bitrate] duration = 0.001 seconds
 - PASS - [can_classic.test_set_bitrate_too_high] duration = 0.001 seconds
 - SKIP - [can_classic.test_set_bitrate_too_low] duration = 0.001 seconds
 - PASS - [can_classic.test_set_bitrate_while_started] duration = 0.001 seconds
 - PASS - [can_classic.test_set_mode_while_started] duration = 0.001 seconds
 - PASS - [can_classic.test_set_state_change_callback] duration = 0.001 seconds
 - PASS - [can_classic.test_set_timing_max] duration = 0.001 seconds
 - PASS - [can_classic.test_set_timing_min] duration = 0.001 seconds
 - PASS - [can_classic.test_set_timing_while_started] duration = 0.001 seconds
 - PASS - [can_classic.test_start_while_started] duration = 0.001 seconds
 - PASS - [can_classic.test_stop_while_stopped] duration = 0.001 seconds

SUITE PASS - 100.00% [can_stats]: pass = 1, fail = 0, skip = 0, total = 1 duration = 0.001 seconds
 - PASS - [can_stats.test_can_stats_accessors] duration = 0.001 seconds

SUITE SKIP -   0.00% [can_transceiver]: pass = 0, fail = 0, skip = 1, total = 1 duration = 0.000 seconds
 - SKIP - [can_transceiver.test_get_transceiver] duration = 0.000 seconds

SUITE PASS - 100.00% [can_utilities]: pass = 3, fail = 0, skip = 0, total = 3 duration = 0.003 seconds
 - PASS - [can_utilities.test_can_bytes_to_dlc] duration = 0.001 seconds
 - PASS - [can_utilities.test_can_dlc_to_bytes] duration = 0.001 seconds
 - PASS - [can_utilities.test_can_frame_matches_filter] duration = 0.001 seconds

SUITE PASS - 100.00% [canfd]: pass = 14, fail = 0, skip = 1, total = 15 duration = 0.033 seconds
 - PASS - [canfd.test_canfd_get_capabilities] duration = 0.001 seconds
 - PASS - [canfd.test_filters_preserved_through_classic_to_fd_mode_change] duration = 0.004 seconds
 - PASS - [canfd.test_filters_preserved_through_fd_to_classic_mode_change] duration = 0.004 seconds
 - PASS - [canfd.test_invalid_sample_point] duration = 0.001 seconds
 - PASS - [canfd.test_send_fd_dlc_out_of_range] duration = 0.004 seconds
 - PASS - [canfd.test_send_fd_incorrect_esi] duration = 0.004 seconds
 - PASS - [canfd.test_send_receive_classic] duration = 0.003 seconds
 - PASS - [canfd.test_send_receive_fd] duration = 0.003 seconds
 - PASS - [canfd.test_send_receive_mixed] duration = 0.003 seconds
 - SKIP - [canfd.test_set_bitrate_data_too_low] duration = 0.001 seconds
 - PASS - [canfd.test_set_bitrate_data_while_started] duration = 0.001 seconds
 - PASS - [canfd.test_set_bitrate_too_high] duration = 0.001 seconds
 - PASS - [canfd.test_set_timing_data_max] duration = 0.001 seconds
 - PASS - [canfd.test_set_timing_data_min] duration = 0.001 seconds
 - PASS - [canfd.test_set_timing_data_while_started] duration = 0.001 seconds

------ TESTSUITE SUMMARY END ------

===================================================================
PROJECT EXECUTION SUCCESSFUL

@gautierg-st
Copy link
Contributor Author

Test result of tests/drivers/can/timing/

*** Booting Zephyr OS build v4.0.0-4947-g6ea543d0ddb9 ***
Running TESTSUITE can_timing
===================================================================
testing on device can@5000a000 @ 64000000 Hz
Warning: CiA 601-3 recommends a CAN FD core clock of 20, 40, or 80 MHz for good node interoperability
START - test_timing
testing bitrate 10000, sample point 87.5%: sjw = 16, prop_seg = 0, phase_seg1 = 223, phase_seg2 = 32, prescaler = 25 OK, sample point error 0.0%
testing bitrate 20000, sample point 87.5%: sjw = 12, prop_seg = 0, phase_seg1 = 174, phase_seg2 = 25, prescaler = 16 OK, sample point error 0.0%
testing bitrate 50000, sample point 87.5%: sjw = 16, prop_seg = 0, phase_seg1 = 223, phase_seg2 = 32, prescaler = 5 OK, sample point error 0.0%
testing bitrate 125000, sample point 87.5%: sjw = 16, prop_seg = 0, phase_seg1 = 223, phase_seg2 = 32, prescaler = 2 OK, sample point error 0.0%
testing bitrate 250000, sample point 87.5%: sjw = 16, prop_seg = 0, phase_seg1 = 223, phase_seg2 = 32, prescaler = 1 OK, sample point error 0.0%
testing bitrate 500000, sample point 87.5%: sjw = 8, prop_seg = 0, phase_seg1 = 111, phase_seg2 = 16, prescaler = 1 OK, sample point error 0.0%
testing bitrate 800000, sample point 80.0%: sjw = 8, prop_seg = 0, phase_seg1 = 63, phase_seg2 = 16, prescaler = 1 OK, sample point error 0.0%
testing bitrate 1000000, sample point 75.0%: sjw = 8, prop_seg = 0, phase_seg1 = 47, phase_seg2 = 16, prescaler = 1 OK, sample point error 0.0%
 PASS - test_timing in 0.102 seconds
===================================================================
START - test_timing_data
testing bitrate 1000000, sample point 75.0%: sjw = 4, prop_seg = 0, phase_seg1 = 23, phase_seg2 = 8, prescaler = 2 OK, sample point error 0.0%
testing bitrate 2000000, sample point 75.0%: sjw = 4, prop_seg = 0, phase_seg1 = 23, phase_seg2 = 8, prescaler = 1 OK, sample point error 0.0%
testing bitrate 4000000, sample point 75.0%: sjw = 2, prop_seg = 0, phase_seg1 = 11, phase_seg2 = 4, prescaler = 1 OK, sample point error 0.0%
testing bitrate 5000000, sample point 75.0%: bitrate not supported
testing bitrate 8000000, sample point 75.0%: sjw = 1, prop_seg = 0, phase_seg1 = 5, phase_seg2 = 2, prescaler = 1 OK, sample point error 0.0%
 PASS - test_timing_data in 0.056 seconds
===================================================================
TESTSUITE can_timing succeeded

------ TESTSUITE SUMMARY START ------

SUITE PASS - 100.00% [can_timing]: pass = 2, fail = 0, skip = 0, total = 2 duration = 0.158 seconds
 - PASS - [can_timing.test_timing] duration = 0.102 seconds
 - PASS - [can_timing.test_timing_data] duration = 0.056 seconds

------ TESTSUITE SUMMARY END ------

===================================================================
PROJECT EXECUTION SUCCESSFUL

Copy link
Member

@henrikbrixandersen henrikbrixandersen left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Looks good, just one minor suggestion:

@@ -0,0 +1 @@
CONFIG_TEST_USERSPACE=n
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Does this SoC not support userspace? Or is it just a matter of available MPU regions (if so, take a look at CONFIG_TEST_USERSPACE_WITHOUT_HW_STACK_PROTECTION)?

Either way, I think this would be better to set this from the board files instead of directly in each test for scalability. The CAN tests can't be the only ones affected by this limitation?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

The problem lies with the MPU. On N6, the bootROM loads the application from external Flash into the RAM where it is executed. I suppose that, for userspace to work, the region in the RAM where the code lies should be configured as the Flash usually is, but I haven't looked at that for the moment.

I'll move CONFIG_TEST_USERSPACE=n in the board files.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Umm, in fact, I won't move the Kconfig to the board file. It gets overwritten by the prj.conf so the test fails...

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Oh. Right. 😞

Copy link
Collaborator

@str4t0m str4t0m left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't have a board, but had a quick pass on the pr.
Looks good, but I think you need to divide the 10K message RAM between the 3 instances.

dts/arm/st/n6/stm32n6.dtsi Outdated Show resolved Hide resolved
dts/arm/st/n6/stm32n6.dtsi Outdated Show resolved Hide resolved
dts/arm/st/n6/stm32n6.dtsi Outdated Show resolved Hide resolved
dts/arm/st/n6/stm32n6.dtsi Outdated Show resolved Hide resolved
@henrikbrixandersen
Copy link
Member

I don't have a board, but had a quick pass on the pr.

Looks good, but I think you need to divide the 10K message RAM between the 3 instances.

If so, this should only affect the offset, not the regs size.

@str4t0m
Copy link
Collaborator

str4t0m commented Feb 11, 2025

If so, this should only affect the offset, not the regs size.

Yeah it is looking somewhat wrong, but aren't stm32h7 using exactly that pattern?
Also, STM32MP153 in Linux.

Edit: repace downstream link with upstream link.

@gautierg-st
Copy link
Contributor Author

Looks good, but I think you need to divide the 10K message RAM between the 3 instances.

Device tree modified as per your suggestions.

@henrikbrixandersen
Copy link
Member

If so, this should only affect the offset, not the regs size.

Yeah it is looking somewhat wrong, but aren't stm32h7 using exactly that pattern? Also, STM32MP153 in Linux.

Edit: repace downstream link with upstream link.

You are right; I was confused for a second there.

The reason we modify the reg size is to allow for the verification of the size of the sum of the elements against the size of the allocated Message RAM minus the offset.

@@ -362,6 +362,39 @@
};
};

fdcan1: can@5000a000 {
compatible = "st,stm32h7-fdcan";
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Perhaps it's time to come up with a new compatible for this integration of the Bosch M_CAN? If any of you have any insight in what to name this, I am all ears. The "h7" name was chosen since it was the first family (Zephyr-wise) where this integration was supported.

Copy link
Collaborator

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

@henrikbrixandersen In Bosch M_CAN user manual on page 5: https://www.bosch-semiconductors.com/media/ip_modules/pdf_2/m_can/mcan_users_manual_v331.pdf register map is defined. Since a device follows this map "bosch,m-can" would be a good choise as you suggest.

str4t0m
str4t0m previously approved these changes Feb 13, 2025
@kartben
Copy link
Collaborator

kartben commented Feb 13, 2025

@gautierg-st needs a rebase - thx!

Add FDCAN support to STM32N6

Signed-off-by: Guillaume Gautier <[email protected]>
Enable FDCAN for Nucleo N657x0-Q and STM32N6570 DK boards.

Signed-off-by: Guillaume Gautier <[email protected]>
Add CAN test overlays for Nucleo N657x0-Q and STM32N6570 DK boards.
Userspace needs to be disabled for the tests to pass.

Signed-off-by: Guillaume Gautier <[email protected]>
@gautierg-st
Copy link
Contributor Author

Rebased to fix conflicts

@kartben kartben merged commit 5415e8e into zephyrproject-rtos:main Feb 13, 2025
22 checks passed
@gautierg-st gautierg-st deleted the n6_add_fdcan branch February 14, 2025 07:30
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
Projects
None yet
Development

Successfully merging this pull request may close these issues.

6 participants