~ruther/qmk_firmware

c157c19b81fbd8b516de0eb5e854d278669cff1a — Ryan 1 year, 6 months ago f150258
Dedupe I2C, SPI, UART driver inclusions (#22253)

130 files changed, 284 insertions(+), 249 deletions(-)

M builddefs/common_features.mk
M docs/i2c_driver.md
M docs/spi_driver.md
M docs/uart_driver.md
M keyboards/3w6/rev1/rules.mk
M keyboards/3w6/rev2/rules.mk
M keyboards/40percentclub/ut47/rules.mk
M keyboards/aeboards/satellite/rev1/rules.mk
M keyboards/anavi/knob1/rules.mk
M keyboards/anavi/knobs3/rules.mk
M keyboards/bajjak/rules.mk
M keyboards/barleycorn_smd/rules.mk
M keyboards/bioi/g60/rules.mk
M keyboards/bioi/g60ble/rules.mk
M keyboards/bioi/morgan65/rules.mk
M keyboards/centromere/rules.mk
M keyboards/clueboard/2x1800/2021/rules.mk
M keyboards/converter/palm_usb/rules.mk
M keyboards/converter/sun_usb/rules.mk
M keyboards/dc01/left/rules.mk
M keyboards/dichotomy/rules.mk
M keyboards/ergodox_ez/rules.mk
M keyboards/ergodox_stm32/rules.mk
M keyboards/fallacy/rules.mk
M keyboards/fc660c/rules.mk
M keyboards/fc980c/rules.mk
M keyboards/ferris/0_1/rules.mk
M keyboards/ferris/0_2/rules.mk
M keyboards/frobiac/blackbowl/rules.mk
M keyboards/gboards/ergotaco/rules.mk
M keyboards/gboards/georgi/rules.mk
M keyboards/gboards/gergo/keymaps/colemak/rules.mk
M keyboards/gboards/gergo/keymaps/default/rules.mk
M keyboards/gboards/gergo/keymaps/germ/rules.mk
M keyboards/gboards/gergo/keymaps/gotham/rules.mk
M keyboards/gboards/gergo/rules.mk
M keyboards/gboards/gergoplex/rules.mk
M keyboards/geistmaschine/macropod/rules.mk
M keyboards/glenpickle/chimera_ergo/rules.mk
M keyboards/glenpickle/chimera_ls/rules.mk
M keyboards/glenpickle/chimera_ortho/rules.mk
M keyboards/glenpickle/chimera_ortho_plus/rules.mk
M keyboards/handwired/dactyl/rules.mk
M keyboards/handwired/dqz11n1g/rules.mk
M keyboards/handwired/dygma/raise/rules.mk
M keyboards/handwired/frenchdev/rules.mk
M keyboards/handwired/lagrange/rules.mk
M keyboards/handwired/onekey/kb2040/rules.mk
M keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk
M keyboards/handwired/pterodactyl/rules.mk
M keyboards/hazel/bad_wings/rules.mk
M keyboards/hotdox/rules.mk
M keyboards/hs60/v2/ansi/rules.mk
M keyboards/hs60/v2/hhkb/rules.mk
M keyboards/hs60/v2/iso/rules.mk
M keyboards/ibm/model_m/mschwingen/rules.mk
M keyboards/ingrained/rules.mk
M keyboards/kagizaraya/chidori/rules.mk
M keyboards/keebwerk/mega/ansi/rules.mk
M keyboards/keyboardio/model01/rules.mk
M keyboards/keyhive/honeycomb/rules.mk
M keyboards/kprepublic/bm60hsrgb/rev2/rules.mk
M keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk
M keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk
M keyboards/ktec/ergodone/rules.mk
M keyboards/matrix/abelx/rules.mk
M keyboards/matrix/m20add/rules.mk
M keyboards/mechwild/sugarglider/rules.mk
M keyboards/mitosis/rules.mk
M keyboards/molecule/rules.mk
M keyboards/moon/rules.mk
M keyboards/moonlander/rules.mk
M keyboards/mt/split75/rules.mk
M keyboards/neson_design/700e/rules.mk
M keyboards/neson_design/n6/rules.mk
M keyboards/novelkeys/nk65/rules.mk
M keyboards/novelkeys/nk87/rules.mk
M keyboards/nullbitsco/nibble/rules.mk
M keyboards/nullbitsco/snap/rules.mk
M keyboards/nullbitsco/tidbit/rules.mk
M keyboards/oddforge/vea/rules.mk
M keyboards/phoenix/config.h
M keyboards/phoenix/halconf.h
M keyboards/redox_w/rules.mk
M keyboards/rgbkb/mun/rules.mk
M keyboards/rgbkb/sol3/rules.mk
M keyboards/satt/comet46/rules.mk
M keyboards/sirius/uni660/rev1/rules.mk
M keyboards/sirius/uni660/rev2/rules.mk
M keyboards/spaceholdings/nebula12/rules.mk
M keyboards/spaceholdings/nebula68/rules.mk
M keyboards/spiderisland/split78/rules.mk
M keyboards/switchplate/southpaw_65/rules.mk
M keyboards/sx60/rules.mk
M keyboards/system76/launch_1/rules.mk
M keyboards/telophase/rules.mk
M keyboards/tkc/portico/rules.mk
M keyboards/tkc/portico75/keymaps/via/rules.mk
M keyboards/torn/rules.mk
M keyboards/touchpad/rules.mk
M keyboards/viktus/sp111/rules.mk
M keyboards/wilba_tech/rama_works_kara/rules.mk
M keyboards/wilba_tech/rama_works_koyu/rules.mk
M keyboards/wilba_tech/rama_works_m10_c/rules.mk
M keyboards/wilba_tech/rama_works_m50_a/rules.mk
M keyboards/wilba_tech/rama_works_m60_a/rules.mk
M keyboards/wilba_tech/rama_works_m65_b/rules.mk
M keyboards/wilba_tech/rama_works_m65_bx/rules.mk
M keyboards/wilba_tech/rama_works_m6_b/rules.mk
M keyboards/wilba_tech/rama_works_u80_a/rules.mk
M keyboards/wilba_tech/wt60_a/rules.mk
M keyboards/wilba_tech/wt60_b/rules.mk
M keyboards/wilba_tech/wt60_bx/rules.mk
M keyboards/wilba_tech/wt60_c/rules.mk
M keyboards/wilba_tech/wt65_a/rules.mk
M keyboards/wilba_tech/wt65_b/rules.mk
M keyboards/wilba_tech/wt75_a/rules.mk
M keyboards/wilba_tech/wt75_b/rules.mk
M keyboards/wilba_tech/wt75_c/rules.mk
M keyboards/wilba_tech/wt80_a/rules.mk
M keyboards/wilba_tech/zeal60/rules.mk
M keyboards/wilba_tech/zeal65/rules.mk
M keyboards/xelus/dawn60/rev1/rules.mk
M keyboards/xelus/dawn60/rev1_qmk/rules.mk
M keyboards/xiudi/xd84/rules.mk
M keyboards/xiudi/xd96/rules.mk
M keyboards/yiancardesigns/barleycorn/rules.mk
M keyboards/yiancardesigns/gingham/rules.mk
M keyboards/yiancardesigns/seigaiha/rules.mk
M keyboards/ymdk/sp64/rules.mk
M builddefs/common_features.mk => builddefs/common_features.mk +89 -96
@@ 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

M docs/i2c_driver.md => docs/i2c_driver.md +12 -0
@@ 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

M docs/spi_driver.md => docs/spi_driver.md +12 -0
@@ 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:

M docs/uart_driver.md => docs/uart_driver.md +12 -0
@@ 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:

M keyboards/3w6/rev1/rules.mk => keyboards/3w6/rev1/rules.mk +1 -1
@@ 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

M keyboards/3w6/rev2/rules.mk => keyboards/3w6/rev2/rules.mk +1 -1
@@ 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

M keyboards/40percentclub/ut47/rules.mk => keyboards/40percentclub/ut47/rules.mk +1 -1
@@ 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

M keyboards/aeboards/satellite/rev1/rules.mk => keyboards/aeboards/satellite/rev1/rules.mk +1 -1
@@ 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

M keyboards/anavi/knob1/rules.mk => keyboards/anavi/knob1/rules.mk +0 -2
@@ 1,3 1,1 @@
OLED_ENABLE = yes

OPT_DEFS += -DHAL_USE_I2C=TRUE

M keyboards/anavi/knobs3/rules.mk => keyboards/anavi/knobs3/rules.mk +0 -2
@@ 1,3 1,1 @@
OLED_ENABLE = yes

OPT_DEFS += -DHAL_USE_I2C=TRUE

M keyboards/bajjak/rules.mk => keyboards/bajjak/rules.mk +1 -1
@@ 26,4 26,4 @@ AUDIO_SUPPORTED = no

# project specific files
SRC += matrix.c 
QUANTUM_LIB_SRC += i2c_master.c
I2C_DRIVER_REQUIRED = yes

M keyboards/barleycorn_smd/rules.mk => keyboards/barleycorn_smd/rules.mk +1 -1
@@ 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

M keyboards/bioi/g60/rules.mk => keyboards/bioi/g60/rules.mk +1 -1
@@ 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

M keyboards/bioi/g60ble/rules.mk => keyboards/bioi/g60ble/rules.mk +1 -1
@@ 15,5 15,5 @@ LTO_ENABLE = yes

BLUETOOTH_ENABLE = yes

QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes
SRC += bluetooth_custom.c

M keyboards/bioi/morgan65/rules.mk => keyboards/bioi/morgan65/rules.mk +1 -1
@@ 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

M keyboards/centromere/rules.mk => keyboards/centromere/rules.mk +1 -1
@@ 18,4 18,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/clueboard/2x1800/2021/rules.mk => keyboards/clueboard/2x1800/2021/rules.mk +2 -1
@@ 1,1 1,2 @@
QUANTUM_LIB_SRC += max7219.c spi_master.c
SPI_DRIVER_REQUIRED = yes
QUANTUM_LIB_SRC += max7219.c

M keyboards/converter/palm_usb/rules.mk => keyboards/converter/palm_usb/rules.mk +1 -1
@@ 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

M keyboards/converter/sun_usb/rules.mk => keyboards/converter/sun_usb/rules.mk +1 -1
@@ 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

M keyboards/dc01/left/rules.mk => keyboards/dc01/left/rules.mk +2 -2
@@ 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

M keyboards/dichotomy/rules.mk => keyboards/dichotomy/rules.mk +1 -1
@@ 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

M keyboards/ergodox_ez/rules.mk => keyboards/ergodox_ez/rules.mk +1 -1
@@ 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

M keyboards/ergodox_stm32/rules.mk => keyboards/ergodox_stm32/rules.mk +1 -1
@@ 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

M keyboards/fallacy/rules.mk => keyboards/fallacy/rules.mk +1 -1
@@ 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

M keyboards/fc660c/rules.mk => keyboards/fc660c/rules.mk +1 -1
@@ 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

M keyboards/fc980c/rules.mk => keyboards/fc980c/rules.mk +1 -1
@@ 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

M keyboards/ferris/0_1/rules.mk => keyboards/ferris/0_1/rules.mk +1 -1
@@ 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

M keyboards/ferris/0_2/rules.mk => keyboards/ferris/0_2/rules.mk +1 -1
@@ 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

M keyboards/frobiac/blackbowl/rules.mk => keyboards/frobiac/blackbowl/rules.mk +1 -1
@@ 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

M keyboards/gboards/ergotaco/rules.mk => keyboards/gboards/ergotaco/rules.mk +2 -1
@@ 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

M keyboards/gboards/georgi/rules.mk => keyboards/gboards/georgi/rules.mk +2 -1
@@ 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

M keyboards/gboards/gergo/keymaps/colemak/rules.mk => keyboards/gboards/gergo/keymaps/colemak/rules.mk +2 -1
@@ 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

M keyboards/gboards/gergo/keymaps/default/rules.mk => keyboards/gboards/gergo/keymaps/default/rules.mk +2 -1
@@ 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

M keyboards/gboards/gergo/keymaps/germ/rules.mk => keyboards/gboards/gergo/keymaps/germ/rules.mk +2 -1
@@ 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

M keyboards/gboards/gergo/keymaps/gotham/rules.mk => keyboards/gboards/gergo/keymaps/gotham/rules.mk +2 -1
@@ 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

M keyboards/gboards/gergo/rules.mk => keyboards/gboards/gergo/rules.mk +1 -1
@@ 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

M keyboards/gboards/gergoplex/rules.mk => keyboards/gboards/gergoplex/rules.mk +1 -1
@@ 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

M keyboards/geistmaschine/macropod/rules.mk => keyboards/geistmaschine/macropod/rules.mk +1 -1
@@ 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

M keyboards/glenpickle/chimera_ergo/rules.mk => keyboards/glenpickle/chimera_ergo/rules.mk +1 -1
@@ 14,4 14,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/glenpickle/chimera_ls/rules.mk => keyboards/glenpickle/chimera_ls/rules.mk +1 -1
@@ 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

M keyboards/glenpickle/chimera_ortho/rules.mk => keyboards/glenpickle/chimera_ortho/rules.mk +1 -1
@@ 14,4 14,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/glenpickle/chimera_ortho_plus/rules.mk => keyboards/glenpickle/chimera_ortho_plus/rules.mk +1 -1
@@ 15,4 15,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/handwired/dactyl/rules.mk => keyboards/handwired/dactyl/rules.mk +1 -1
@@ 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

M keyboards/handwired/dqz11n1g/rules.mk => keyboards/handwired/dqz11n1g/rules.mk +1 -1
@@ 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

M keyboards/handwired/dygma/raise/rules.mk => keyboards/handwired/dygma/raise/rules.mk +1 -1
@@ 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

M keyboards/handwired/frenchdev/rules.mk => keyboards/handwired/frenchdev/rules.mk +2 -2
@@ 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

M keyboards/handwired/lagrange/rules.mk => keyboards/handwired/lagrange/rules.mk +2 -1
@@ 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

M keyboards/handwired/onekey/kb2040/rules.mk => keyboards/handwired/onekey/kb2040/rules.mk +0 -2
@@ 1,3 1,1 @@
OLED_ENABLE = yes

OPT_DEFS += -DHAL_USE_I2C=TRUE

M keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk => keyboards/handwired/onekey/keymaps/i2c_scanner/rules.mk +1 -1
@@ 1,3 1,3 @@
CONSOLE_ENABLE = yes

QUANTUM_LIB_SRC += i2c_master.c
I2C_DRIVER_REQUIRED = yes

M keyboards/handwired/pterodactyl/rules.mk => keyboards/handwired/pterodactyl/rules.mk +1 -1
@@ 18,4 18,4 @@ CUSTOM_MATRIX = yes
BLUETOOTH_ENABLE = yes

SRC += matrix.c
QUANTUM_LIB_SRC += i2c_master.c
I2C_DRIVER_REQUIRED = yes

M keyboards/hazel/bad_wings/rules.mk => keyboards/hazel/bad_wings/rules.mk +1 -1
@@ 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

M keyboards/hotdox/rules.mk => keyboards/hotdox/rules.mk +1 -1
@@ 15,5 15,5 @@ RGBLIGHT_ENABLE         = no

# project specific files
SRC =  matrix.c     \
	   i2c_master.c \
       left.c
I2C_DRIVER_REQUIRED = yes

M keyboards/hs60/v2/ansi/rules.mk => keyboards/hs60/v2/ansi/rules.mk +2 -2
@@ 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

M keyboards/hs60/v2/hhkb/rules.mk => keyboards/hs60/v2/hhkb/rules.mk +2 -2
@@ 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

M keyboards/hs60/v2/iso/rules.mk => keyboards/hs60/v2/iso/rules.mk +2 -2
@@ 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

M keyboards/ibm/model_m/mschwingen/rules.mk => keyboards/ibm/model_m/mschwingen/rules.mk +2 -2
@@ 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


M keyboards/ingrained/rules.mk => keyboards/ingrained/rules.mk +1 -1
@@ 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

M keyboards/kagizaraya/chidori/rules.mk => keyboards/kagizaraya/chidori/rules.mk +1 -1
@@ 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

M keyboards/keebwerk/mega/ansi/rules.mk => keyboards/keebwerk/mega/ansi/rules.mk +1 -1
@@ 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

M keyboards/keyboardio/model01/rules.mk => keyboards/keyboardio/model01/rules.mk +1 -1
@@ 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


M keyboards/keyhive/honeycomb/rules.mk => keyboards/keyhive/honeycomb/rules.mk +1 -1
@@ 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

M keyboards/kprepublic/bm60hsrgb/rev2/rules.mk => keyboards/kprepublic/bm60hsrgb/rev2/rules.mk +1 -1
@@ 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

M keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk => keyboards/kprepublic/bm60hsrgb_iso/rev2/rules.mk +1 -1
@@ 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

M keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk => keyboards/kprepublic/bm60hsrgb_poker/rev2/rules.mk +1 -1
@@ 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

M keyboards/ktec/ergodone/rules.mk => keyboards/ktec/ergodone/rules.mk +1 -1
@@ 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

M keyboards/matrix/abelx/rules.mk => keyboards/matrix/abelx/rules.mk +1 -1
@@ 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

M keyboards/matrix/m20add/rules.mk => keyboards/matrix/m20add/rules.mk +1 -1
@@ 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

M keyboards/mechwild/sugarglider/rules.mk => keyboards/mechwild/sugarglider/rules.mk +1 -1
@@ 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


M keyboards/mitosis/rules.mk => keyboards/mitosis/rules.mk +1 -1
@@ 15,4 15,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/molecule/rules.mk => keyboards/molecule/rules.mk +1 -1
@@ 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

M keyboards/moon/rules.mk => keyboards/moon/rules.mk +1 -1
@@ 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

M keyboards/moonlander/rules.mk => keyboards/moonlander/rules.mk +1 -1
@@ 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

M keyboards/mt/split75/rules.mk => keyboards/mt/split75/rules.mk +1 -1
@@ 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

M keyboards/neson_design/700e/rules.mk => keyboards/neson_design/700e/rules.mk +2 -1
@@ 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

M keyboards/neson_design/n6/rules.mk => keyboards/neson_design/n6/rules.mk +2 -1
@@ 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

M keyboards/novelkeys/nk65/rules.mk => keyboards/novelkeys/nk65/rules.mk +2 -2
@@ 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

M keyboards/novelkeys/nk87/rules.mk => keyboards/novelkeys/nk87/rules.mk +2 -2
@@ 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

M keyboards/nullbitsco/nibble/rules.mk => keyboards/nullbitsco/nibble/rules.mk +1 -1
@@ 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

M keyboards/nullbitsco/snap/rules.mk => keyboards/nullbitsco/snap/rules.mk +2 -2
@@ 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

M keyboards/nullbitsco/tidbit/rules.mk => keyboards/nullbitsco/tidbit/rules.mk +2 -2
@@ 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

M keyboards/oddforge/vea/rules.mk => keyboards/oddforge/vea/rules.mk +1 -1
@@ 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

M keyboards/phoenix/config.h => keyboards/phoenix/config.h +0 -1
@@ 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

M keyboards/phoenix/halconf.h => keyboards/phoenix/halconf.h +2 -0
@@ 21,6 21,8 @@

#pragma once

#define HAL_USE_SERIAL TRUE

#define SERIAL_USB_BUFFERS_SIZE 256

#include_next <halconf.h>

M keyboards/redox_w/rules.mk => keyboards/redox_w/rules.mk +1 -1
@@ 14,4 14,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/rgbkb/mun/rules.mk => keyboards/rgbkb/mun/rules.mk +1 -1
@@ 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

M keyboards/rgbkb/sol3/rules.mk => keyboards/rgbkb/sol3/rules.mk +1 -1
@@ 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

M keyboards/satt/comet46/rules.mk => keyboards/satt/comet46/rules.mk +1 -1
@@ 14,4 14,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/sirius/uni660/rev1/rules.mk => keyboards/sirius/uni660/rev1/rules.mk +1 -1
@@ 15,4 15,4 @@ CUSTOM_MATRIX = lite

# project specific files
SRC += matrix.c
QUANTUM_LIB_SRC += uart.c
UART_DRIVER_REQUIRED = yes

M keyboards/sirius/uni660/rev2/rules.mk => keyboards/sirius/uni660/rev2/rules.mk +1 -1
@@ 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

M keyboards/spaceholdings/nebula12/rules.mk => keyboards/spaceholdings/nebula12/rules.mk +1 -1
@@ 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

M keyboards/spaceholdings/nebula68/rules.mk => keyboards/spaceholdings/nebula68/rules.mk +1 -1
@@ 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

M keyboards/spiderisland/split78/rules.mk => keyboards/spiderisland/split78/rules.mk +1 -1
@@ 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

M keyboards/switchplate/southpaw_65/rules.mk => keyboards/switchplate/southpaw_65/rules.mk +1 -1
@@ 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

M keyboards/sx60/rules.mk => keyboards/sx60/rules.mk +1 -1
@@ 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

M keyboards/system76/launch_1/rules.mk => keyboards/system76/launch_1/rules.mk +1 -1
@@ 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

M keyboards/telophase/rules.mk => keyboards/telophase/rules.mk +1 -1
@@ 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

M keyboards/tkc/portico/rules.mk => keyboards/tkc/portico/rules.mk +1 -1
@@ 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

M keyboards/tkc/portico75/keymaps/via/rules.mk => keyboards/tkc/portico75/keymaps/via/rules.mk +1 -1
@@ 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

M keyboards/torn/rules.mk => keyboards/torn/rules.mk +1 -1
@@ 18,4 18,4 @@ SRC += matrix.c \
    mcp23018.c \
    torn_encoder.c

QUANTUM_LIB_SRC += i2c_master.c
I2C_DRIVER_REQUIRED = yes

M keyboards/touchpad/rules.mk => keyboards/touchpad/rules.mk +2 -1
@@ 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

M keyboards/viktus/sp111/rules.mk => keyboards/viktus/sp111/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/rama_works_kara/rules.mk => keyboards/wilba_tech/rama_works_kara/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_koyu/rules.mk => keyboards/wilba_tech/rama_works_koyu/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_m10_c/rules.mk => keyboards/wilba_tech/rama_works_m10_c/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_m50_a/rules.mk => keyboards/wilba_tech/rama_works_m50_a/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_m60_a/rules.mk => keyboards/wilba_tech/rama_works_m60_a/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_m65_b/rules.mk => keyboards/wilba_tech/rama_works_m65_b/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_m65_bx/rules.mk => keyboards/wilba_tech/rama_works_m65_bx/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_m6_b/rules.mk => keyboards/wilba_tech/rama_works_m6_b/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/rama_works_u80_a/rules.mk => keyboards/wilba_tech/rama_works_u80_a/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/wt60_a/rules.mk => keyboards/wilba_tech/wt60_a/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/wt60_b/rules.mk => keyboards/wilba_tech/wt60_b/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/wt60_bx/rules.mk => keyboards/wilba_tech/wt60_bx/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/wt60_c/rules.mk => keyboards/wilba_tech/wt60_c/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/wt65_a/rules.mk => keyboards/wilba_tech/wt65_a/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/wt65_b/rules.mk => keyboards/wilba_tech/wt65_b/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/wt75_a/rules.mk => keyboards/wilba_tech/wt75_a/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/wt75_b/rules.mk => keyboards/wilba_tech/wt75_b/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/wt75_c/rules.mk => keyboards/wilba_tech/wt75_c/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/wt80_a/rules.mk => keyboards/wilba_tech/wt80_a/rules.mk +1 -1
@@ 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

M keyboards/wilba_tech/zeal60/rules.mk => keyboards/wilba_tech/zeal60/rules.mk +2 -2
@@ 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

M keyboards/wilba_tech/zeal65/rules.mk => keyboards/wilba_tech/zeal65/rules.mk +2 -2
@@ 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

M keyboards/xelus/dawn60/rev1/rules.mk => keyboards/xelus/dawn60/rev1/rules.mk +1 -1
@@ 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

M keyboards/xelus/dawn60/rev1_qmk/rules.mk => keyboards/xelus/dawn60/rev1_qmk/rules.mk +1 -1
@@ 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

M keyboards/xiudi/xd84/rules.mk => keyboards/xiudi/xd84/rules.mk +1 -1
@@ 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

M keyboards/xiudi/xd96/rules.mk => keyboards/xiudi/xd96/rules.mk +1 -1
@@ 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

M keyboards/yiancardesigns/barleycorn/rules.mk => keyboards/yiancardesigns/barleycorn/rules.mk +1 -1
@@ 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

M keyboards/yiancardesigns/gingham/rules.mk => keyboards/yiancardesigns/gingham/rules.mk +2 -2
@@ 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

M keyboards/yiancardesigns/seigaiha/rules.mk => keyboards/yiancardesigns/seigaiha/rules.mk +1 -1
@@ 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

M keyboards/ymdk/sp64/rules.mk => keyboards/ymdk/sp64/rules.mk +1 -1
@@ 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

Do not follow this link