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

# Each configuration option enables a list of files.

# 仅用于Amiga计算机
obj-$(CONFIG_MOUSE_AMIGA)		+= amimouse.o
# 仅用于Atari计算机
obj-$(CONFIG_MOUSE_ATARI)		+= atarimouse.o
# InPort/MS/ATIXL 总线鼠标是 x86 架构 ISA 总线上的旧硬件
obj-$(CONFIG_MOUSE_INPORT)		+= inport.o
# 依赖ISA总线，但 arm64 不支持ISA总线
obj-$(CONFIG_MOUSE_LOGIBM)		+= logibm.o
# SEGA Dreamcast 平台
obj-$(CONFIG_MOUSE_MAPLE)		+= maplemouse.o
# 仅用于NavPoint PXA27x处理器
obj-$(CONFIG_MOUSE_NAVPOINT_PXA27x)	+= navpoint.o
# 依赖ISA（x86 架构的 ISA 总线）
obj-$(CONFIG_MOUSE_PC110PAD)		+= pc110pad.o
# Acorn RiscPC 计算机平台（ARM 架构，但不是 arm64）
obj-$(CONFIG_MOUSE_RISCPC)		+= rpcmouse.o


# Rust 驱动配置（统一处理）
ifdef CONFIG_RUST_DRIVERS
  # Rust 混合模式：需要将 Rust 对象也链接进来
  RUST_DRV := input/mouse
  include $(srctree)/drivers/rust/templates/kbuild-rust-driver.mk

  obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch-drv.o
  appletouch-drv-y := appletouch.o $(RUST_DRV_OBJ)

  obj-$(CONFIG_MOUSE_BCM5974) += bcm5974-drv.o
  bcm5974-drv-y := bcm5974.o $(RUST_DRV_OBJ)

  obj-$(CONFIG_MOUSE_CYAPA) += cyapatp-drv.o
  cyapatp-drv-y := cyapa.o $(RUST_DRV_OBJ)
else
  obj-$(CONFIG_MOUSE_APPLETOUCH) += appletouch.o
  obj-$(CONFIG_MOUSE_BCM5974) += bcm5974.o
  obj-$(CONFIG_MOUSE_CYAPA) += cyapatp.o
  # cyapatp 对象文件定义（仅非 Rust 模式使用）
  cyapatp-objs := cyapa.o cyapa_gen3.o cyapa_gen5.o cyapa_gen6.o
endif
obj-$(CONFIG_MOUSE_ELAN_I2C)		+= elan_i2c.o
obj-$(CONFIG_MOUSE_GPIO)		+= gpio_mouse.o
obj-$(CONFIG_MOUSE_PS2)			+= psmouse.o
obj-$(CONFIG_MOUSE_SERIAL)		+= sermouse.o
obj-$(CONFIG_MOUSE_SYNAPTICS_I2C)	+= synaptics_i2c.o
obj-$(CONFIG_MOUSE_SYNAPTICS_USB)	+= synaptics_usb.o
obj-$(CONFIG_MOUSE_VSXXXAA)		+= vsxxxaa.o
psmouse-objs := psmouse-base.o synaptics.o focaltech.o

psmouse-$(CONFIG_MOUSE_PS2_ALPS)	+= alps.o
psmouse-$(CONFIG_MOUSE_PS2_BYD)		+= byd.o
psmouse-$(CONFIG_MOUSE_PS2_ELANTECH)	+= elantech.o
# 要求x86架构
psmouse-$(CONFIG_MOUSE_PS2_OLPC)	+= hgpk.o
psmouse-$(CONFIG_MOUSE_PS2_LOGIPS2PP)	+= logips2pp.o
# 要求x86架构
psmouse-$(CONFIG_MOUSE_PS2_LIFEBOOK)	+= lifebook.o
psmouse-$(CONFIG_MOUSE_PS2_SENTELIC)	+= sentelic.o
psmouse-$(CONFIG_MOUSE_PS2_TRACKPOINT)	+= trackpoint.o
psmouse-$(CONFIG_MOUSE_PS2_TOUCHKIT)	+= touchkit_ps2.o
psmouse-$(CONFIG_MOUSE_PS2_CYPRESS)	+= cypress_ps2.o
# 要求x86架构
psmouse-$(CONFIG_MOUSE_PS2_VMMOUSE)	+= vmmouse.o

psmouse-$(CONFIG_MOUSE_PS2_SMBUS)	+= psmouse-smbus.o

elan_i2c-objs := elan_i2c_core.o
elan_i2c-$(CONFIG_MOUSE_ELAN_I2C_I2C)	+= elan_i2c_i2c.o
elan_i2c-$(CONFIG_MOUSE_ELAN_I2C_SMBUS)	+= elan_i2c_smbus.o
