# SPDX-License-Identifier: GPL-2.0
#
# Makefile for the input core drivers.
#

# Each configuration option enables a list of files.

# Drivers without Rust shims (always compiled from original C)
obj-$(CONFIG_KEYBOARD_ADC)		    += adc-keys.o
obj-$(CONFIG_KEYBOARD_ATKBD)		+= atkbd.o
obj-$(CONFIG_KEYBOARD_ADP5520)		+= adp5520-keys.o
obj-$(CONFIG_KEYBOARD_AMIGA)		+= amikbd.o
obj-$(CONFIG_KEYBOARD_APPLESPI)		+= applespi.o
obj-$(CONFIG_KEYBOARD_ATARI)		+= atakbd.o
obj-$(CONFIG_KEYBOARD_CLPS711X)		+= clps711x-keypad.o
obj-$(CONFIG_KEYBOARD_CROS_EC)		+= cros_ec_keyb.o
obj-$(CONFIG_KEYBOARD_EP93XX)		+= ep93xx_keypad.o
obj-$(CONFIG_KEYBOARD_GOLDFISH_EVENTS)	+= goldfish_events.o
obj-$(CONFIG_KEYBOARD_HIL)	    	+= hil_kbd.o
obj-$(CONFIG_KEYBOARD_HIL_OLD)		+= hilkbd.o
obj-$(CONFIG_KEYBOARD_IPAQ_MICRO)	+= ipaq-micro-keys.o
obj-$(CONFIG_KEYBOARD_IQS62X)		+= iqs62x-keys.o
obj-$(CONFIG_KEYBOARD_IMX)	    	+= imx_keypad.o
obj-$(CONFIG_KEYBOARD_IMX_SC_KEY)	+= imx_sc_key.o
obj-$(CONFIG_KEYBOARD_HP6XX)		+= jornada680_kbd.o
obj-$(CONFIG_KEYBOARD_HP7XX)		+= jornada720_kbd.o
obj-$(CONFIG_KEYBOARD_LOCOMO)		+= locomokbd.o
obj-$(CONFIG_KEYBOARD_LPC32XX)		+= lpc32xx-keys.o
obj-$(CONFIG_KEYBOARD_MAPLE)		+= maple_keyb.o
obj-$(CONFIG_KEYBOARD_MT6779)		+= mt6779-keypad.o
obj-$(CONFIG_KEYBOARD_MTK_PMIC) 	+= mtk-pmic-keys.o
obj-$(CONFIG_KEYBOARD_NOMADIK)		+= nomadik-ske-keypad.o
obj-$(CONFIG_KEYBOARD_NSPIRE)		+= nspire-keypad.o
obj-$(CONFIG_KEYBOARD_OMAP)	     	+= omap-keypad.o
obj-$(CONFIG_KEYBOARD_OMAP4)		+= omap4-keypad.o
obj-$(CONFIG_KEYBOARD_PHYTIUM)		+= phytium-keypad.o
obj-$(CONFIG_KEYBOARD_PMIC8XXX)		+= pmic8xxx-keypad.o
obj-$(CONFIG_KEYBOARD_PXA27x)		+= pxa27x_keypad.o
obj-$(CONFIG_KEYBOARD_SH_KEYSC)		+= sh_keysc.o
obj-$(CONFIG_KEYBOARD_SNVS_PWRKEY)	+= snvs_pwrkey.o
obj-$(CONFIG_KEYBOARD_SPEAR)		+= spear-keyboard.o
obj-$(CONFIG_KEYBOARD_STMPE)		+= stmpe-keypad.o
obj-$(CONFIG_KEYBOARD_ST_KEYSCAN)	+= st-keyscan.o
obj-$(CONFIG_KEYBOARD_SUN4I_LRADC)	+= sun4i-lradc-keys.o
obj-$(CONFIG_KEYBOARD_TC3589X)		+= tc3589x-keypad.o
obj-$(CONFIG_KEYBOARD_TEGRA)		+= tegra-kbc.o
obj-$(CONFIG_KEYBOARD_TWL4030)		+= twl4030_keypad.o

