diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index e904d6beb975..5687201d61c0 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -565,18 +565,18 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
endif
COMMON_VPATH += $(QUANTUM_DIR)/backlight
+ COMMON_VPATH += $(DRIVER_PATH)/backlight
SRC += $(QUANTUM_DIR)/backlight/backlight.c
SRC += $(QUANTUM_DIR)/process_keycode/process_backlight.c
OPT_DEFS += -DBACKLIGHT_ENABLE
- ifeq ($(strip $(BACKLIGHT_DRIVER)), custom)
- OPT_DEFS += -DBACKLIGHT_CUSTOM_DRIVER
- else
+ ifneq ($(strip $(BACKLIGHT_DRIVER)), custom)
SRC += $(QUANTUM_DIR)/backlight/backlight_driver_common.c
- ifeq ($(strip $(BACKLIGHT_DRIVER)), pwm)
- SRC += $(QUANTUM_DIR)/backlight/backlight_$(PLATFORM_KEY).c
+
+ ifeq ($(strip $(BACKLIGHT_DRIVER)), software)
+ SRC += $(DRIVER_PATH)/backlight/backlight_software.c
else
- SRC += $(QUANTUM_DIR)/backlight/backlight_$(strip $(BACKLIGHT_DRIVER)).c
+ SRC += $(PLATFORM_PATH)/$(PLATFORM_KEY)/$(DRIVER_DIR)/backlight_$(strip $(BACKLIGHT_DRIVER)).c
endif
endif
endif
diff --git a/quantum/backlight/backlight_software.c b/drivers/backlight/backlight_software.c
similarity index 98%
rename from quantum/backlight/backlight_software.c
rename to drivers/backlight/backlight_software.c
index 27ccbd2c9ff9..f2af3e918e55 100644
--- a/quantum/backlight/backlight_software.c
+++ b/drivers/backlight/backlight_software.c
@@ -1,6 +1,6 @@
-#include "quantum.h"
#include "backlight.h"
#include "backlight_driver_common.h"
+#include "util.h"
#ifdef BACKLIGHT_BREATHING
# error "Backlight breathing is not available for software PWM. Please disable."
diff --git a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h
index ddd59434a416..1cc2d50f1619 100644
--- a/keyboards/4pplet/eagle_viper_rep/rev_a/config.h
+++ b/keyboards/4pplet/eagle_viper_rep/rev_a/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see .
#define BACKLIGHT_PWM_DRIVER PWMD2
#define BACKLIGHT_PWM_CHANNEL 4
-#define BACKLIGHT_PAL_MODE 2
/* Underglow */
#define WS2812_SPI SPID1
diff --git a/keyboards/acheron/athena/alpha/alpha.c b/keyboards/acheron/athena/alpha/alpha.c
index 5b5c45b7c7a5..9e4f82f7ad19 100644
--- a/keyboards/acheron/athena/alpha/alpha.c
+++ b/keyboards/acheron/athena/alpha/alpha.c
@@ -23,7 +23,7 @@ void board_init(void) {
void keyboard_post_init_kb(void){
// Defining the backlight pin (A6) as an floating (no pullup or pulldown resistor) opendrain output pin
- palSetLineMode(BACKLIGHT_PIN, PAL_MODE_ALTERNATE(BACKLIGHT_PAL_MODE) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING);
+ palSetLineMode(BACKLIGHT_PIN, PAL_MODE_ALTERNATE(2) | PAL_STM32_OTYPE_OPENDRAIN | PAL_STM32_OSPEED_HIGHEST | PAL_STM32_PUPDR_FLOATING);
}
void led_init_ports(void) {
diff --git a/keyboards/acheron/athena/alpha/config.h b/keyboards/acheron/athena/alpha/config.h
index 1bb03e3783d9..0466710e7169 100644
--- a/keyboards/acheron/athena/alpha/config.h
+++ b/keyboards/acheron/athena/alpha/config.h
@@ -22,7 +22,6 @@ along with this program. If not, see .
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/acheron/athena/beta/config.h b/keyboards/acheron/athena/beta/config.h
index 77985b2ae54f..618cebef0cb4 100644
--- a/keyboards/acheron/athena/beta/config.h
+++ b/keyboards/acheron/athena/beta/config.h
@@ -21,8 +21,6 @@ along with this program. If not, see .
#define LOCKING_RESYNC_ENABLE
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
-#define BACKLIGHT_PAL_MODE 2
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/acheron/shark/alpha/config.h b/keyboards/acheron/shark/alpha/config.h
index 91f51146f0b4..a34ea41cffb2 100644
--- a/keyboards/acheron/shark/alpha/config.h
+++ b/keyboards/acheron/shark/alpha/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see .
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/acheron/shark/beta/config.h b/keyboards/acheron/shark/beta/config.h
index 25ad6b3bf02e..d4616132e388 100644
--- a/keyboards/acheron/shark/beta/config.h
+++ b/keyboards/acheron/shark/beta/config.h
@@ -22,7 +22,6 @@ along with this program. If not, see .
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/checkerboards/nop60/config.h b/keyboards/checkerboards/nop60/config.h
index cf5b1ff9061d..5cb854aebcd2 100644
--- a/keyboards/checkerboards/nop60/config.h
+++ b/keyboards/checkerboards/nop60/config.h
@@ -17,8 +17,6 @@ Copyright 2021 Nathan Spears
#pragma once
-#define BACKLIGHT_PWM_DRIVER PWMD3
-
// ws2812 options
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/ebastler/e80_1800/config.h b/keyboards/ebastler/e80_1800/config.h
index b0726f908a79..baa707317687 100644
--- a/keyboards/ebastler/e80_1800/config.h
+++ b/keyboards/ebastler/e80_1800/config.h
@@ -16,8 +16,6 @@
#define BACKLIGHT_PWM_DRIVER PWMD1
#define BACKLIGHT_PWM_CHANNEL 2
-#define BACKLIGHT_PAL_MODE 2
-
#ifdef OLED_ENABLE
diff --git a/keyboards/ebastler/isometria_75/rev1/config.h b/keyboards/ebastler/isometria_75/rev1/config.h
index 29a2ac527d1c..18f4f1f4d6c1 100644
--- a/keyboards/ebastler/isometria_75/rev1/config.h
+++ b/keyboards/ebastler/isometria_75/rev1/config.h
@@ -20,7 +20,6 @@ along with this program. If not, see .
/* Backlight */
#define BACKLIGHT_PWM_DRIVER PWMD1
#define BACKLIGHT_PWM_CHANNEL 2
-#define BACKLIGHT_PAL_MODE 2
#define BACKLIGHT_PWM_OUTPUT_FREQUENCY 1000 // Increases backlight PWM freq if compiled with an unmerged PR. Does no harm without it.
/* Underglow */
diff --git a/keyboards/geonworks/frogmini/fms/config.h b/keyboards/geonworks/frogmini/fms/config.h
index 6576ee9efe93..ddeaa2abff0b 100644
--- a/keyboards/geonworks/frogmini/fms/config.h
+++ b/keyboards/geonworks/frogmini/fms/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see .
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD1
-#define BACKLIGHT_PWM_CHANNEL 3
#define BACKLIGHT_PAL_MODE 1
#define I2C_DRIVER I2CD1
diff --git a/keyboards/handwired/onekey/blackpill_f401/config.h b/keyboards/handwired/onekey/blackpill_f401/config.h
index 6183ee981971..22143dfac515 100644
--- a/keyboards/handwired/onekey/blackpill_f401/config.h
+++ b/keyboards/handwired/onekey/blackpill_f401/config.h
@@ -19,7 +19,6 @@
#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define ADC_PIN A0
diff --git a/keyboards/handwired/onekey/blackpill_f401_tinyuf2/config.h b/keyboards/handwired/onekey/blackpill_f401_tinyuf2/config.h
index 6183ee981971..22143dfac515 100755
--- a/keyboards/handwired/onekey/blackpill_f401_tinyuf2/config.h
+++ b/keyboards/handwired/onekey/blackpill_f401_tinyuf2/config.h
@@ -19,7 +19,6 @@
#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define ADC_PIN A0
diff --git a/keyboards/handwired/onekey/blackpill_f411/config.h b/keyboards/handwired/onekey/blackpill_f411/config.h
index 6183ee981971..22143dfac515 100644
--- a/keyboards/handwired/onekey/blackpill_f411/config.h
+++ b/keyboards/handwired/onekey/blackpill_f411/config.h
@@ -19,7 +19,6 @@
#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define ADC_PIN A0
diff --git a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
index 6183ee981971..22143dfac515 100755
--- a/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
+++ b/keyboards/handwired/onekey/blackpill_f411_tinyuf2/config.h
@@ -19,7 +19,6 @@
#define BACKLIGHT_PWM_DRIVER PWMD5
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define ADC_PIN A0
diff --git a/keyboards/handwired/onekey/evb_wb32f3g71/config.h b/keyboards/handwired/onekey/evb_wb32f3g71/config.h
index 4a65e9a72fe9..5f6f04f7b413 100644
--- a/keyboards/handwired/onekey/evb_wb32f3g71/config.h
+++ b/keyboards/handwired/onekey/evb_wb32f3g71/config.h
@@ -3,13 +3,8 @@
#pragma once
-
#define ADC_PIN A0
-#define BACKLIGHT_PWM_DRIVER PWMD4
-#define BACKLIGHT_PWM_CHANNEL 3
-#define BACKLIGHT_PAL_MODE 2
-
#define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4)))
#define SOLENOID_PIN B12
diff --git a/keyboards/handwired/onekey/evb_wb32fq95/config.h b/keyboards/handwired/onekey/evb_wb32fq95/config.h
index 4a65e9a72fe9..5f6f04f7b413 100644
--- a/keyboards/handwired/onekey/evb_wb32fq95/config.h
+++ b/keyboards/handwired/onekey/evb_wb32fq95/config.h
@@ -3,13 +3,8 @@
#pragma once
-
#define ADC_PIN A0
-#define BACKLIGHT_PWM_DRIVER PWMD4
-#define BACKLIGHT_PWM_CHANNEL 3
-#define BACKLIGHT_PAL_MODE 2
-
#define APA102_NOPS (100 / (1000000000L / (CPU_CLOCK / 4)))
#define SOLENOID_PIN B12
diff --git a/keyboards/handwired/onekey/nucleo_f446re/config.h b/keyboards/handwired/onekey/nucleo_f446re/config.h
index c6c04ed61544..4401623e85ca 100644
--- a/keyboards/handwired/onekey/nucleo_f446re/config.h
+++ b/keyboards/handwired/onekey/nucleo_f446re/config.h
@@ -2,11 +2,6 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD4
-#define BACKLIGHT_PWM_CHANNEL 3
-#define BACKLIGHT_PAL_MODE 2
-
#define ADC_PIN A0
#define SOLENOID_PINS { B12, B13, B14, B15 }
diff --git a/keyboards/handwired/onekey/nucleo_l432kc/config.h b/keyboards/handwired/onekey/nucleo_l432kc/config.h
index d344a110942e..03e017892c73 100644
--- a/keyboards/handwired/onekey/nucleo_l432kc/config.h
+++ b/keyboards/handwired/onekey/nucleo_l432kc/config.h
@@ -2,9 +2,4 @@
// SPDX-License-Identifier: GPL-2.0-or-later
#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD4
-#define BACKLIGHT_PWM_CHANNEL 3
-#define BACKLIGHT_PAL_MODE 2
-
#define ADC_PIN A0
diff --git a/keyboards/handwired/onekey/proton_c/config.h b/keyboards/handwired/onekey/proton_c/config.h
index 49376e474e27..07ce9292211d 100644
--- a/keyboards/handwired/onekey/proton_c/config.h
+++ b/keyboards/handwired/onekey/proton_c/config.h
@@ -16,9 +16,4 @@
#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD4
-#define BACKLIGHT_PWM_CHANNEL 3
-#define BACKLIGHT_PAL_MODE 2
-
#define ADC_PIN A0
diff --git a/keyboards/handwired/onekey/rp2040/config.h b/keyboards/handwired/onekey/rp2040/config.h
index 5cbfb8dbffc1..0563ebfa5f1f 100644
--- a/keyboards/handwired/onekey/rp2040/config.h
+++ b/keyboards/handwired/onekey/rp2040/config.h
@@ -13,7 +13,6 @@
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_LED GP25
#define RP2040_BOOTLOADER_DOUBLE_TAP_RESET_TIMEOUT 500U
-#define BACKLIGHT_PWM_DRIVER PWMD4
#define BACKLIGHT_PWM_CHANNEL RP2040_PWM_CHANNEL_B
#define AUDIO_PIN GP16
diff --git a/keyboards/handwired/onekey/stm32f0_disco/config.h b/keyboards/handwired/onekey/stm32f0_disco/config.h
index 806eb69df4e3..b8880f65813a 100644
--- a/keyboards/handwired/onekey/stm32f0_disco/config.h
+++ b/keyboards/handwired/onekey/stm32f0_disco/config.h
@@ -16,9 +16,7 @@
#pragma once
-
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
#define BACKLIGHT_PAL_MODE 0
#define ADC_PIN A0
diff --git a/keyboards/handwired/pill60/config.h b/keyboards/handwired/pill60/config.h
deleted file mode 100644
index 399d0f2212cb..000000000000
--- a/keyboards/handwired/pill60/config.h
+++ /dev/null
@@ -1,19 +0,0 @@
- /* Copyright 2020 Imam Rafii
- *
- * This program is free software: you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation, either version 2 of the License, or
- * (at your option) any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program. If not, see .
- */
-#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD5
-#define BACKLIGHT_PWM_CHANNEL 1
diff --git a/keyboards/linworks/fave104/config.h b/keyboards/linworks/fave104/config.h
index 73e72a129f8d..41c1a917f39e 100644
--- a/keyboards/linworks/fave104/config.h
+++ b/keyboards/linworks/fave104/config.h
@@ -19,5 +19,4 @@ along with this program. If not, see .
#define BACKLIGHT_PWM_DRIVER PWMD2
#define BACKLIGHT_PWM_CHANNEL 2
-#define BACKLIGHT_PAL_MODE 2
#define BACKLIGHT_PWM_OUTPUT_FREQUENCY 1000 // Increases backlight PWM freq if compiled with an unmerged PR. Does no harm without it.
diff --git a/keyboards/linworks/whale75/config.h b/keyboards/linworks/whale75/config.h
index d12d33bdfd38..3aa16f3eb0be 100644
--- a/keyboards/linworks/whale75/config.h
+++ b/keyboards/linworks/whale75/config.h
@@ -15,7 +15,6 @@ along with this program. If not, see .
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD1
-#define BACKLIGHT_PWM_CHANNEL 3
#define BACKLIGHT_PAL_MODE 6
#define BACKLIGHT_PWM_OUTPUT_FREQUENCY 1000 // Increases backlight PWM freq if compiled with an unmerged PR. Does no harm without it.
diff --git a/keyboards/mechlovin/adelais/standard_led/arm/config.h b/keyboards/mechlovin/adelais/standard_led/arm/config.h
index d7169c044347..68857621b70c 100644
--- a/keyboards/mechlovin/adelais/standard_led/arm/config.h
+++ b/keyboards/mechlovin/adelais/standard_led/arm/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see .
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/mechlovin/hannah65/config.h b/keyboards/mechlovin/hannah65/config.h
deleted file mode 100644
index 1686c861fb19..000000000000
--- a/keyboards/mechlovin/hannah65/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2020 Team Mechlovin
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD4
-#define BACKLIGHT_PWM_CHANNEL 3
diff --git a/keyboards/mechlovin/hex4b/rev2/config.h b/keyboards/mechlovin/hex4b/rev2/config.h
deleted file mode 100644
index 14dfffbed3a6..000000000000
--- a/keyboards/mechlovin/hex4b/rev2/config.h
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-Copyright 2020 Team Mechlovin
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD4
diff --git a/keyboards/mechlovin/hex6c/config.h b/keyboards/mechlovin/hex6c/config.h
index 48bf7175814d..4cfcaebcdef3 100644
--- a/keyboards/mechlovin/hex6c/config.h
+++ b/keyboards/mechlovin/hex6c/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see .
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
#define WEAR_LEVELING_BACKING_SIZE 4096
#define WEAR_LEVELING_LOGICAL_SIZE 2048
diff --git a/keyboards/mechlovin/infinity87/rev1/config.h b/keyboards/mechlovin/infinity87/rev1/config.h
index 2265fff2d122..e21e5d019f7f 100644
--- a/keyboards/mechlovin/infinity87/rev1/config.h
+++ b/keyboards/mechlovin/infinity87/rev1/config.h
@@ -17,4 +17,3 @@
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
diff --git a/keyboards/mechlovin/infinity88/config.h b/keyboards/mechlovin/infinity88/config.h
index 9f5eaf5d875f..5d7b823cd44f 100644
--- a/keyboards/mechlovin/infinity88/config.h
+++ b/keyboards/mechlovin/infinity88/config.h
@@ -18,7 +18,6 @@ along with this program. If not, see .
#pragma once
#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
/*== all animations enable ==*/#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/keyboards/mechlovin/mechlovin9/rev1/config.h b/keyboards/mechlovin/mechlovin9/rev1/config.h
deleted file mode 100644
index 3686536dfb5a..000000000000
--- a/keyboards/mechlovin/mechlovin9/rev1/config.h
+++ /dev/null
@@ -1,21 +0,0 @@
-/*
-Copyright 2021 Mechlovin' Studio
-
-This program is free software: you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation, either version 2 of the License, or
-(at your option) any later version.
-
-This program is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-GNU General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with this program. If not, see .
-*/
-
-#pragma once
-
-#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
diff --git a/keyboards/mechlovin/tmkl/config.h b/keyboards/mechlovin/tmkl/config.h
index e604c6bcfad3..03e3beacd0f3 100644
--- a/keyboards/mechlovin/tmkl/config.h
+++ b/keyboards/mechlovin/tmkl/config.h
@@ -17,8 +17,5 @@ along with this program. If not, see .
#pragma once
-#define BACKLIGHT_PWM_DRIVER PWMD3
-#define BACKLIGHT_PWM_CHANNEL 3
-
/* Mechanical locking support. Use KC_LCAP, KC_LNUM or KC_LSCR instead in keymap */
#define LOCKING_SUPPORT_ENABLE
diff --git a/keyboards/mode/m75s/config.h b/keyboards/mode/m75s/config.h
index c17bf51b35cd..7fdb18d26ab9 100644
--- a/keyboards/mode/m75s/config.h
+++ b/keyboards/mode/m75s/config.h
@@ -20,7 +20,6 @@ along with this program. If not, see .
#define BACKLIGHT_DEFAULT_LEVEL 20
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define WEAR_LEVELING_LOGICAL_SIZE 2048
#define WEAR_LEVELING_BACKING_SIZE 4096
diff --git a/keyboards/smithrune/iron165r2/f411/config.h b/keyboards/smithrune/iron165r2/f411/config.h
index 5ce500d1e592..1cd8a5c1503c 100644
--- a/keyboards/smithrune/iron165r2/f411/config.h
+++ b/keyboards/smithrune/iron165r2/f411/config.h
@@ -19,7 +19,6 @@ along with this program. If not, see .
#define BACKLIGHT_PWM_DRIVER PWMD3
#define BACKLIGHT_PWM_CHANNEL 1
-#define BACKLIGHT_PAL_MODE 2
#define RGBLIGHT_EFFECT_BREATHING
#define RGBLIGHT_EFFECT_RAINBOW_MOOD
diff --git a/quantum/backlight/backlight_avr.c b/platforms/avr/drivers/backlight_pwm.c
similarity index 97%
rename from quantum/backlight/backlight_avr.c
rename to platforms/avr/drivers/backlight_pwm.c
index 474e0a86f5e0..d2341156410a 100644
--- a/quantum/backlight/backlight_avr.c
+++ b/platforms/avr/drivers/backlight_pwm.c
@@ -1,7 +1,8 @@
-#include "quantum.h"
#include "backlight.h"
#include "backlight_driver_common.h"
-#include "debug.h"
+#include "progmem.h"
+#include
+#include
// Maximum duty cycle limit
#ifndef BACKLIGHT_LIMIT_VAL
@@ -17,7 +18,6 @@
// 3. Full software PWM, driven by the matrix scan, if both timers are used by Audio.
#if (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) && (BACKLIGHT_PIN == B5 || BACKLIGHT_PIN == B6 || BACKLIGHT_PIN == B7)
-# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
@@ -39,7 +39,6 @@
# define OCRxx OCR1C
# endif
#elif (defined(__AVR_AT90USB646__) || defined(__AVR_AT90USB647__) || defined(__AVR_AT90USB1286__) || defined(__AVR_AT90USB1287__) || defined(__AVR_ATmega16U4__) || defined(__AVR_ATmega32U4__)) && (BACKLIGHT_PIN == C4 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
-# define HARDWARE_PWM
# define ICRx ICR3
# define TCCRxA TCCR3A
# define TCCRxB TCCR3B
@@ -69,7 +68,6 @@
# define OCRxx OCR3A
# endif
#elif (defined(__AVR_AT90USB162__) || defined(__AVR_ATmega16U2__) || defined(__AVR_ATmega32U2__)) && (BACKLIGHT_PIN == B7 || BACKLIGHT_PIN == C5 || BACKLIGHT_PIN == C6)
-# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
@@ -91,7 +89,6 @@
# define OCRxx OCR1A
# endif
#elif defined(__AVR_ATmega32A__) && (BACKLIGHT_PIN == D4 || BACKLIGHT_PIN == D5)
-# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
@@ -109,7 +106,6 @@
# define OCRxx OCR1A
# endif
#elif (defined(__AVR_ATmega328P__) || defined(__AVR_ATmega328__)) && (BACKLIGHT_PIN == B1 || BACKLIGHT_PIN == B2)
-# define HARDWARE_PWM
# define ICRx ICR1
# define TCCRxA TCCR1A
# define TCCRxB TCCR1B
@@ -129,7 +125,6 @@
#elif (AUDIO_PIN != B5) && (AUDIO_PIN != B6) && (AUDIO_PIN != B7) && (AUDIO_PIN_ALT != B5) && (AUDIO_PIN_ALT != B6) && (AUDIO_PIN_ALT != B7)
// Timer 1 is not in use by Audio feature, Backlight can use it
# pragma message "Using hardware timer 1 with software PWM"
-# define HARDWARE_PWM
# define BACKLIGHT_PWM_TIMER
# define ICRx ICR1
# define TCCRxA TCCR1A
@@ -148,7 +143,6 @@
#elif (AUDIO_PIN != C4) && (AUDIO_PIN != C5) && (AUDIO_PIN != C6)
# pragma message "Using hardware timer 3 with software PWM"
// Timer 3 is not in use by Audio feature, Backlight can use it
-# define HARDWARE_PWM
# define BACKLIGHT_PWM_TIMER
# define ICRx ICR1
# define TCCRxA TCCR3A
@@ -160,10 +154,6 @@
# define OCIExA OCIE3A
# define OCRxx OCR3A
-#elif defined(BACKLIGHT_CUSTOM_DRIVER)
-error("Please set 'BACKLIGHT_DRIVER = custom' within rules.mk")
-#else
-error("Please set 'BACKLIGHT_DRIVER = software' within rules.mk")
#endif
#ifndef BACKLIGHT_PWM_TIMER // pwm through software
diff --git a/quantum/backlight/backlight_chibios.c b/platforms/chibios/drivers/backlight_pwm.c
similarity index 98%
rename from quantum/backlight/backlight_chibios.c
rename to platforms/chibios/drivers/backlight_pwm.c
index 30e95bd5c80d..01e6f71307a4 100644
--- a/quantum/backlight/backlight_chibios.c
+++ b/platforms/chibios/drivers/backlight_pwm.c
@@ -1,7 +1,7 @@
-#include "quantum.h"
#include "backlight.h"
+#include "gpio.h"
+#include "wait.h"
#include
-#include "debug.h"
// Maximum duty cycle limit
#ifndef BACKLIGHT_LIMIT_VAL
@@ -13,7 +13,7 @@
# define BACKLIGHT_PAL_MODE PAL_MODE_ALTERNATE_PUSHPULL
# else
// GPIOV2 && GPIOV3
-# define BACKLIGHT_PAL_MODE 5
+# define BACKLIGHT_PAL_MODE 2
# endif
#endif
diff --git a/quantum/backlight/backlight_timer.c b/platforms/chibios/drivers/backlight_timer.c
similarity index 99%
rename from quantum/backlight/backlight_timer.c
rename to platforms/chibios/drivers/backlight_timer.c
index 82fb6a6a83e7..0fabee93b1c8 100644
--- a/quantum/backlight/backlight_timer.c
+++ b/platforms/chibios/drivers/backlight_timer.c
@@ -1,7 +1,6 @@
-#include "quantum.h"
#include "backlight.h"
#include "backlight_driver_common.h"
-#include "debug.h"
+#include "wait.h"
#ifndef BACKLIGHT_GPT_DRIVER
# define BACKLIGHT_GPT_DRIVER GPTD15
diff --git a/quantum/backlight/backlight.c b/quantum/backlight/backlight.c
index 52ec086bb093..9d9f944f5db4 100644
--- a/quantum/backlight/backlight.c
+++ b/quantum/backlight/backlight.c
@@ -15,7 +15,6 @@ You should have received a copy of the GNU General Public License
along with this program. If not, see .
*/
-#include "quantum.h"
#include "backlight.h"
#include "eeprom.h"
#include "eeconfig.h"
diff --git a/quantum/backlight/backlight_driver_common.c b/quantum/backlight/backlight_driver_common.c
index 1eb8969084e8..8c3fe461d7ca 100644
--- a/quantum/backlight/backlight_driver_common.c
+++ b/quantum/backlight/backlight_driver_common.c
@@ -1,6 +1,7 @@
-#include "quantum.h"
#include "backlight.h"
#include "backlight_driver_common.h"
+#include "gpio.h"
+#include "util.h"
#if !defined(BACKLIGHT_PIN) && !defined(BACKLIGHT_PINS)
# error "Backlight pin/pins not defined. Please configure."