From b0fa36e221959ad88b005fca856adede82427321 Mon Sep 17 00:00:00 2001 From: Kevin O'Connor Date: Wed, 9 Apr 2025 12:12:19 -0400 Subject: [PATCH] Kconfig: Add new WANT_HARD_PWM option to reduce code size Make it possible to not compile in support for hardware pwm on chips with small flash sizes. Signed-off-by: Kevin O'Connor --- src/Kconfig | 7 +++++++ src/Makefile | 2 +- src/atsamd/Makefile | 2 +- src/avr/Makefile | 2 +- src/hc32f460/Makefile | 2 +- src/lpc176x/Makefile | 2 +- src/rp2040/Makefile | 2 +- src/stm32/Makefile | 2 +- 8 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/Kconfig b/src/Kconfig index a5cb3b06..f371ef91 100644 --- a/src/Kconfig +++ b/src/Kconfig @@ -88,6 +88,10 @@ config USB_SERIAL_NUMBER endmenu # Optional features that can be disabled (for devices with small flash sizes) +config WANT_HARD_PWM + bool + depends on HAVE_GPIO_HARD_PWM + default y config WANT_BUTTONS bool depends on HAVE_GPIO @@ -163,6 +167,9 @@ config NEED_SENSOR_BULK default y menu "Optional features (to reduce code size)" depends on HAVE_LIMITED_CODE_SIZE +config WANT_HARD_PWM + bool "Support hardware PWM (pulse width modulation)" + depends on HAVE_GPIO_HARD_PWM config WANT_BUTTONS bool "Support GPIO based button reading" depends on HAVE_GPIO diff --git a/src/Makefile b/src/Makefile index 7ff99193..04be1f9d 100644 --- a/src/Makefile +++ b/src/Makefile @@ -7,7 +7,7 @@ src-$(CONFIG_HAVE_GPIO_ADC) += adccmds.c src-$(CONFIG_HAVE_GPIO_SPI) += spicmds.c src-$(CONFIG_HAVE_GPIO_SDIO) += sdiocmds.c src-$(CONFIG_HAVE_GPIO_I2C) += i2ccmds.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += pwmcmds.c +src-$(CONFIG_WANT_HARD_PWM) += pwmcmds.c src-$(CONFIG_WANT_BUTTONS) += buttons.c src-$(CONFIG_WANT_TMCUART) += tmcuart.c diff --git a/src/atsamd/Makefile b/src/atsamd/Makefile index 8b9722b6..477d847e 100644 --- a/src/atsamd/Makefile +++ b/src/atsamd/Makefile @@ -31,7 +31,7 @@ src-$(CONFIG_HAVE_GPIO_ADC) += atsamd/adc.c src-$(CONFIG_HAVE_GPIO_I2C) += atsamd/i2c.c src-$(CONFIG_HAVE_GPIO_SPI) += atsamd/spi.c src-$(CONFIG_HAVE_SERCOM) += atsamd/sercom.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += atsamd/hard_pwm.c +src-$(CONFIG_WANT_HARD_PWM) += atsamd/hard_pwm.c src-$(CONFIG_MACH_SAMC21) += atsamd/samd51_watchdog.c src-$(CONFIG_MACH_SAMC21) += atsamd/samc21_clock.c atsamd/timer.c generic/timer_irq.c src-$(CONFIG_MACH_SAMD21) += atsamd/watchdog.c diff --git a/src/avr/Makefile b/src/avr/Makefile index db6d5461..699b70ff 100644 --- a/src/avr/Makefile +++ b/src/avr/Makefile @@ -14,7 +14,7 @@ src-$(CONFIG_HAVE_GPIO) += avr/gpio.c src-$(CONFIG_HAVE_GPIO_ADC) += avr/adc.c src-$(CONFIG_HAVE_GPIO_SPI) += avr/spi.c src-$(CONFIG_HAVE_GPIO_I2C) += avr/i2c.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += avr/hard_pwm.c +src-$(CONFIG_WANT_HARD_PWM) += avr/hard_pwm.c src-$(CONFIG_AVR_WATCHDOG) += avr/watchdog.c src-$(CONFIG_USBSERIAL) += avr/usbserial.c generic/usb_cdc.c src-$(CONFIG_SERIAL) += avr/serial.c generic/serial_irq.c diff --git a/src/hc32f460/Makefile b/src/hc32f460/Makefile index 85d2fa19..87973074 100644 --- a/src/hc32f460/Makefile +++ b/src/hc32f460/Makefile @@ -24,7 +24,7 @@ src-y += ../lib/hc32f460/driver/src/hc32f460_gpio.c src-y += ../lib/hc32f460/driver/src/hc32f460_pwc.c src-$(CONFIG_HAVE_GPIO_ADC) += hc32f460/adc.c ../lib/hc32f460/driver/src/hc32f460_adc.c src-$(CONFIG_SERIAL) += hc32f460/serial.c generic/serial_irq.c ../lib/hc32f460/driver/src/hc32f460_usart.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += hc32f460/hard_pwm.c ../lib/hc32f460/driver/src/hc32f460_timera.c +src-$(CONFIG_WANT_HARD_PWM) += hc32f460/hard_pwm.c ../lib/hc32f460/driver/src/hc32f460_timera.c src-y += generic/armcm_boot.c generic/armcm_irq.c generic/armcm_timer.c src-y += generic/armcm_reset.c generic/crc16_ccitt.c diff --git a/src/lpc176x/Makefile b/src/lpc176x/Makefile index 6814969c..503629cd 100644 --- a/src/lpc176x/Makefile +++ b/src/lpc176x/Makefile @@ -22,7 +22,7 @@ src-$(CONFIG_HAVE_GPIO_SPI) += lpc176x/spi.c src-$(CONFIG_USBSERIAL) += lpc176x/usbserial.c lpc176x/chipid.c src-$(CONFIG_USBSERIAL) += generic/usb_cdc.c src-$(CONFIG_SERIAL) += lpc176x/serial.c generic/serial_irq.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += lpc176x/hard_pwm.c +src-$(CONFIG_WANT_HARD_PWM) += lpc176x/hard_pwm.c # Build the additional bin output file target-y += $(OUT)klipper.bin diff --git a/src/rp2040/Makefile b/src/rp2040/Makefile index f7c38dab..3acda535 100644 --- a/src/rp2040/Makefile +++ b/src/rp2040/Makefile @@ -28,7 +28,7 @@ src-$(CONFIG_CANSERIAL) += ../lib/fast-hash/fasthash.c src-$(CONFIG_USBCANBUS) += rp2040/can.c rp2040/chipid.c ../lib/can2040/can2040.c src-$(CONFIG_USBCANBUS) += generic/canserial.c generic/usb_canbus.c src-$(CONFIG_USBCANBUS) += ../lib/fast-hash/fasthash.c rp2040/usbserial.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += rp2040/hard_pwm.c +src-$(CONFIG_WANT_HARD_PWM) += rp2040/hard_pwm.c src-$(CONFIG_HAVE_GPIO_SPI) += rp2040/spi.c src-$(CONFIG_HAVE_GPIO_I2C) += rp2040/i2c.c diff --git a/src/stm32/Makefile b/src/stm32/Makefile index eaf989af..dc6eeb08 100644 --- a/src/stm32/Makefile +++ b/src/stm32/Makefile @@ -93,7 +93,7 @@ canbus-src-$(CONFIG_HAVE_STM32_FDCANBUS) += stm32/fdcan.c src-$(CONFIG_CANSERIAL) += $(canbus-src-y) generic/canbus.c stm32/chipid.c src-$(CONFIG_USBCANBUS) += $(usb-src-y) $(canbus-src-y) src-$(CONFIG_USBCANBUS) += stm32/chipid.c generic/usb_canbus.c -src-$(CONFIG_HAVE_GPIO_HARD_PWM) += stm32/hard_pwm.c +src-$(CONFIG_WANT_HARD_PWM) += stm32/hard_pwm.c # Binary output file rules target-y += $(OUT)klipper.bin