# Drivers with Rust shims: compile original C when CONFIG_RUST_DRIVERS is not set
ifndef CONFIG_RUST_DRIVERS
obj-$(CONFIG_KEYBOARD_ADP5588)		+= adp5588-keys.o
obj-$(CONFIG_KEYBOARD_ADP5589)		+= adp5589-keys.o
obj-$(CONFIG_KEYBOARD_BCM)	    	+= bcm-keypad.o
obj-$(CONFIG_KEYBOARD_CAP11XX)		+= cap11xx.o
obj-$(CONFIG_KEYBOARD_CYPRESS_SF)	+= cypress-sf.o
obj-$(CONFIG_KEYBOARD_DLINK_DIR685)	+= dlink-dir685-touchkeys.o
obj-$(CONFIG_KEYBOARD_GPIO)		    += gpio_keys.o
obj-$(CONFIG_KEYBOARD_GPIO_POLLED)	+= gpio_keys_polled.o
obj-$(CONFIG_KEYBOARD_LKKBD)		+= lkkbd.o
obj-$(CONFIG_KEYBOARD_LM8323)		+= lm8323.o
obj-$(CONFIG_KEYBOARD_LM8333)		+= lm8333.o
obj-$(CONFIG_KEYBOARD_MATRIX)		+= matrix_keypad.o
obj-$(CONFIG_KEYBOARD_MAX7359)		+= max7359_keypad.o
obj-$(CONFIG_KEYBOARD_MCS)		    += mcs_touchkey.o
obj-$(CONFIG_KEYBOARD_MPR121)		+= mpr121_touchkey.o
obj-$(CONFIG_KEYBOARD_NEWTON)		+= newtonkbd.o
obj-$(CONFIG_KEYBOARD_OPENCORES)	+= opencores-kbd.o
obj-$(CONFIG_KEYBOARD_PINEPHONE)	+= pinephone-keyboard.o
obj-$(CONFIG_KEYBOARD_QT1050)		+= qt1050.o
obj-$(CONFIG_KEYBOARD_QT1070)		+= qt1070.o
obj-$(CONFIG_KEYBOARD_QT2160)		+= qt2160.o
obj-$(CONFIG_KEYBOARD_SAMSUNG)		+= samsung-keypad.o
obj-$(CONFIG_KEYBOARD_STOWAWAY)		+= stowaway.o
obj-$(CONFIG_KEYBOARD_SUNKBD)		+= sunkbd.o
obj-$(CONFIG_KEYBOARD_TCA6416)		+= tca6416-keypad.o
obj-$(CONFIG_KEYBOARD_TCA8418)		+= tca8418_keypad.o
obj-$(CONFIG_KEYBOARD_TM2_TOUCHKEY)	+= tm2-touchkey.o
obj-$(CONFIG_KEYBOARD_XTKBD)		+= xtkbd.o
endif

# Rust driver integration
ifdef CONFIG_RUST_DRIVERS
RUST_DRV := input/keyboard
include $(srctree)/drivers/rust/templates/kbuild-rust-driver.mk

