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 <kevin@koconnor.net>
This commit is contained in:
Kevin O'Connor 2025-03-12 01:03:23 -04:00
parent 8faed8d9fe
commit 825d4baf90
2 changed files with 24 additions and 9 deletions

View File

@ -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

View File

@ -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