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

# Each configuration option enables a list of files.

obj-$(CONFIG_JOYSTICK_A3D)		+= a3d.o
obj-$(CONFIG_JOYSTICK_ADC)		+= adc-joystick.o
obj-$(CONFIG_JOYSTICK_ADI)		+= adi.o
obj-$(CONFIG_JOYSTICK_AMIGA)		+= amijoy.o
obj-$(CONFIG_JOYSTICK_AS5011)		+= as5011-drv.o
as5011-drv-y := as5011.o
obj-$(CONFIG_JOYSTICK_ANALOG)		+= analog.o
obj-$(CONFIG_JOYSTICK_COBRA)		+= cobra.o
obj-$(CONFIG_JOYSTICK_DB9)		+= db9-drv.o
db9-drv-y := db9.o
obj-$(CONFIG_JOYSTICK_FSIA6B)		+= fsia6b-drv.o
fsia6b-drv-y := fsia6b.o
obj-$(CONFIG_JOYSTICK_GAMECON)		+= gamecon-drv.o
gamecon-drv-y := gamecon.o
obj-$(CONFIG_JOYSTICK_GF2K)		+= gf2k.o
obj-$(CONFIG_JOYSTICK_GRIP)		+= grip.o
obj-$(CONFIG_JOYSTICK_GRIP_MP)		+= grip_mp.o
obj-$(CONFIG_JOYSTICK_GUILLEMOT)	+= guillemot.o
obj-$(CONFIG_JOYSTICK_IFORCE)		+= iforce/
obj-$(CONFIG_JOYSTICK_INTERACT)		+= interact.o
obj-$(CONFIG_JOYSTICK_JOYDUMP)		+= joydump.o
obj-$(CONFIG_JOYSTICK_MAGELLAN)		+= magellan-drv.o
magellan-drv-y := magellan.o
obj-$(CONFIG_JOYSTICK_MAPLE)		+= maplecontrol.o
obj-$(CONFIG_JOYSTICK_N64)		+= n64joy.o
obj-$(CONFIG_JOYSTICK_PSXPAD_SPI)	+= psxpad-spi-drv.o
psxpad-spi-drv-y := psxpad-spi.o
obj-$(CONFIG_JOYSTICK_PXRC)		+= pxrc-drv.o
pxrc-drv-y := pxrc.o
obj-$(CONFIG_JOYSTICK_QWIIC)		+= qwiic-joystick-drv.o
qwiic-joystick-drv-y := qwiic-joystick.o
obj-$(CONFIG_JOYSTICK_SENSEHAT)		+= sensehat-joystick-drv.o
sensehat-joystick-drv-y := sensehat-joystick.o
obj-$(CONFIG_JOYSTICK_SIDEWINDER)	+= sidewinder.o
obj-$(CONFIG_JOYSTICK_SPACEBALL)	+= spaceball-drv.o
spaceball-drv-y := spaceball.o
obj-$(CONFIG_JOYSTICK_SPACEORB)		+= spaceorb-drv.o
spaceorb-drv-y := spaceorb.o
obj-$(CONFIG_JOYSTICK_STINGER)		+= stinger-drv.o
stinger-drv-y := stinger.o
obj-$(CONFIG_JOYSTICK_TMDC)		+= tmdc.o
obj-$(CONFIG_JOYSTICK_TURBOGRAFX)	+= turbografx-drv.o
turbografx-drv-y := turbografx.o
obj-$(CONFIG_JOYSTICK_TWIDJOY)		+= twidjoy-drv.o
twidjoy-drv-y := twidjoy.o
obj-$(CONFIG_JOYSTICK_WARRIOR)		+= warrior-drv.o
warrior-drv-y := warrior.o
obj-$(CONFIG_JOYSTICK_WALKERA0701)	+= walkera0701-drv.o
walkera0701-drv-y := walkera0701.o
obj-$(CONFIG_JOYSTICK_XPAD)		+= xpad-drv.o
xpad-drv-y := xpad.o
obj-$(CONFIG_JOYSTICK_ZHENHUA)		+= zhenhua-drv.o
zhenhua-drv-y := zhenhua.o

# ============================================================================
# Rust driver integration
# ============================================================================
# Note: Shim code in vmlinux, drivers only link Rust objects
# Dir structure matches C: drivers/rust/drivers/input/joystick
ifdef CONFIG_RUST_DRIVERS
RUST_DRV := input/joystick
include $(srctree)/drivers/rust/templates/kbuild-rust-driver.mk

# Link Rust objects to driver modules (shim in vmlinux)
sensehat-joystick-drv-y += $(RUST_DRV_OBJ)
as5011-drv-y += $(RUST_DRV_OBJ)
db9-drv-y += $(RUST_DRV_OBJ)
fsia6b-drv-y += $(RUST_DRV_OBJ)
gamecon-drv-y += $(RUST_DRV_OBJ)
magellan-drv-y += $(RUST_DRV_OBJ)
psxpad-spi-drv-y += $(RUST_DRV_OBJ)
pxrc-drv-y += $(RUST_DRV_OBJ)
qwiic-joystick-drv-y += $(RUST_DRV_OBJ)
spaceball-drv-y += $(RUST_DRV_OBJ)
spaceorb-drv-y += $(RUST_DRV_OBJ)
stinger-drv-y += $(RUST_DRV_OBJ)
turbografx-drv-y += $(RUST_DRV_OBJ)
twidjoy-drv-y += $(RUST_DRV_OBJ)
warrior-drv-y += $(RUST_DRV_OBJ)
walkera0701-drv-y += $(RUST_DRV_OBJ)
xpad-drv-y += $(RUST_DRV_OBJ)
zhenhua-drv-y += $(RUST_DRV_OBJ)
# iforce subdir drivers
iforce-drv-y += $(RUST_DRV_OBJ)
iforce-serio-drv-y += $(RUST_DRV_OBJ)
iforce-usb-drv-y += $(RUST_DRV_OBJ)
endif