obj-$(CONFIG_KEYBOARD_ADP5588)		+= adp5588-keys-drv.o
adp5588-keys-drv-y := shim/adp5588-keys_shim.o
adp5588-keys-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_ADP5589)		+= adp5589-keys-drv.o
adp5589-keys-drv-y := shim/adp5589-keys_shim.o
adp5589-keys-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_ATKBD)		+= atkbd-drv.o
atkbd-drv-y := shim/atkbd_shim.o
atkbd-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_BCM)	    	+= bcm-keypad-drv.o
bcm-keypad-drv-y := shim/bcm-keypad_shim.o
bcm-keypad-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_CAP11XX)		+= cap11xx-drv.o
cap11xx-drv-y := shim/cap11xx_shim.o
cap11xx-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_CYPRESS_SF)	+= cypress-sf-drv.o
cypress-sf-drv-y := shim/cypress-sf_shim.o
cypress-sf-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_DLINK_DIR685)	+= dlink-dir685-touchkeys-drv.o
dlink-dir685-touchkeys-drv-y := shim/dlink-dir685-touchkeys_shim.o
dlink-dir685-touchkeys-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_GPIO)		    += gpio_keys-drv.o
gpio_keys-drv-y := shim/gpio_keys_shim.o
gpio_keys-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_GPIO_POLLED)	+= gpio_keys_polled-drv.o
gpio_keys_polled-drv-y := shim/gpio_keys_polled_shim.o
gpio_keys_polled-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_LKKBD)		+= lkkbd-drv.o
lkkbd-drv-y := shim/lkkbd_shim.o
lkkbd-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_LM8323)		+= lm8323-drv.o
lm8323-drv-y := shim/lm8323_shim.o
lm8323-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_LM8333)		+= lm8333-drv.o
lm8333-drv-y := shim/lm8333_shim.o
lm8333-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_MATRIX)		+= matrix_keypad-drv.o
matrix_keypad-drv-y := shim/matrix_keypad_shim.o
matrix_keypad-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_MAX7359)		+= max7359_keypad-drv.o
max7359_keypad-drv-y := shim/max7359_keypad_shim.o
max7359_keypad-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_MCS)		    += mcs_touchkey-drv.o
mcs_touchkey-drv-y := shim/mcs_touchkey_shim.o
mcs_touchkey-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_MPR121)		+= mpr121_touchkey-drv.o
mpr121_touchkey-drv-y := shim/mpr121_touchkey_shim.o
mpr121_touchkey-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_NEWTON)		+= newtonkbd-drv.o
newtonkbd-drv-y := shim/newtonkbd_shim.o
newtonkbd-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_OPENCORES)	+= opencores-kbd-drv.o
opencores-kbd-drv-y := shim/opencores-kbd_shim.o
opencores-kbd-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_PINEPHONE)	+= pinephone-keyboard-drv.o
pinephone-keyboard-drv-y := shim/pinephone-keyboard_shim.o
pinephone-keyboard-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_QT1050)		+= qt1050-drv.o
qt1050-drv-y := shim/qt1050_shim.o
qt1050-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_QT1070)		+= qt1070-drv.o
qt1070-drv-y := shim/qt1070_shim.o
qt1070-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_QT2160)		+= qt2160-drv.o
qt2160-drv-y := shim/qt2160_shim.o
qt2160-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_SAMSUNG)		+= samsung-keypad-drv.o
samsung-keypad-drv-y := shim/samsung-keypad_shim.o
samsung-keypad-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_STOWAWAY)		+= stowaway-drv.o
stowaway-drv-y := shim/stowaway_shim.o
stowaway-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_SUNKBD)		+= sunkbd-drv.o
sunkbd-drv-y := shim/sunkbd_shim.o
sunkbd-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_TCA6416)		+= tca6416-keypad-drv.o
tca6416-keypad-drv-y := shim/tca6416-keypad_shim.o
tca6416-keypad-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_TCA8418)		+= tca8418_keypad-drv.o
tca8418_keypad-drv-y := shim/tca8418_keypad_shim.o
tca8418_keypad-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_TM2_TOUCHKEY)	+= tm2-touchkey-drv.o
tm2-touchkey-drv-y := shim/tm2-touchkey_shim.o
tm2-touchkey-drv-y += $(RUST_DRV_OBJ)

obj-$(CONFIG_KEYBOARD_XTKBD)		+= xtkbd-drv.o
xtkbd-drv-y := shim/xtkbd_shim.o
xtkbd-drv-y += $(RUST_DRV_OBJ)
endif
