summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRyan <fauxpark@gmail.com>2023-10-13 17:25:32 +1100
committerGitHub <noreply@github.com>2023-10-13 17:25:32 +1100
commitc157c19b81fbd8b516de0eb5e854d278669cff1a (patch)
treec2670f9b71cbe95154126018683345afe5890b2c
parentf150258e5ab6bf04c2e724389465f7a8ef5759ef (diff)
Dedupe I2C, SPI, UART driver inclusions (#22253)
-rw-r--r--builddefs/common_features.mk185
-rw-r--r--docs/i2c_driver.md12
-rw-r--r--docs/spi_driver.md12
-rw-r--r--docs/uart_driver.md12
-rw-r--r--keyboards/3w6/rev1/rules.mk2
-rw-r--r--keyboards/3w6/rev2/rules.mk2
-rw-r--r--keyboards/40percentclub/ut47/rules.mk2
-rw-r--r--keyboards/aeboards/satellite/rev1/rules.mk2
-rw-r--r--keyboards/anavi/knob1/rules.mk2
-rw-r--r--keyboards/anavi/knobs3/rules.mk2
-rw-r--r--keyboards/bajjak/rules.mk2
-rw-r--r--keyboards/barleycorn_smd/rules.mk2
-rw-r--r--keyboards/bioi/g60/rules.mk2
-rw-r--r--keyboards/bioi/g60ble/rules.mk2
-rw-r--r--keyboards/bioi/morgan65/rules.mk2
-rw-r--r--keyboards/centromere/rules.mk2
-rw-r--r--keyboards/clueboard/2x1800/2021/rules.mk3
-rw-r--r--keyboards/converter/palm_usb/rules.mk2
-rw-r--r--keyboards/converter/sun_usb/rules.mk2
-rw-r--r--keyboards/dc01/left/rules.mk4
-rwxr-xr-xkeyboards/dichotomy/rules.mk2
-rw-r--r--keyboards/ergodox_ez/rules.mk2
-rw-r--r--keyboards/ergodox_stm32/rules.mk2
-rwxr-xr-xkeyboards/fallacy/rules.mk2
-rw-r--r--keyboards/fc660c/rules.mk2
-rw-r--r--keyboards/fc980c/rules.mk2
-rw-r--r--keyboards/ferris/0_1/rules.mk2
-rw-r--r--keyboards/ferris/0_2/rules.mk2
-rw-r--r--keyboards/frobiac/blackbowl/rules.mk2
-rw-r--r--keyboards/gboards/ergotaco/rules.mk3
-rw-r--r--keyboards/gboards/georgi/rules.mk3
-rw-r--r--keyboards/gboards/gergo/keymaps/colemak/rules.mk3
-rw-r--r--keyboards/gboards/gergo/keymaps/default/rules.mk3
-rw-r--r--keyboards/gboards/gergo/keymaps/germ/rules.mk3
-rw-r--r--keyboards/gboards/gergo/keymaps/gotham/rules.mk3
-rw-r--r--keyboards/gboards/gergo/rules.mk2
-rw-r--r--keyboards/gboards/gergoplex/rules.mk2
-rw-r--r--keyboards/geistmaschine/macropod/rules.mk2
-rw-r--r--keyboards/glenpickle/chimera_ergo/rules.mk2
-rw-r--r--keyboards/glenpickle/chimera_ls/rules.mk2
-rw-r--r--keyboards/glenpickle/chimera_ortho/rules.mk2
-rw-r--r--keyboards/glenpickle/chimera_ortho_plus/rules.mk2
-rw-r--r--keyboards/handwired/dactyl/rules.mk2
-rw-r--r--keyboards/handwired/dqz11n1g/rules.mk2
-rw-r--r--keyboards/handwired/dygma/raise/rules.mk2
-rw-r--r--keyboards/handwired/frenchdev/rules.mk4
-rw-r--r--keyboards/handwired/lagrange/rules.mk3
-rw-r--r--keyboards/handwired/onekey/kb2040/rules.mk2
-rw-r--r--keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk2
-rw-r--r--keyboards/handwired/pterodactyl/rules.mk2
-rw-r--r--keyboards/hazel/bad_wings/rules.mk2
-rw-r--r--keyboards/hotdox/rules.mk2
-rw-r--r--keyboards/hs60/v2/ansi/rules.mk4
-rw-r--r--keyboards/hs60/v2/hhkb/rules.mk4
-rw-r--r--keyboards/hs60/v2/iso/rules.mk4
-rw-r--r--keyboards/ibm/model_m/mschwingen/rules.mk4
-rw-r--r--keyboards/ingrained/rules.mk2
-rw-r--r--keyboards/kagizaraya/chidori/rules.mk2
-rwxr-xr-xkeyboards/keebwerk/mega/ansi/rules.mk2
-rw-r--r--keyboards/keyboardio/model01/rules.mk2
-rwxr-xr-xkeyboards/keyhive/honeycomb/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb/rev2/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk2
-rw-r--r--keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk2
-rw-r--r--keyboards/ktec/ergodone/rules.mk2
-rw-r--r--keyboards/matrix/abelx/rules.mk2
-rw-r--r--keyboards/matrix/m20add/rules.mk2
-rw-r--r--keyboards/mechwild/sugarglider/rules.mk2
-rw-r--r--keyboards/mitosis/rules.mk2
-rwxr-xr-xkeyboards/molecule/rules.mk2
-rw-r--r--keyboards/moon/rules.mk2
-rw-r--r--keyboards/moonlander/rules.mk2
-rw-r--r--keyboards/mt/split75/rules.mk2
-rw-r--r--keyboards/neson_design/700e/rules.mk3
-rw-r--r--keyboards/neson_design/n6/rules.mk3
-rwxr-xr-xkeyboards/novelkeys/nk65/rules.mk4
-rwxr-xr-xkeyboards/novelkeys/nk87/rules.mk4
-rw-r--r--keyboards/nullbitsco/nibble/rules.mk2
-rw-r--r--keyboards/nullbitsco/snap/rules.mk4
-rw-r--r--keyboards/nullbitsco/tidbit/rules.mk4
-rw-r--r--keyboards/oddforge/vea/rules.mk2
-rw-r--r--keyboards/phoenix/config.h1
-rw-r--r--keyboards/phoenix/halconf.h2
-rw-r--r--keyboards/redox_w/rules.mk2
-rw-r--r--keyboards/rgbkb/mun/rules.mk2
-rw-r--r--keyboards/rgbkb/sol3/rules.mk2
-rw-r--r--keyboards/satt/comet46/rules.mk2
-rw-r--r--keyboards/sirius/uni660/rev1/rules.mk2
-rw-r--r--keyboards/sirius/uni660/rev2/rules.mk2
-rwxr-xr-xkeyboards/spaceholdings/nebula12/rules.mk2
-rwxr-xr-xkeyboards/spaceholdings/nebula68/rules.mk2
-rw-r--r--keyboards/spiderisland/split78/rules.mk2
-rw-r--r--keyboards/switchplate/southpaw_65/rules.mk2
-rwxr-xr-xkeyboards/sx60/rules.mk2
-rw-r--r--keyboards/system76/launch_1/rules.mk2
-rw-r--r--keyboards/telophase/rules.mk2
-rw-r--r--keyboards/tkc/portico/rules.mk2
-rw-r--r--keyboards/tkc/portico75/keymaps/via/rules.mk2
-rw-r--r--keyboards/torn/rules.mk2
-rw-r--r--keyboards/touchpad/rules.mk3
-rw-r--r--keyboards/viktus/sp111/rules.mk2
-rw-r--r--keyboards/wilba_tech/rama_works_kara/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_koyu/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_m10_c/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_m50_a/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_m60_a/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_m65_b/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_m65_bx/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_m6_b/rules.mk4
-rw-r--r--keyboards/wilba_tech/rama_works_u80_a/rules.mk4
-rw-r--r--keyboards/wilba_tech/wt60_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt60_b/rules.mk4
-rw-r--r--keyboards/wilba_tech/wt60_bx/rules.mk4
-rw-r--r--keyboards/wilba_tech/wt60_c/rules.mk4
-rw-r--r--keyboards/wilba_tech/wt65_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt65_b/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt75_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt75_b/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt75_c/rules.mk2
-rw-r--r--keyboards/wilba_tech/wt80_a/rules.mk2
-rw-r--r--keyboards/wilba_tech/zeal60/rules.mk4
-rw-r--r--keyboards/wilba_tech/zeal65/rules.mk4
-rw-r--r--keyboards/xelus/dawn60/rev1/rules.mk2
-rw-r--r--keyboards/xelus/dawn60/rev1_qmk/rules.mk2
-rw-r--r--keyboards/xiudi/xd84/rules.mk2
-rw-r--r--keyboards/xiudi/xd96/rules.mk2
-rw-r--r--keyboards/yiancardesigns/barleycorn/rules.mk2
-rw-r--r--keyboards/yiancardesigns/gingham/rules.mk4
-rw-r--r--keyboards/yiancardesigns/seigaiha/rules.mk2
-rw-r--r--keyboards/ymdk/sp64/rules.mk2
130 files changed, 284 insertions, 249 deletions
diff --git a/builddefs/common_features.mk b/builddefs/common_features.mk
index d08b3751fc..84a0300579 100644
--- a/builddefs/common_features.mk
+++ b/builddefs/common_features.mk
@@ -151,30 +151,25 @@ ifeq ($(strip $(POINTING_DEVICE_ENABLE)), yes)
endif
OPT_DEFS += -DPOINTING_DEVICE_DRIVER_$(strip $(POINTING_DEVICE_DRIVER))
ifeq ($(strip $(POINTING_DEVICE_DRIVER)), adns9800)
- OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
- QUANTUM_LIB_SRC += spi_master.c
+ SPI_DRIVER_REQUIRED = yes
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), analog_joystick)
OPT_DEFS += -DSTM32_ADC -DHAL_USE_ADC=TRUE
LIB_SRC += analog.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_i2c)
- OPT_DEFS += -DSTM32_I2C -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
SRC += drivers/sensors/cirque_pinnacle.c
SRC += drivers/sensors/cirque_pinnacle_gestures.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
- QUANTUM_LIB_SRC += i2c_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), cirque_pinnacle_spi)
- OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ SPI_DRIVER_REQUIRED = yes
SRC += drivers/sensors/cirque_pinnacle.c
SRC += drivers/sensors/cirque_pinnacle_gestures.c
SRC += $(QUANTUM_DIR)/pointing_device/pointing_device_gestures.c
- QUANTUM_LIB_SRC += spi_master.c
else ifeq ($(strip $(POINTING_DEVICE_DRIVER)), pimoroni_trackball)
- OPT_DEFS += -DSTM32_SPI -DHAL_USE_I2C=TRUE
- QUANTUM_LIB_SRC += i2c_master.c
+ I2C_DRIVER_REQUIRED = yes
else ifneq ($(filter $(strip $(POINTING_DEVICE_DRIVER)),pmw3360 pmw3389),)
- OPT_DEFS += -DSTM32_SPI -DHAL_USE_SPI=TRUE
+ SPI_DRIVER_REQUIRED = yes
SRC += drivers/sensors/pmw33xx_common.c
- QUANTUM_LIB_SRC += spi_master.c
endif
endif
endif
@@ -204,12 +199,12 @@ else
else ifeq ($(strip $(EEPROM_DRIVER)), i2c)
# External I2C EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_I2C
- QUANTUM_LIB_SRC += i2c_master.c
+ I2C_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_i2c.c
else ifeq ($(strip $(EEPROM_DRIVER)), spi)
# External SPI EEPROM implementation
OPT_DEFS += -DEEPROM_DRIVER -DEEPROM_SPI
- QUANTUM_LIB_SRC += spi_master.c
+ SPI_DRIVER_REQUIRED = yes
SRC += eeprom_driver.c eeprom_spi.c
else ifeq ($(strip $(EEPROM_DRIVER)), legacy_stm32_flash)
# STM32 Emulated EEPROM, backed by MCU flash (soon to be deprecated)
@@ -308,10 +303,10 @@ ifneq ($(strip $(FLASH_DRIVER)), none)
else
OPT_DEFS += -DFLASH_ENABLE
ifeq ($(strip $(FLASH_DRIVER)),spi)
+ SPI_DRIVER_REQUIRED = yes
OPT_DEFS += -DFLASH_DRIVER -DFLASH_SPI
COMMON_VPATH += $(DRIVER_PATH)/flash
SRC += flash_spi.c
- QUANTUM_LIB_SRC += spi_master.c
endif
endif
endif
@@ -380,80 +375,73 @@ endif
CIE1931_CURVE := yes
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3218)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3218-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3731)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3733)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3736)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3736-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3737)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3737-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3741)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3741-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3742a)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3743a)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3745)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), is31fl3746a)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(LED_MATRIX_DRIVER)), snled27351)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += snled27351-simple.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
endif
@@ -491,87 +479,79 @@ endif
RGB_KEYCODES_ENABLE := yes
ifeq ($(strip $(RGB_MATRIX_DRIVER)), aw20216s)
- OPT_DEFS += -DHAL_USE_SPI=TRUE
+ SPI_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += aw20216s.c
- QUANTUM_LIB_SRC += spi_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3218)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3218.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3731)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3731.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3733)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3736)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3736.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3737)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3737.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3741)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3741.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3742a)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3743a)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3745)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), is31fl3746a)
- OPT_DEFS += -DIS31FLCOMMON -DHAL_USE_I2C=TRUE
+ OPT_DEFS += -DIS31FLCOMMON
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31flcommon.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), snled27351)
- OPT_DEFS += -DHAL_USE_I2C=TRUE
+ I2C_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led
SRC += snled27351.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(RGB_MATRIX_DRIVER)), ws2812)
@@ -638,35 +618,6 @@ ifeq ($(strip $(BACKLIGHT_ENABLE)), yes)
endif
endif
-VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor
-
-WS2812_DRIVER ?= bitbang
-ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
- ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
- $(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
- endif
-
- OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
-
- SRC += ws2812_$(strip $(WS2812_DRIVER)).c
-
- ifeq ($(strip $(PLATFORM)), CHIBIOS)
- ifeq ($(strip $(WS2812_DRIVER)), pwm)
- OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
- endif
- endif
-
- # add extra deps
- ifeq ($(strip $(WS2812_DRIVER)), i2c)
- QUANTUM_LIB_SRC += i2c_master.c
- endif
-endif
-
-ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
- COMMON_VPATH += $(DRIVER_PATH)/led
- SRC += apa102.c
-endif
-
ifeq ($(strip $(CIE1931_CURVE)), yes)
OPT_DEFS += -DUSE_CIE1931_CURVE
LED_TABLES := yes
@@ -787,8 +738,8 @@ ifeq ($(strip $(HAPTIC_ENABLE)),yes)
COMMON_VPATH += $(DRIVER_PATH)/haptic
ifeq ($(strip $(HAPTIC_DRIVER)), drv2605l)
+ I2C_DRIVER_REQUIRED = yes
SRC += drv2605l.c
- QUANTUM_LIB_SRC += i2c_master.c
endif
ifeq ($(strip $(HAPTIC_DRIVER)), solenoid)
@@ -823,10 +774,10 @@ ifeq ($(strip $(OLED_ENABLE)), yes)
OPT_DEFS += -DOLED_TRANSPORT_$(strip $(shell echo $(OLED_TRANSPORT) | tr '[:lower:]' '[:upper:]'))
ifeq ($(strip $(OLED_TRANSPORT)), i2c)
- QUANTUM_LIB_SRC += i2c_master.c
+ I2C_DRIVER_REQUIRED = yes
endif
ifeq ($(strip $(OLED_TRANSPORT)), spi)
- QUANTUM_LIB_SRC += spi_master.c
+ SPI_DRIVER_REQUIRED = yes
endif
endif
endif
@@ -834,9 +785,9 @@ endif
ifeq ($(strip $(ST7565_ENABLE)), yes)
OPT_DEFS += -DST7565_ENABLE
+ SPI_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/oled # For glcdfont.h
COMMON_VPATH += $(DRIVER_PATH)/lcd
- QUANTUM_LIB_SRC += spi_master.c
SRC += st7565.c
endif
@@ -974,18 +925,16 @@ ifeq ($(strip $(BLUETOOTH_ENABLE)), yes)
SRC += outputselect.c
ifeq ($(strip $(BLUETOOTH_DRIVER)), bluefruit_le)
- OPT_DEFS += -DHAL_USE_SPI=TRUE
+ SPI_DRIVER_REQUIRED = yes
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
SRC += $(DRIVER_PATH)/bluetooth/bluefruit_le.cpp
QUANTUM_LIB_SRC += analog.c
- QUANTUM_LIB_SRC += spi_master.c
endif
ifeq ($(strip $(BLUETOOTH_DRIVER)), rn42)
- OPT_DEFS += -DHAL_USE_SERIAL=TRUE
+ UART_DRIVER_REQUIRED = yes
SRC += $(DRIVER_PATH)/bluetooth/bluetooth.c
SRC += $(DRIVER_PATH)/bluetooth/rn42.c
- QUANTUM_LIB_SRC += uart.c
endif
endif
@@ -1004,3 +953,47 @@ ifeq ($(strip $(OS_DETECTION_ENABLE)), yes)
OPT_DEFS += -DOS_DETECTION_DEBUG_ENABLE
endif
endif
+
+VALID_WS2812_DRIVER_TYPES := bitbang custom i2c pwm spi vendor
+
+WS2812_DRIVER ?= bitbang
+ifeq ($(strip $(WS2812_DRIVER_REQUIRED)), yes)
+ ifeq ($(filter $(WS2812_DRIVER),$(VALID_WS2812_DRIVER_TYPES)),)
+ $(call CATASTROPHIC_ERROR,Invalid WS2812_DRIVER,WS2812_DRIVER="$(WS2812_DRIVER)" is not a valid WS2812 driver)
+ endif
+
+ OPT_DEFS += -DWS2812_$(strip $(shell echo $(WS2812_DRIVER) | tr '[:lower:]' '[:upper:]'))
+
+ SRC += ws2812_$(strip $(WS2812_DRIVER)).c
+
+ ifeq ($(strip $(PLATFORM)), CHIBIOS)
+ ifeq ($(strip $(WS2812_DRIVER)), pwm)
+ OPT_DEFS += -DSTM32_DMA_REQUIRED=TRUE
+ endif
+ endif
+
+ # add extra deps
+ ifeq ($(strip $(WS2812_DRIVER)), i2c)
+ I2C_DRIVER_REQUIRED = yes
+ endif
+endif
+
+ifeq ($(strip $(APA102_DRIVER_REQUIRED)), yes)
+ COMMON_VPATH += $(DRIVER_PATH)/led
+ SRC += apa102.c
+endif
+
+ifeq ($(strip $(I2C_DRIVER_REQUIRED)), yes)
+ OPT_DEFS += -DHAL_USE_I2C=TRUE
+ QUANTUM_LIB_SRC += i2c_master.c
+endif
+
+ifeq ($(strip $(SPI_DRIVER_REQUIRED)), yes)
+ OPT_DEFS += -DHAL_USE_SPI=TRUE
+ QUANTUM_LIB_SRC += spi_master.c
+endif
+
+ifeq ($(strip $(UART_DRIVER_REQUIRED)), yes)
+ OPT_DEFS += -DHAL_USE_SERIAL=TRUE
+ QUANTUM_LIB_SRC += uart.c
+endif
diff --git a/docs/i2c_driver.md b/docs/i2c_driver.md
index 92b666b5e3..faff0a1d7b 100644
--- a/docs/i2c_driver.md
+++ b/docs/i2c_driver.md
@@ -2,6 +2,18 @@
The I2C Master drivers used in QMK have a set of common functions to allow portability between MCUs.
+## Usage :id=usage
+
+In most cases, the I2C Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](feature_oled_driver.md).
+
+However, if you need to use the driver standalone, add the following to your `rules.mk`:
+
+```make
+I2C_DRIVER_REQUIRED = yes
+```
+
+You can then call the I2C API by including `i2c_master.h` in your code.
+
## I2C Addressing :id=note-on-i2c-addresses
All of the addresses expected by this driver should be pushed to the upper 7 bits of the address byte. Setting
diff --git a/docs/spi_driver.md b/docs/spi_driver.md
index 1faa9f0773..569a19f1db 100644
--- a/docs/spi_driver.md
+++ b/docs/spi_driver.md
@@ -2,6 +2,18 @@
The SPI Master drivers used in QMK have a set of common functions to allow portability between MCUs.
+## Usage :id=usage
+
+In most cases, the SPI Master driver code is automatically included if you are using a feature or driver which requires it, such as [OLED](feature_oled_driver.md).
+
+However, if you need to use the driver standalone, add the following to your `rules.mk`:
+
+```make
+SPI_DRIVER_REQUIRED = yes
+```
+
+You can then call the SPI API by including `spi_master.h` in your code.
+
## AVR Configuration :id=avr-configuration
No special setup is required - just connect the `SS`, `SCK`, `MOSI` and `MISO` pins of your SPI devices to the matching pins on the MCU:
diff --git a/docs/uart_driver.md b/docs/uart_driver.md
index a44f2c28d9..a88278d543 100644
--- a/docs/uart_driver.md
+++ b/docs/uart_driver.md
@@ -4,6 +4,18 @@ The UART drivers used in QMK have a set of common functions to allow portability
Currently, this driver does not support enabling hardware flow control (the `RTS` and `CTS` pins) if available, but may do so in future.
+## Usage :id=usage
+
+In most cases, the UART driver code is automatically included if you are using a feature or driver which requires it.
+
+However, if you need to use the driver standalone, add the following to your `rules.mk`:
+
+```make
+UART_DRIVER_REQUIRED = yes
+```
+
+You can then call the UART API by including `uart.h` in your code.
+
## AVR Configuration :id=avr-configuration
No special setup is required - just connect the `RX` and `TX` pins of your UART device to the opposite pins on the MCU:
diff --git a/keyboards/3w6/rev1/rules.mk b/keyboards/3w6/rev1/rules.mk
index 2194870d6b..b7988ce4f5 100644
--- a/keyboards/3w6/rev1/rules.mk
+++ b/keyboards/3w6/rev1/rules.mk
@@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes
LTO_ENABLE = no
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/3w6/rev2/rules.mk b/keyboards/3w6/rev2/rules.mk
index 2194870d6b..b7988ce4f5 100644
--- a/keyboards/3w6/rev2/rules.mk
+++ b/keyboards/3w6/rev2/rules.mk
@@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes
LTO_ENABLE = no
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/40percentclub/ut47/rules.mk b/keyboards/40percentclub/ut47/rules.mk
index 3b1b719e14..6ba6aa5f6f 100644
--- a/keyboards/40percentclub/ut47/rules.mk
+++ b/keyboards/40percentclub/ut47/rules.mk
@@ -13,4 +13,4 @@ AUDIO_ENABLE = no # Audio output
# custom matrix setup
CUSTOM_MATRIX = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/aeboards/satellite/rev1/rules.mk b/keyboards/aeboards/satellite/rev1/rules.mk
index 1a4657b08c..f95b0f015d 100644
--- a/keyboards/aeboards/satellite/rev1/rules.mk
+++ b/keyboards/aeboards/satellite/rev1/rules.mk
@@ -18,4 +18,4 @@ COMMON_VPATH += $(DRIVER_PATH)/issi
# project specific files
SRC += drivers/led/issi/is31fl3731.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/anavi/knob1/rules.mk b/keyboards/anavi/knob1/rules.mk
index 0e5631b02b..dd68e9d3b0 100644
--- a/keyboards/anavi/knob1/rules.mk
+++ b/keyboards/anavi/knob1/rules.mk
@@ -1,3 +1 @@
OLED_ENABLE = yes
-
-OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/anavi/knobs3/rules.mk b/keyboards/anavi/knobs3/rules.mk
index 0e5631b02b..dd68e9d3b0 100644
--- a/keyboards/anavi/knobs3/rules.mk
+++ b/keyboards/anavi/knobs3/rules.mk
@@ -1,3 +1 @@
OLED_ENABLE = yes
-
-OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/bajjak/rules.mk b/keyboards/bajjak/rules.mk
index 13148ecb04..21db4112e0 100644
--- a/keyboards/bajjak/rules.mk
+++ b/keyboards/bajjak/rules.mk
@@ -26,4 +26,4 @@ AUDIO_SUPPORTED = no
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/barleycorn_smd/rules.mk b/keyboards/barleycorn_smd/rules.mk
index 173368a047..69ecebae2a 100644
--- a/keyboards/barleycorn_smd/rules.mk
+++ b/keyboards/barleycorn_smd/rules.mk
@@ -14,4 +14,4 @@ AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = lite
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/bioi/g60/rules.mk b/keyboards/bioi/g60/rules.mk
index f4532628ae..375cb52732 100644
--- a/keyboards/bioi/g60/rules.mk
+++ b/keyboards/bioi/g60/rules.mk
@@ -18,5 +18,5 @@ BLUETOOTH_ENABLE = yes
VIA_ENABLE = yes # VIA support should be enabled here due to the main() loop will be compiled first.
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
SRC += bluetooth_custom.c
diff --git a/keyboards/bioi/g60ble/rules.mk b/keyboards/bioi/g60ble/rules.mk
index 2e79ce77a5..6bfcc62d7e 100644
--- a/keyboards/bioi/g60ble/rules.mk
+++ b/keyboards/bioi/g60ble/rules.mk
@@ -15,5 +15,5 @@ LTO_ENABLE = yes
BLUETOOTH_ENABLE = yes
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
SRC += bluetooth_custom.c
diff --git a/keyboards/bioi/morgan65/rules.mk b/keyboards/bioi/morgan65/rules.mk
index f4532628ae..375cb52732 100644
--- a/keyboards/bioi/morgan65/rules.mk
+++ b/keyboards/bioi/morgan65/rules.mk
@@ -18,5 +18,5 @@ BLUETOOTH_ENABLE = yes
VIA_ENABLE = yes # VIA support should be enabled here due to the main() loop will be compiled first.
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
SRC += bluetooth_custom.c
diff --git a/keyboards/centromere/rules.mk b/keyboards/centromere/rules.mk
index 2171d801e5..26081e4132 100644
--- a/keyboards/centromere/rules.mk
+++ b/keyboards/centromere/rules.mk
@@ -18,4 +18,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/clueboard/2x1800/2021/rules.mk b/keyboards/clueboard/2x1800/2021/rules.mk
index e9f44d7bd2..19c7eb2946 100644
--- a/keyboards/clueboard/2x1800/2021/rules.mk
+++ b/keyboards/clueboard/2x1800/2021/rules.mk
@@ -1 +1,2 @@
-QUANTUM_LIB_SRC += max7219.c spi_master.c
+SPI_DRIVER_REQUIRED = yes
+QUANTUM_LIB_SRC += max7219.c
diff --git a/keyboards/converter/palm_usb/rules.mk b/keyboards/converter/palm_usb/rules.mk
index e02b683d3b..72d9daf6d9 100644
--- a/keyboards/converter/palm_usb/rules.mk
+++ b/keyboards/converter/palm_usb/rules.mk
@@ -14,6 +14,6 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
CUSTOM_MATRIX = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = converter/palm_usb/stowaway
diff --git a/keyboards/converter/sun_usb/rules.mk b/keyboards/converter/sun_usb/rules.mk
index ee54c6cf11..ae20f51b37 100644
--- a/keyboards/converter/sun_usb/rules.mk
+++ b/keyboards/converter/sun_usb/rules.mk
@@ -14,6 +14,6 @@ RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
CUSTOM_MATRIX = yes
SRC += matrix.c led.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = converter/sun_usb/type5
diff --git a/keyboards/dc01/left/rules.mk b/keyboards/dc01/left/rules.mk
index 72485a3dd6..3a9422733c 100644
--- a/keyboards/dc01/left/rules.mk
+++ b/keyboards/dc01/left/rules.mk
@@ -11,5 +11,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = yes # Use custom matrix
-SRC += matrix.c \
- i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/dichotomy/rules.mk b/keyboards/dichotomy/rules.mk
index 040710a460..bfa5252a03 100755
--- a/keyboards/dichotomy/rules.mk
+++ b/keyboards/dichotomy/rules.mk
@@ -14,4 +14,4 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
# # project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/ergodox_ez/rules.mk b/keyboards/ergodox_ez/rules.mk
index dc72f6385c..bba3bd86ae 100644
--- a/keyboards/ergodox_ez/rules.mk
+++ b/keyboards/ergodox_ez/rules.mk
@@ -21,7 +21,7 @@ RGB_MATRIX_ENABLE = no # enable later
# project specific files
SRC += matrix.c \
led_i2c.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
# Disable unsupported hardware
AUDIO_SUPPORTED = no
diff --git a/keyboards/ergodox_stm32/rules.mk b/keyboards/ergodox_stm32/rules.mk
index 5b86324f9a..5481eef1a2 100644
--- a/keyboards/ergodox_stm32/rules.mk
+++ b/keyboards/ergodox_stm32/rules.mk
@@ -16,4 +16,4 @@ CUSTOM_MATRIX = yes # Custom matrix file
UNICODE_ENABLE = yes # Unicode
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/fallacy/rules.mk b/keyboards/fallacy/rules.mk
index 704204983c..7fa230bae2 100755
--- a/keyboards/fallacy/rules.mk
+++ b/keyboards/fallacy/rules.mk
@@ -14,4 +14,4 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC += indicators.c \
drivers/led/issi/is31fl3731-simple.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/fc660c/rules.mk b/keyboards/fc660c/rules.mk
index 52f4ce803d..03a674d668 100644
--- a/keyboards/fc660c/rules.mk
+++ b/keyboards/fc660c/rules.mk
@@ -11,7 +11,7 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
CUSTOM_MATRIX = yes
SRC += matrix.c ad5258.c
diff --git a/keyboards/fc980c/rules.mk b/keyboards/fc980c/rules.mk
index 52f4ce803d..03a674d668 100644
--- a/keyboards/fc980c/rules.mk
+++ b/keyboards/fc980c/rules.mk
@@ -11,7 +11,7 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
# Optimize size but this may cause error "relocation truncated to fit"
#EXTRALDFLAGS = -Wl,--relax
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
CUSTOM_MATRIX = yes
SRC += matrix.c ad5258.c
diff --git a/keyboards/ferris/0_1/rules.mk b/keyboards/ferris/0_1/rules.mk
index 487375928e..f971aa9a48 100644
--- a/keyboards/ferris/0_1/rules.mk
+++ b/keyboards/ferris/0_1/rules.mk
@@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes
LTO_ENABLE = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/ferris/0_2/rules.mk b/keyboards/ferris/0_2/rules.mk
index f3760b7b62..6f67e3dece 100644
--- a/keyboards/ferris/0_2/rules.mk
+++ b/keyboards/ferris/0_2/rules.mk
@@ -16,6 +16,6 @@ NO_USB_STARTUP_CHECK = yes
LTO_ENABLE = no
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = ferris/0_2/base
diff --git a/keyboards/frobiac/blackbowl/rules.mk b/keyboards/frobiac/blackbowl/rules.mk
index 6004c37f9e..4e81c7280c 100644
--- a/keyboards/frobiac/blackbowl/rules.mk
+++ b/keyboards/frobiac/blackbowl/rules.mk
@@ -1,7 +1,7 @@
CUSTOM_MATRIX = lite
# project specific files
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
SRC += matrix.c
PS2_MOUSE_ENABLE = yes
diff --git a/keyboards/gboards/ergotaco/rules.mk b/keyboards/gboards/ergotaco/rules.mk
index 2df8900c2d..6fbefbd22d 100644
--- a/keyboards/gboards/ergotaco/rules.mk
+++ b/keyboards/gboards/ergotaco/rules.mk
@@ -7,4 +7,5 @@ COMMAND_ENABLE = yes
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/gboards/georgi/rules.mk b/keyboards/gboards/georgi/rules.mk
index 5980342669..5b63e269fa 100644
--- a/keyboards/gboards/georgi/rules.mk
+++ b/keyboards/gboards/georgi/rules.mk
@@ -14,4 +14,5 @@ CUSTOM_MATRIX = yes
STENO_ENABLE = yes
LTO_ENABLE = yes
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/gboards/gergo/keymaps/colemak/rules.mk b/keyboards/gboards/gergo/keymaps/colemak/rules.mk
index 3b81fdfa1b..db8d965292 100644
--- a/keyboards/gboards/gergo/keymaps/colemak/rules.mk
+++ b/keyboards/gboards/gergo/keymaps/colemak/rules.mk
@@ -18,7 +18,8 @@ DEBUG_MATRIX = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
ifneq ($(strip $(BALLSTEP)),)
OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
endif
diff --git a/keyboards/gboards/gergo/keymaps/default/rules.mk b/keyboards/gboards/gergo/keymaps/default/rules.mk
index bc2b3cf43b..6f203da1bd 100644
--- a/keyboards/gboards/gergo/keymaps/default/rules.mk
+++ b/keyboards/gboards/gergo/keymaps/default/rules.mk
@@ -18,7 +18,8 @@ DEBUG_MATRIX = yes
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
ifneq ($(strip $(BALLSTEP)),)
OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
endif
diff --git a/keyboards/gboards/gergo/keymaps/germ/rules.mk b/keyboards/gboards/gergo/keymaps/germ/rules.mk
index 0fd941bb53..c100f8ab64 100644
--- a/keyboards/gboards/gergo/keymaps/germ/rules.mk
+++ b/keyboards/gboards/gergo/keymaps/germ/rules.mk
@@ -18,7 +18,8 @@ DEBUG_MATRIX = no
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
ifneq ($(strip $(BALLSTEP)),)
OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
endif
diff --git a/keyboards/gboards/gergo/keymaps/gotham/rules.mk b/keyboards/gboards/gergo/keymaps/gotham/rules.mk
index bc2b3cf43b..6f203da1bd 100644
--- a/keyboards/gboards/gergo/keymaps/gotham/rules.mk
+++ b/keyboards/gboards/gergo/keymaps/gotham/rules.mk
@@ -18,7 +18,8 @@ DEBUG_MATRIX = yes
# know what you're doing.
#
# No touchy, capiche?
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
ifneq ($(strip $(BALLSTEP)),)
OPT_DEFS += -DTRKSTEP=$(strip $(BALLSTEP))
endif
diff --git a/keyboards/gboards/gergo/rules.mk b/keyboards/gboards/gergo/rules.mk
index 195915e431..d789b349da 100644
--- a/keyboards/gboards/gergo/rules.mk
+++ b/keyboards/gboards/gergo/rules.mk
@@ -8,4 +8,4 @@ COMMAND_ENABLE = yes
BOOTMAGIC_ENABLE = yes # Enable Bootmagic Lite
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/gboards/gergoplex/rules.mk b/keyboards/gboards/gergoplex/rules.mk
index adf5cfd2e7..9846c64771 100644
--- a/keyboards/gboards/gergoplex/rules.mk
+++ b/keyboards/gboards/gergoplex/rules.mk
@@ -13,4 +13,4 @@ AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/geistmaschine/macropod/rules.mk b/keyboards/geistmaschine/macropod/rules.mk
index cf2b38601e..53d35b5bc6 100644
--- a/keyboards/geistmaschine/macropod/rules.mk
+++ b/keyboards/geistmaschine/macropod/rules.mk
@@ -2,4 +2,4 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += pca9555.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c \ No newline at end of file
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/glenpickle/chimera_ergo/rules.mk b/keyboards/glenpickle/chimera_ergo/rules.mk
index 32eca4db31..f543b5fd9a 100644
--- a/keyboards/glenpickle/chimera_ergo/rules.mk
+++ b/keyboards/glenpickle/chimera_ergo/rules.mk
@@ -14,4 +14,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/glenpickle/chimera_ls/rules.mk b/keyboards/glenpickle/chimera_ls/rules.mk
index 1ee3fc58f9..706d610653 100644
--- a/keyboards/glenpickle/chimera_ls/rules.mk
+++ b/keyboards/glenpickle/chimera_ls/rules.mk
@@ -14,7 +14,7 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
diff --git a/keyboards/glenpickle/chimera_ortho/rules.mk b/keyboards/glenpickle/chimera_ortho/rules.mk
index 32eca4db31..f543b5fd9a 100644
--- a/keyboards/glenpickle/chimera_ortho/rules.mk
+++ b/keyboards/glenpickle/chimera_ortho/rules.mk
@@ -14,4 +14,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/glenpickle/chimera_ortho_plus/rules.mk b/keyboards/glenpickle/chimera_ortho_plus/rules.mk
index 6b1876f87c..539a2d1004 100644
--- a/keyboards/glenpickle/chimera_ortho_plus/rules.mk
+++ b/keyboards/glenpickle/chimera_ortho_plus/rules.mk
@@ -15,4 +15,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/handwired/dactyl/rules.mk b/keyboards/handwired/dactyl/rules.mk
index 830812f79a..bffd901b04 100644
--- a/keyboards/handwired/dactyl/rules.mk
+++ b/keyboards/handwired/dactyl/rules.mk
@@ -14,5 +14,5 @@ SWAP_HANDS_ENABLE = yes # Allow swapping hands of keyboard
RGBLIGHT_ENABLE = no
# project specific files
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
SRC += matrix.c
diff --git a/keyboards/handwired/dqz11n1g/rules.mk b/keyboards/handwired/dqz11n1g/rules.mk
index 23f6b89cc2..220e353ab7 100644
--- a/keyboards/handwired/dqz11n1g/rules.mk
+++ b/keyboards/handwired/dqz11n1g/rules.mk
@@ -1,7 +1,7 @@
# Keyboard matrix uses shift-registers read via SPI
CUSTOM_MATRIX = lite
SRC += matrix.c
-QUANTUM_LIB_SRC += spi_master.c
+SPI_DRIVER_REQUIRED = yes
# Build Options
# change yes to no to disable
diff --git a/keyboards/handwired/dygma/raise/rules.mk b/keyboards/handwired/dygma/raise/rules.mk
index 761e075500..ecf156629a 100644
--- a/keyboards/handwired/dygma/raise/rules.mk
+++ b/keyboards/handwired/dygma/raise/rules.mk
@@ -19,7 +19,7 @@ CUSTOM_MATRIX = lite
# alternate usb endpoints.
RAW_ENABLE = yes
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
SRC += matrix.c
DEFAULT_FOLDER = handwired/dygma/raise/ansi
diff --git a/keyboards/handwired/frenchdev/rules.mk b/keyboards/handwired/frenchdev/rules.mk
index c310966f1d..e226d0b517 100644
--- a/keyboards/handwired/frenchdev/rules.mk
+++ b/keyboards/handwired/frenchdev/rules.mk
@@ -13,5 +13,5 @@ AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no
# project specific files
-SRC = i2c_master.c \
- matrix.c
+SRC = matrix.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/handwired/lagrange/rules.mk b/keyboards/handwired/lagrange/rules.mk
index 61bfdfa4d3..f4af87851c 100644
--- a/keyboards/handwired/lagrange/rules.mk
+++ b/keyboards/handwired/lagrange/rules.mk
@@ -14,4 +14,5 @@ UNICODE_ENABLE = yes
SPLIT_KEYBOARD = yes
SPLIT_TRANSPORT = custom
-SRC += transport.c spi_master.c
+SRC += transport.c
+SPI_DRIVER_REQUIRED = yes
diff --git a/keyboards/handwired/onekey/kb2040/rules.mk b/keyboards/handwired/onekey/kb2040/rules.mk
index 0e5631b02b..dd68e9d3b0 100644
--- a/keyboards/handwired/onekey/kb2040/rules.mk
+++ b/keyboards/handwired/onekey/kb2040/rules.mk
@@ -1,3 +1 @@
OLED_ENABLE = yes
-
-OPT_DEFS += -DHAL_USE_I2C=TRUE
diff --git a/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk b/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk
index 04498a8831..3dec5cef29 100644
--- a/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk
+++ b/keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk
@@ -1,3 +1,3 @@
CONSOLE_ENABLE = yes
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/handwired/pterodactyl/rules.mk b/keyboards/handwired/pterodactyl/rules.mk
index 9f0cabc750..108e1498a8 100644
--- a/keyboards/handwired/pterodactyl/rules.mk
+++ b/keyboards/handwired/pterodactyl/rules.mk
@@ -18,4 +18,4 @@ CUSTOM_MATRIX = yes
BLUETOOTH_ENABLE = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/hazel/bad_wings/rules.mk b/keyboards/hazel/bad_wings/rules.mk
index 1001af0186..47a188155f 100644
--- a/keyboards/hazel/bad_wings/rules.mk
+++ b/keyboards/hazel/bad_wings/rules.mk
@@ -3,7 +3,7 @@ CAPS_WORD_ENABLE = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += spi_master.c
+SPI_DRIVER_REQUIRED = yes
CUSTOM_MATRIX = lite
POINTING_DEVICE_DRIVER = cirque_pinnacle_spi
diff --git a/keyboards/hotdox/rules.mk b/keyboards/hotdox/rules.mk
index 1088cbc14b..8e11eeabe0 100644
--- a/keyboards/hotdox/rules.mk
+++ b/keyboards/hotdox/rules.mk
@@ -15,5 +15,5 @@ RGBLIGHT_ENABLE = no
# project specific files
SRC = matrix.c \
- i2c_master.c \
left.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/hs60/v2/ansi/rules.mk b/keyboards/hs60/v2/ansi/rules.mk
index a231765dff..bc8cb00131 100644
--- a/keyboards/hs60/v2/ansi/rules.mk
+++ b/keyboards/hs60/v2/ansi/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
- quantum/color.c \
- i2c_master.c
+ quantum/color.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/hs60/v2/hhkb/rules.mk b/keyboards/hs60/v2/hhkb/rules.mk
index a231765dff..bc8cb00131 100644
--- a/keyboards/hs60/v2/hhkb/rules.mk
+++ b/keyboards/hs60/v2/hhkb/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
- quantum/color.c \
- i2c_master.c
+ quantum/color.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/hs60/v2/iso/rules.mk b/keyboards/hs60/v2/iso/rules.mk
index a231765dff..bc8cb00131 100644
--- a/keyboards/hs60/v2/iso/rules.mk
+++ b/keyboards/hs60/v2/iso/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
- quantum/color.c \
- i2c_master.c
+ quantum/color.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/ibm/model_m/mschwingen/rules.mk b/keyboards/ibm/model_m/mschwingen/rules.mk
index 5ccab87d9b..7d81ffe326 100644
--- a/keyboards/ibm/model_m/mschwingen/rules.mk
+++ b/keyboards/ibm/model_m/mschwingen/rules.mk
@@ -19,8 +19,8 @@ DYNAMIC_MACRO_ENABLE = yes
UART_DEBUG = no
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c \
- spi_master.c
+UART_DRIVER_REQUIRED = yes
+SPI_DRIVER_REQUIRED = yes
OPT_DEFS += -DSLEEP_LED_ENABLE # we need our own sleep callbacks to turn of WS2812 LEDs
diff --git a/keyboards/ingrained/rules.mk b/keyboards/ingrained/rules.mk
index 8dd9805257..e9a8002f90 100644
--- a/keyboards/ingrained/rules.mk
+++ b/keyboards/ingrained/rules.mk
@@ -16,4 +16,4 @@ NO_USB_STARTUP_CHECK = yes
LTO_ENABLE = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/kagizaraya/chidori/rules.mk b/keyboards/kagizaraya/chidori/rules.mk
index cbec27a8cb..f94317cf22 100644
--- a/keyboards/kagizaraya/chidori/rules.mk
+++ b/keyboards/kagizaraya/chidori/rules.mk
@@ -16,4 +16,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
SRC += board.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/keebwerk/mega/ansi/rules.mk b/keyboards/keebwerk/mega/ansi/rules.mk
index 5546dc18d4..e257f3063f 100755
--- a/keyboards/keebwerk/mega/ansi/rules.mk
+++ b/keyboards/keebwerk/mega/ansi/rules.mk
@@ -24,4 +24,4 @@ SRC += keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
quantum/color.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/keyboardio/model01/rules.mk b/keyboards/keyboardio/model01/rules.mk
index e653ec5f73..29e1f4fea8 100644
--- a/keyboards/keyboardio/model01/rules.mk
+++ b/keyboards/keyboardio/model01/rules.mk
@@ -9,7 +9,7 @@ COMMAND_ENABLE = no # Commands for debug and configuration
NKRO_ENABLE = no # Enable N-Key Rollover
CUSTOM_MATRIX = yes
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
SRC += leds.c \
matrix.c
diff --git a/keyboards/keyhive/honeycomb/rules.mk b/keyboards/keyhive/honeycomb/rules.mk
index 040710a460..bfa5252a03 100755
--- a/keyboards/keyhive/honeycomb/rules.mk
+++ b/keyboards/keyhive/honeycomb/rules.mk
@@ -14,4 +14,4 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
# # project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk b/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk
index 534a21dbf3..805593ed5b 100644
--- a/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb/rev2/rules.mk
@@ -17,4 +17,4 @@ WS2812_DRIVER_REQUIRED = yes
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk
index b6b9ff1110..d84cbc0bf1 100644
--- a/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk
@@ -20,5 +20,5 @@ RGB_MATRIX_ENABLE = yes
# here manually.
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk
index 5db18e7cfa..92b33edc1f 100644
--- a/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk
+++ b/keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk
@@ -19,5 +19,5 @@ RGB_MATRIX_ENABLE = yes
# here manually.
COMMON_VPATH += $(DRIVER_PATH)/led/issi
SRC += is31fl3733.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
WS2812_DRIVER_REQUIRED = yes
diff --git a/keyboards/ktec/ergodone/rules.mk b/keyboards/ktec/ergodone/rules.mk
index 3ec1a7cf43..d9b0148499 100644
--- a/keyboards/ktec/ergodone/rules.mk
+++ b/keyboards/ktec/ergodone/rules.mk
@@ -3,4 +3,4 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += mcp23018.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/matrix/abelx/rules.mk b/keyboards/matrix/abelx/rules.mk
index 7a5d01e5cb..1c2fc05ffe 100644
--- a/keyboards/matrix/abelx/rules.mk
+++ b/keyboards/matrix/abelx/rules.mk
@@ -45,4 +45,4 @@ NO_USB_STARTUP_CHECK = yes # Disable initialization only when usb is plugged in
CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c tca6424.c aw9523b.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/matrix/m20add/rules.mk b/keyboards/matrix/m20add/rules.mk
index 86bd6b9371..1b005b8c17 100644
--- a/keyboards/matrix/m20add/rules.mk
+++ b/keyboards/matrix/m20add/rules.mk
@@ -29,4 +29,4 @@ RGBLIGHT_ENABLE = yes
CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c tca6424.c rgb_ring.c drivers/led/issi/is31fl3731.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/mechwild/sugarglider/rules.mk b/keyboards/mechwild/sugarglider/rules.mk
index 9cfa6b7797..6fd0836a73 100644
--- a/keyboards/mechwild/sugarglider/rules.mk
+++ b/keyboards/mechwild/sugarglider/rules.mk
@@ -13,7 +13,7 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += mcp23018.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = mechwild/sugarglider/wide_oled
diff --git a/keyboards/mitosis/rules.mk b/keyboards/mitosis/rules.mk
index 6b1876f87c..539a2d1004 100644
--- a/keyboards/mitosis/rules.mk
+++ b/keyboards/mitosis/rules.mk
@@ -15,4 +15,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/molecule/rules.mk b/keyboards/molecule/rules.mk
index 35280e22e3..06a8f490ee 100755
--- a/keyboards/molecule/rules.mk
+++ b/keyboards/molecule/rules.mk
@@ -15,4 +15,4 @@ AUDIO_ENABLE = no # Audio output
POINTING_DEVICE_ENABLE = yes
POINTING_DEVICE_DRIVER = custom
SRC += adns.c
-QUANTUM_LIB_SRC += spi_master.c
+SPI_DRIVER_REQUIRED = yes
diff --git a/keyboards/moon/rules.mk b/keyboards/moon/rules.mk
index 804580d1f9..676f0971a2 100644
--- a/keyboards/moon/rules.mk
+++ b/keyboards/moon/rules.mk
@@ -16,4 +16,4 @@ CUSTOM_MATRIX = yes
VPATH += drivers/gpio
SRC += pca9555.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/moonlander/rules.mk b/keyboards/moonlander/rules.mk
index a96d00f2f1..204c5940e4 100644
--- a/keyboards/moonlander/rules.mk
+++ b/keyboards/moonlander/rules.mk
@@ -17,6 +17,6 @@ RGB_MATRIX_ENABLE = yes
#project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
MOUSE_SHARED_EP = no
diff --git a/keyboards/mt/split75/rules.mk b/keyboards/mt/split75/rules.mk
index f616b9400e..b0c02543b1 100644
--- a/keyboards/mt/split75/rules.mk
+++ b/keyboards/mt/split75/rules.mk
@@ -12,4 +12,4 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
# custom matrix setup
CUSTOM_MATRIX = lite
SRC = matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/neson_design/700e/rules.mk b/keyboards/neson_design/700e/rules.mk
index 6e1439f1f5..5650ed1fee 100644
--- a/keyboards/neson_design/700e/rules.mk
+++ b/keyboards/neson_design/700e/rules.mk
@@ -11,4 +11,5 @@ BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
NO_USB_STARTUP_CHECK = yes
-QUANTUM_LIB_SRC += i2c_master.c drivers/led/issi/is31fl3731.c
+QUANTUM_LIB_SRC += drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/neson_design/n6/rules.mk b/keyboards/neson_design/n6/rules.mk
index 5d8397653e..a3e4abe6cd 100644
--- a/keyboards/neson_design/n6/rules.mk
+++ b/keyboards/neson_design/n6/rules.mk
@@ -10,4 +10,5 @@ NKRO_ENABLE = yes # Enable N-Key Rollover
BACKLIGHT_ENABLE = no # Enable keyboard backlight functionality
RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
-QUANTUM_LIB_SRC += i2c_master.c drivers/led/issi/is31fl3731.c
+QUANTUM_LIB_SRC += drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/novelkeys/nk65/rules.mk b/keyboards/novelkeys/nk65/rules.mk
index e9036ebb61..d71d9a6c4e 100755
--- a/keyboards/novelkeys/nk65/rules.mk
+++ b/keyboards/novelkeys/nk65/rules.mk
@@ -22,7 +22,7 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
- quantum/color.c \
- i2c_master.c
+ quantum/color.c
+I2C_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = novelkeys/nk65/base
diff --git a/keyboards/novelkeys/nk87/rules.mk b/keyboards/novelkeys/nk87/rules.mk
index 288d802054..a0a09c1dab 100755
--- a/keyboards/novelkeys/nk87/rules.mk
+++ b/keyboards/novelkeys/nk87/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
- quantum/color.c \
- i2c_master.c
+ quantum/color.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/nullbitsco/nibble/rules.mk b/keyboards/nullbitsco/nibble/rules.mk
index 0d5d3e2aac..5a1714cc9d 100644
--- a/keyboards/nullbitsco/nibble/rules.mk
+++ b/keyboards/nullbitsco/nibble/rules.mk
@@ -19,4 +19,4 @@ SRC += matrix.c \
common/bitc_led.c \
big_led.c \
common/remote_kb.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/nullbitsco/snap/rules.mk b/keyboards/nullbitsco/snap/rules.mk
index 79ba7d6eb6..2ad88b97c0 100644
--- a/keyboards/nullbitsco/snap/rules.mk
+++ b/keyboards/nullbitsco/snap/rules.mk
@@ -19,5 +19,5 @@ CUSTOM_MATRIX = lite # Split custom matrix
# Project specific files
SRC += common/bitc_led.c \
common/remote_kb.c \
- matrix.c \
- uart.c
+ matrix.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/nullbitsco/tidbit/rules.mk b/keyboards/nullbitsco/tidbit/rules.mk
index 3b7ff078bb..b4a06216bb 100644
--- a/keyboards/nullbitsco/tidbit/rules.mk
+++ b/keyboards/nullbitsco/tidbit/rules.mk
@@ -16,5 +16,5 @@ LTO_ENABLE = yes
# Project specific files
SRC += common/bitc_led.c \
common/remote_kb.c
-QUANTUM_LIB_SRC += i2c_master.c \
- uart.c
+I2C_DRIVER_REQUIRED = yes
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/oddforge/vea/rules.mk b/keyboards/oddforge/vea/rules.mk
index f616b9400e..b0c02543b1 100644
--- a/keyboards/oddforge/vea/rules.mk
+++ b/keyboards/oddforge/vea/rules.mk
@@ -12,4 +12,4 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
# custom matrix setup
CUSTOM_MATRIX = lite
SRC = matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/phoenix/config.h b/keyboards/phoenix/config.h
index 76ac0edf2c..9241950731 100644
--- a/keyboards/phoenix/config.h
+++ b/keyboards/phoenix/config.h
@@ -26,7 +26,6 @@
/* Locking resynchronize hack */
#define LOCKING_RESYNC_ENABLE
-#define HAL_USE_SERIAL TRUE
#define SPLIT_HAND_PIN B9
#define SERIAL_USART_DRIVER SD1
#define SERIAL_USART_TX_PAL_MODE 7
diff --git a/keyboards/phoenix/halconf.h b/keyboards/phoenix/halconf.h
index 2527d38940..95bd6c565f 100644
--- a/keyboards/phoenix/halconf.h
+++ b/keyboards/phoenix/halconf.h
@@ -21,6 +21,8 @@
#pragma once
+#define HAL_USE_SERIAL TRUE
+
#define SERIAL_USB_BUFFERS_SIZE 256
#include_next <halconf.h>
diff --git a/keyboards/redox_w/rules.mk b/keyboards/redox_w/rules.mk
index 32eca4db31..f543b5fd9a 100644
--- a/keyboards/redox_w/rules.mk
+++ b/keyboards/redox_w/rules.mk
@@ -14,4 +14,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/rgbkb/mun/rules.mk b/keyboards/rgbkb/mun/rules.mk
index 18dfc8edf7..4269e3b0a1 100644
--- a/keyboards/rgbkb/mun/rules.mk
+++ b/keyboards/rgbkb/mun/rules.mk
@@ -2,7 +2,7 @@
VPATH += keyboards/rgbkb/common
SRC += touch_encoder.c
SRC += common_oled.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
# Build Options
# change yes to no to disable
diff --git a/keyboards/rgbkb/sol3/rules.mk b/keyboards/rgbkb/sol3/rules.mk
index 9cb54cfa15..227219e302 100644
--- a/keyboards/rgbkb/sol3/rules.mk
+++ b/keyboards/rgbkb/sol3/rules.mk
@@ -2,7 +2,7 @@
VPATH += keyboards/rgbkb/common
SRC += touch_encoder.c
SRC += common_oled.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
# Build Options
# change yes to no to disable
diff --git a/keyboards/satt/comet46/rules.mk b/keyboards/satt/comet46/rules.mk
index fe692cc5c3..0db5166ffa 100644
--- a/keyboards/satt/comet46/rules.mk
+++ b/keyboards/satt/comet46/rules.mk
@@ -14,4 +14,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/sirius/uni660/rev1/rules.mk b/keyboards/sirius/uni660/rev1/rules.mk
index d44567105e..7ac7507269 100644
--- a/keyboards/sirius/uni660/rev1/rules.mk
+++ b/keyboards/sirius/uni660/rev1/rules.mk
@@ -15,4 +15,4 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
diff --git a/keyboards/sirius/uni660/rev2/rules.mk b/keyboards/sirius/uni660/rev2/rules.mk
index b41206636d..791fa054c8 100644
--- a/keyboards/sirius/uni660/rev2/rules.mk
+++ b/keyboards/sirius/uni660/rev2/rules.mk
@@ -15,6 +15,6 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
DEFAULT_FOLDER = sirius/uni660/rev2/ansi
diff --git a/keyboards/spaceholdings/nebula12/rules.mk b/keyboards/spaceholdings/nebula12/rules.mk
index 1c8b41fea7..191a1c0a1b 100755
--- a/keyboards/spaceholdings/nebula12/rules.mk
+++ b/keyboards/spaceholdings/nebula12/rules.mk
@@ -24,4 +24,4 @@ SRC += keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3731.c \
quantum/color.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/spaceholdings/nebula68/rules.mk b/keyboards/spaceholdings/nebula68/rules.mk
index 7880744fff..627f82784e 100755
--- a/keyboards/spaceholdings/nebula68/rules.mk
+++ b/keyboards/spaceholdings/nebula68/rules.mk
@@ -24,4 +24,4 @@ SRC += keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
drivers/led/issi/is31fl3733.c \
quantum/color.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/spiderisland/split78/rules.mk b/keyboards/spiderisland/split78/rules.mk
index edddf67abc..db8262a763 100644
--- a/keyboards/spiderisland/split78/rules.mk
+++ b/keyboards/spiderisland/split78/rules.mk
@@ -12,4 +12,4 @@ RGBLIGHT_ENABLE = no # Enable keyboard RGB underglow
# custom matrix setup
CUSTOM_MATRIX = lite
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/switchplate/southpaw_65/rules.mk b/keyboards/switchplate/southpaw_65/rules.mk
index c6c7f4ef93..89d05c5487 100644
--- a/keyboards/switchplate/southpaw_65/rules.mk
+++ b/keyboards/switchplate/southpaw_65/rules.mk
@@ -17,4 +17,4 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += pca9555.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/sx60/rules.mk b/keyboards/sx60/rules.mk
index a18361a0cd..2f0d22e49f 100755
--- a/keyboards/sx60/rules.mk
+++ b/keyboards/sx60/rules.mk
@@ -13,5 +13,5 @@ RGBLIGHT_ENABLE = no
CUSTOM_MATRIX = yes
# project specific files
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
SRC += matrix.c
diff --git a/keyboards/system76/launch_1/rules.mk b/keyboards/system76/launch_1/rules.mk
index 7dbc07ced0..181976b2dd 100644
--- a/keyboards/system76/launch_1/rules.mk
+++ b/keyboards/system76/launch_1/rules.mk
@@ -23,4 +23,4 @@ LTO_ENABLE = yes # Link-time optimization for smaller binary
# Add System76 EC command interface as well as I2C and USB mux drivers
SRC += system76_ec.c usb_mux.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/telophase/rules.mk b/keyboards/telophase/rules.mk
index 1ee3fc58f9..706d610653 100644
--- a/keyboards/telophase/rules.mk
+++ b/keyboards/telophase/rules.mk
@@ -14,7 +14,7 @@ CUSTOM_MATRIX = lite
# project specific files
SRC += matrix.c
-QUANTUM_LIB_SRC += uart.c
+UART_DRIVER_REQUIRED = yes
# Disable unsupported hardware
RGBLIGHT_SUPPORTED = no
diff --git a/keyboards/tkc/portico/rules.mk b/keyboards/tkc/portico/rules.mk
index 4e382541f4..6bc05372af 100644
--- a/keyboards/tkc/portico/rules.mk
+++ b/keyboards/tkc/portico/rules.mk
@@ -19,4 +19,4 @@ SRC += keyboards/wilba_tech/wt_main.c \
quantum/color.c \
drivers/led/issi/is31fl3731.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/tkc/portico75/keymaps/via/rules.mk b/keyboards/tkc/portico75/keymaps/via/rules.mk
index 3e4e4a229d..1706771222 100644
--- a/keyboards/tkc/portico75/keymaps/via/rules.mk
+++ b/keyboards/tkc/portico75/keymaps/via/rules.mk
@@ -9,4 +9,4 @@ SRC += keyboards/wilba_tech/wt_main.c \
quantum/color.c \
drivers/led/issi/is31fl3741.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/torn/rules.mk b/keyboards/torn/rules.mk
index d2ec5cf6d4..f855a651a5 100644
--- a/keyboards/torn/rules.mk
+++ b/keyboards/torn/rules.mk
@@ -18,4 +18,4 @@ SRC += matrix.c \
mcp23018.c \
torn_encoder.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/touchpad/rules.mk b/keyboards/touchpad/rules.mk
index c22f3a2da5..b9fb83c48c 100644
--- a/keyboards/touchpad/rules.mk
+++ b/keyboards/touchpad/rules.mk
@@ -12,4 +12,5 @@ AUDIO_ENABLE = no # Audio output
RGBLIGHT_ENABLE = no # Enable WS2812 RGB underlight.
CUSTOM_MATRIX = yes
-SRC += matrix.c i2c_master.c
+SRC += matrix.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/viktus/sp111/rules.mk b/keyboards/viktus/sp111/rules.mk
index 0b9b8490de..1be8c7ad68 100644
--- a/keyboards/viktus/sp111/rules.mk
+++ b/keyboards/viktus/sp111/rules.mk
@@ -18,4 +18,4 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += mcp23018.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_kara/rules.mk b/keyboards/wilba_tech/rama_works_kara/rules.mk
index 465bc65d9e..b49711824a 100644
--- a/keyboards/wilba_tech/rama_works_kara/rules.mk
+++ b/keyboards/wilba_tech/rama_works_kara/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_koyu/rules.mk b/keyboards/wilba_tech/rama_works_koyu/rules.mk
index be907583a2..c921fc5c18 100644
--- a/keyboards/wilba_tech/rama_works_koyu/rules.mk
+++ b/keyboards/wilba_tech/rama_works_koyu/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_m10_c/rules.mk b/keyboards/wilba_tech/rama_works_m10_c/rules.mk
index 89e17a01b4..d8a2bae455 100644
--- a/keyboards/wilba_tech/rama_works_m10_c/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m10_c/rules.mk
@@ -21,5 +21,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_m50_a/rules.mk b/keyboards/wilba_tech/rama_works_m50_a/rules.mk
index 89e17a01b4..d8a2bae455 100644
--- a/keyboards/wilba_tech/rama_works_m50_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m50_a/rules.mk
@@ -21,5 +21,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_m60_a/rules.mk b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
index be907583a2..c921fc5c18 100644
--- a/keyboards/wilba_tech/rama_works_m60_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m60_a/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_m65_b/rules.mk b/keyboards/wilba_tech/rama_works_m65_b/rules.mk
index 89e17a01b4..d8a2bae455 100644
--- a/keyboards/wilba_tech/rama_works_m65_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m65_b/rules.mk
@@ -21,5 +21,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_m65_bx/rules.mk b/keyboards/wilba_tech/rama_works_m65_bx/rules.mk
index 89e17a01b4..d8a2bae455 100644
--- a/keyboards/wilba_tech/rama_works_m65_bx/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m65_bx/rules.mk
@@ -21,5 +21,5 @@ OPT_DEFS += -DNO_SUSPEND_POWER_DOWN
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_m6_b/rules.mk b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
index 04a197576f..eff0605d90 100644
--- a/keyboards/wilba_tech/rama_works_m6_b/rules.mk
+++ b/keyboards/wilba_tech/rama_works_m6_b/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3218.c \
- i2c_master.c
+ drivers/led/issi/is31fl3218.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/rama_works_u80_a/rules.mk b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
index 3e1eda9d5e..b262985880 100644
--- a/keyboards/wilba_tech/rama_works_u80_a/rules.mk
+++ b/keyboards/wilba_tech/rama_works_u80_a/rules.mk
@@ -15,5 +15,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/wt60_a/rules.mk b/keyboards/wilba_tech/wt60_a/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt60_a/rules.mk
+++ b/keyboards/wilba_tech/wt60_a/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt60_b/rules.mk b/keyboards/wilba_tech/wt60_b/rules.mk
index a9fcf043e2..397643d372 100644
--- a/keyboards/wilba_tech/wt60_b/rules.mk
+++ b/keyboards/wilba_tech/wt60_b/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/wt60_bx/rules.mk b/keyboards/wilba_tech/wt60_bx/rules.mk
index a9fcf043e2..397643d372 100644
--- a/keyboards/wilba_tech/wt60_bx/rules.mk
+++ b/keyboards/wilba_tech/wt60_bx/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/wt60_c/rules.mk b/keyboards/wilba_tech/wt60_c/rules.mk
index a9fcf043e2..397643d372 100644
--- a/keyboards/wilba_tech/wt60_c/rules.mk
+++ b/keyboards/wilba_tech/wt60_c/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/wt65_a/rules.mk b/keyboards/wilba_tech/wt65_a/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt65_a/rules.mk
+++ b/keyboards/wilba_tech/wt65_a/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt65_b/rules.mk b/keyboards/wilba_tech/wt65_b/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt65_b/rules.mk
+++ b/keyboards/wilba_tech/wt65_b/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_a/rules.mk b/keyboards/wilba_tech/wt75_a/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt75_a/rules.mk
+++ b/keyboards/wilba_tech/wt75_a/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_b/rules.mk b/keyboards/wilba_tech/wt75_b/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt75_b/rules.mk
+++ b/keyboards/wilba_tech/wt75_b/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt75_c/rules.mk b/keyboards/wilba_tech/wt75_c/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt75_c/rules.mk
+++ b/keyboards/wilba_tech/wt75_c/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/wt80_a/rules.mk b/keyboards/wilba_tech/wt80_a/rules.mk
index 3a552128d8..9ca8e8f973 100644
--- a/keyboards/wilba_tech/wt80_a/rules.mk
+++ b/keyboards/wilba_tech/wt80_a/rules.mk
@@ -12,7 +12,7 @@ AUDIO_ENABLE = no # Audio output
# project specific files
SRC = drivers/led/issi/is31fl3736-simple.c \
- i2c_master.c \
quantum/color.c \
keyboards/wilba_tech/wt_mono_backlight.c \
keyboards/wilba_tech/wt_main.c
+I2C_DRIVER_REQUIRED = yes \ No newline at end of file
diff --git a/keyboards/wilba_tech/zeal60/rules.mk b/keyboards/wilba_tech/zeal60/rules.mk
index 4f810f3d32..d1ce11b473 100644
--- a/keyboards/wilba_tech/zeal60/rules.mk
+++ b/keyboards/wilba_tech/zeal60/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/wilba_tech/zeal65/rules.mk b/keyboards/wilba_tech/zeal65/rules.mk
index 4f810f3d32..d1ce11b473 100644
--- a/keyboards/wilba_tech/zeal65/rules.mk
+++ b/keyboards/wilba_tech/zeal65/rules.mk
@@ -22,5 +22,5 @@ CIE1931_CURVE = yes
SRC = keyboards/wilba_tech/wt_main.c \
keyboards/wilba_tech/wt_rgb_backlight.c \
quantum/color.c \
- drivers/led/issi/is31fl3731.c \
- i2c_master.c
+ drivers/led/issi/is31fl3731.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/xelus/dawn60/rev1/rules.mk b/keyboards/xelus/dawn60/rev1/rules.mk
index d4e70bfbec..0a72a60eca 100644
--- a/keyboards/xelus/dawn60/rev1/rules.mk
+++ b/keyboards/xelus/dawn60/rev1/rules.mk
@@ -26,4 +26,4 @@ SRC += keyboards/wilba_tech/wt_main.c \
quantum/color.c \
drivers/led/issi/is31fl3731.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/xelus/dawn60/rev1_qmk/rules.mk b/keyboards/xelus/dawn60/rev1_qmk/rules.mk
index 4a799710d2..edb15fa760 100644
--- a/keyboards/xelus/dawn60/rev1_qmk/rules.mk
+++ b/keyboards/xelus/dawn60/rev1_qmk/rules.mk
@@ -25,6 +25,6 @@ COMMON_VPATH += $(DRIVER_PATH)/issi
# project specific files
SRC += drivers/led/issi/is31fl3731.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
LTO_ENABLE = yes
diff --git a/keyboards/xiudi/xd84/rules.mk b/keyboards/xiudi/xd84/rules.mk
index c6c7f4ef93..89d05c5487 100644
--- a/keyboards/xiudi/xd84/rules.mk
+++ b/keyboards/xiudi/xd84/rules.mk
@@ -17,4 +17,4 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += pca9555.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/xiudi/xd96/rules.mk b/keyboards/xiudi/xd96/rules.mk
index c6c7f4ef93..89d05c5487 100644
--- a/keyboards/xiudi/xd96/rules.mk
+++ b/keyboards/xiudi/xd96/rules.mk
@@ -17,4 +17,4 @@ CUSTOM_MATRIX = lite
VPATH += drivers/gpio
SRC += pca9555.c matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/yiancardesigns/barleycorn/rules.mk b/keyboards/yiancardesigns/barleycorn/rules.mk
index b56efe3ef9..3808b0d3f2 100644
--- a/keyboards/yiancardesigns/barleycorn/rules.mk
+++ b/keyboards/yiancardesigns/barleycorn/rules.mk
@@ -14,4 +14,4 @@ AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = lite
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/yiancardesigns/gingham/rules.mk b/keyboards/yiancardesigns/gingham/rules.mk
index 2fce424de8..cd47b89aed 100644
--- a/keyboards/yiancardesigns/gingham/rules.mk
+++ b/keyboards/yiancardesigns/gingham/rules.mk
@@ -1,5 +1,5 @@
-SRC = matrix.c \
- i2c_master.c
+SRC = matrix.c
+I2C_DRIVER_REQUIRED = yes
# Build Options
# change yes to no to disable
diff --git a/keyboards/yiancardesigns/seigaiha/rules.mk b/keyboards/yiancardesigns/seigaiha/rules.mk
index b56efe3ef9..3808b0d3f2 100644
--- a/keyboards/yiancardesigns/seigaiha/rules.mk
+++ b/keyboards/yiancardesigns/seigaiha/rules.mk
@@ -14,4 +14,4 @@ AUDIO_ENABLE = no # Audio output
CUSTOM_MATRIX = lite
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes
diff --git a/keyboards/ymdk/sp64/rules.mk b/keyboards/ymdk/sp64/rules.mk
index df9380f361..56da806510 100644
--- a/keyboards/ymdk/sp64/rules.mk
+++ b/keyboards/ymdk/sp64/rules.mk
@@ -14,4 +14,4 @@ RGBLIGHT_ENABLE = yes # Enable keyboard RGB underglow
CUSTOM_MATRIX = yes
SRC += matrix.c
-QUANTUM_LIB_SRC += i2c_master.c
+I2C_DRIVER_REQUIRED = yes