# Makefile for staging directory

# fix for build system bug...
obj-$(CONFIG_STAGING)		+= staging.o

obj-y				+= media/
obj-$(CONFIG_SLICOSS)		+= slicoss/
obj-$(CONFIG_PRISM2_USB)	+= wlan-ng/
obj-$(CONFIG_COMEDI)		+= comedi/
obj-$(CONFIG_FB_OLPC_DCON)	+= olpc_dcon/
obj-$(CONFIG_PANEL)		+= panel/
obj-$(CONFIG_RTL8192U)		+= rtl8192u/
obj-$(CONFIG_RTL8192E)		+= rtl8192e/
obj-$(CONFIG_R8712U)		+= rtl8712/
obj-$(CONFIG_R8188EU)		+= rtl8188eu/
obj-$(CONFIG_R8723AU)		+= rtl8723au/
obj-$(CONFIG_RTS5208)		+= rts5208/
obj-$(CONFIG_LINE6_USB)		+= line6/
obj-$(CONFIG_NETLOGIC_XLR_NET)	+= netlogic/
obj-$(CONFIG_OCTEON_ETHERNET)	+= octeon/
obj-$(CONFIG_OCTEON_USB)	+= octeon-usb/
obj-$(CONFIG_VT6655)		+= vt6655/
obj-$(CONFIG_VT6656)		+= vt6656/
obj-$(CONFIG_VME_BUS)		+= vme/
obj-$(CONFIG_IIO)		+= iio/
obj-$(CONFIG_FB_XGI)		+= xgifb/
obj-$(CONFIG_USB_EMXX)		+= emxx_udc/
obj-$(CONFIG_FT1000)		+= ft1000/
obj-$(CONFIG_SPEAKUP)		+= speakup/
obj-$(CONFIG_TOUCHSCREEN_CLEARPAD_TM1217)	+= cptm1217/
obj-$(CONFIG_TOUCHSCREEN_SYNAPTICS_I2C_RMI4)	+= ste_rmi4/
obj-$(CONFIG_MFD_NVEC)		+= nvec/
obj-$(CONFIG_ANDROID)		+= android/
obj-$(CONFIG_STAGING_BOARD)	+= board/
obj-$(CONFIG_USB_WPAN_HCD)	+= ozwpan/
obj-$(CONFIG_WIMAX_GDM72XX)	+= gdm72xx/
obj-$(CONFIG_LTE_GDM724X)	+= gdm724x/
obj-$(CONFIG_FIREWIRE_SERIAL)	+= fwserial/
obj-$(CONFIG_GOLDFISH)		+= goldfish/
obj-$(CONFIG_LUSTRE_FS)		+= lustre/
obj-$(CONFIG_DGNC)			+= dgnc/
obj-$(CONFIG_DGAP)			+= dgap/
obj-$(CONFIG_MTD_SPINAND_MT29F)	+= mt29f_spinand/
obj-$(CONFIG_GS_FPGABOOT)	+= gs_fpgaboot/
obj-$(CONFIG_CRYPTO_SKEIN)	+= skein/
obj-$(CONFIG_UNISYSSPAR)	+= unisys/
obj-$(CONFIG_COMMON_CLK_XLNX_CLKWZRD)	+= clocking-wizard/
