From 825d4baf9043e3f59055449483588b1832c084f2 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 12 Mar 2025 01:03:23 -0400 Subject: [PATCH] stepper: Support disabling optimized "step on both edges" in "make menuconfig" Add a new "low level option" to allow users to configure if they want to optimize for Trinamic drivers or traditional stepper motor drivers. Signed-off-by: Kevin O'Connor --- src/Kconfig | 31 +++++++++++++++++++++++-------- src/stepper.c | 2 +- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git a/src/Kconfig b/src/Kconfig index 0e4ea1c50..e1ecbdf9b 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -201,6 +201,29 @@ config CANBUS_FILTER bool default y if CANSERIAL +# Stepper optimizations +config INLINE_STEPPER_HACK + # Enables gcc to inline stepper_event() into the main timer irq handler + bool + depends on HAVE_GPIO + default y +config HAVE_STEPPER_OPTIMIZED_BOTH_EDGE + bool +config WANT_STEPPER_OPTIMIZED_BOTH_EDGE + bool "Optimize stepper code for 'step on both edges'" if LOW_LEVEL_OPTIONS + depends on INLINE_STEPPER_HACK && HAVE_STEPPER_OPTIMIZED_BOTH_EDGE + default y + help + Optimize the stepper code for Trinamic stepper motor drivers + that are configured in UART or SPI mode (and thus can perform + a step on both "edges" of the step pin). Enabling this option + typically improves the stepper cpu performance by about 20% + when using these drivers. If this option is disabled the code + will instead deploy optimizations that improve the cpu + performance by about 20% for traditional drivers (those that + take a step only on the "rising" or "falling" level of the + step pin). + # Support setting gpio state at startup config INITIAL_PINS string "GPIO pins to set at micro-controller startup" @@ -229,15 +252,7 @@ config HAVE_STRICT_TIMING bool config HAVE_CHIPID bool -config HAVE_STEPPER_OPTIMIZED_BOTH_EDGE - bool config HAVE_BOOTLOADER_REQUEST bool config HAVE_LIMITED_CODE_SIZE bool - -config INLINE_STEPPER_HACK - # Enables gcc to inline stepper_event() into the main timer irq handler - bool - depends on HAVE_GPIO - default y diff --git a/src/stepper.c b/src/stepper.c index f6f798c66..95c9a2f2f 100644 --- a/src/stepper.c +++ b/src/stepper.c @@ -16,7 +16,7 @@ DECL_CONSTANT("STEPPER_STEP_BOTH_EDGE", 1); -#if CONFIG_INLINE_STEPPER_HACK && CONFIG_HAVE_STEPPER_OPTIMIZED_BOTH_EDGE +#if CONFIG_INLINE_STEPPER_HACK && CONFIG_WANT_STEPPER_OPTIMIZED_BOTH_EDGE #define HAVE_OPTIMIZED_PATH 1 #define HAVE_EDGE_OPTIMIZATION 1 #define HAVE_AVR_OPTIMIZATION 0