staging: greybus: Add drivers/staging/greybus to the build
authorGreg Kroah-Hartman <gregkh@google.com>
Mon, 19 Sep 2016 13:46:40 +0000 (15:46 +0200)
committerGreg Kroah-Hartman <gregkh@google.com>
Mon, 19 Sep 2016 14:30:37 +0000 (16:30 +0200)
This adds a proper Kconfig file for drivers/staging/greybus and fixes up
the Makefile to work correctly within the kernel build system (modules
depend on the .config options, etc.)

Signed-off-by: Greg Kroah-Hartman <gregkh@google.com>
drivers/staging/Kconfig
drivers/staging/Makefile
drivers/staging/greybus/Kconfig [new file with mode: 0644]
drivers/staging/greybus/Makefile

index af94764..59829d8 100644 (file)
@@ -104,4 +104,6 @@ source "drivers/staging/i4l/Kconfig"
 
 source "drivers/staging/ks7010/Kconfig"
 
+source "drivers/staging/greybus/Kconfig"
+
 endif # STAGING
index 9f6009d..210fcea 100644 (file)
@@ -41,3 +41,4 @@ obj-$(CONFIG_WILC1000)                += wilc1000/
 obj-$(CONFIG_MOST)             += most/
 obj-$(CONFIG_ISDN_I4L)         += i4l/
 obj-$(CONFIG_KS7010)           += ks7010/
+obj-$(CONFIG_GREYBUS)          += greybus/
diff --git a/drivers/staging/greybus/Kconfig b/drivers/staging/greybus/Kconfig
new file mode 100644 (file)
index 0000000..c169bc3
--- /dev/null
@@ -0,0 +1,219 @@
+menuconfig GREYBUS
+       tristate "Greybus support"
+       depends on SYSFS
+       ---help---
+         This option enables the Greybus driver core.  Greybus is an
+         hardware protocol that was designed to provide Unipro with a
+         sane application layer.  It was originally designed for the
+         ARA project, a module phone system, but has shown up in other
+         phones, and can be tunneled over other busses in order to
+         control hardware devices.
+
+         Say Y here to enable support for these types of drivers.
+
+         To compile this code as a module, chose M here: the module
+         will be called greybus.ko
+
+if GREYBUS
+
+config GREYBUS_ES2
+       tristate "Greybus ES3 USB host controller"
+       depends on USB
+       ---help---
+         Select this option if you have a Toshiba ES3 USB device that
+         acts as a Greybus "host controller".  This device is a bridge
+         from a USB device to a Unipro network.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-es2.ko
+
+config GREYBUS_AUDIO
+       tristate "Greybus Audio Class driver"
+       depends on SOUND
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Audio Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-audio.ko
+
+config GREYBUS_BOOTROM
+       tristate "Greybus Bootrom Class driver"
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Bootrom Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-bootrom.ko
+
+config GREYBUS_CAMERA
+       tristate "Greybus Camera Class driver"
+       depends on MEDIA && LEDS_CLASS_FLASH && BROKEN
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Camera Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-camera.ko
+
+config GREYBUS_FIRMWARE
+       tristate "Greybus Firmware Download Class driver"
+       depends on SPI
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Firmware Download Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-firmware.ko
+
+config GREYBUS_HID
+       tristate "Greybus HID Class driver"
+       depends on HID && INPUT
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus HID Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-hid.ko
+
+config GREYBUS_LIGHT
+       tristate "Greybus LED Class driver"
+       depends on LEDS_CLASS && BROKEN
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus LED Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-led.ko
+
+config GREYBUS_LOG
+       tristate "Greybus Debug Log Class driver"
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Debug Log Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-log.ko
+
+config GREYBUS_LOOPBACK
+       tristate "Greybus Loopback Class driver"
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Debug Log Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-log.ko
+
+config GREYBUS_POWER
+       tristate "Greybus Powersupply Class driver"
+       depends on POWER_SUPPLY
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Powersupply Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-power-supply.ko
+
+config GREYBUS_RAW
+       tristate "Greybus Raw Class driver"
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Raw Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-raw.ko
+
+config GREYBUS_VIBRATOR
+       tristate "Greybus Vibrator Motor Class driver"
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus Vibrator Motor Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-vibrator.ko
+
+menuconfig GREYBUS_BRIDGED_PHY
+       tristate "Greybus Bridged PHY Class drivers"
+       ---help---
+         Select this option to pick from a variety of Greybus Bridged
+         PHY class drivers.  These drivers emulate a number of
+         different "traditional" busses by tunneling them over Greybus.
+         Examples of this include serial, SPI, USB, and others.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-phy.ko
+
+if GREYBUS_BRIDGED_PHY
+
+config GREYBUS_GPIO
+       tristate "Greybus GPIO Bridged PHY driver"
+       depends on GPIO
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus GPIO Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-gpio.ko
+
+config GREYBUS_I2C
+       tristate "Greybus I2C Bridged PHY driver"
+       depends on I2C
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus I2C Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-i2c.ko
+
+config GREYBUS_PWM
+       tristate "Greybus PWM Bridged PHY driver"
+       depends on PWM
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus PWM Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-pwm.ko
+
+config GREYBUS_SDIO
+       tristate "Greybus SDIO Bridged PHY driver"
+       depends on MMC
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus SDIO Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-sdio.ko
+
+config GREYBUS_SPI
+       tristate "Greybus SPI Bridged PHY driver"
+       depends on SPI
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus SPI Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-spi.ko
+
+config GREYBUS_UART
+       tristate "Greybus UART Bridged PHY driver"
+       depends on TTY
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus UART Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-uart.ko
+
+config GREYBUS_USB
+       tristate "Greybus USB Host Bridged PHY driver"
+       depends on USB
+       ---help---
+         Select this option if you have a device that follows the
+         Greybus USB Host Bridged PHY Class specification.
+
+         To compile this code as a module, chose M here: the module
+         will be called gb-usb.ko
+
+endif  # GREYBUS_BRIDGED_PHY
+endif  # GREYBUS
index fa5aaf3..0cc769e 100644 (file)
@@ -1,3 +1,4 @@
+# Greybus core
 greybus-y :=   core.o          \
                debugfs.o       \
                hd.o            \
@@ -13,135 +14,83 @@ greybus-y :=       core.o          \
                timesync.o      \
                timesync_platform.o
 
-gb-gbphy-y := gbphy.o
-
-# Prefix all modules with gb-
-gb-vibrator-y := vibrator.o
-gb-power-supply-y := power_supply.o
-gb-log-y := log.o
-gb-loopback-y := loopback.o
-gb-light-y := light.o
-gb-raw-y := raw.o
-gb-hid-y := hid.o
-gb-es2-y := es2.o
-gb-arche-y := arche-platform.o arche-apb-ctrl.o
-gb-audio-module-y := audio_module.o audio_topology.o
-gb-audio-codec-y := audio_codec.o
-gb-audio-gb-y := audio_gb.o
-gb-audio-apbridgea-y := audio_apbridgea.o
-gb-audio-manager-y += audio_manager.o
-gb-audio-manager-y += audio_manager_module.o
-gb-bootrom-y := bootrom.o
-gb-camera-y := camera.o
-gb-firmware-y := fw-core.o fw-download.o fw-management.o authentication.o
-gb-spilib-y := spilib.o
-gb-sdio-y := sdio.o
-gb-uart-y := uart.o
-gb-pwm-y := pwm.o
-gb-gpio-y := gpio.o
-gb-i2c-y := i2c.o
-gb-usb-y := usb.o
-gb-spi-y := spi.o
-
-obj-m += greybus.o
-obj-m += gb-gbphy.o
-obj-m += gb-vibrator.o
-obj-m += gb-power-supply.o
-obj-m += gb-log.o
-obj-m += gb-loopback.o
-obj-m += gb-light.o
-obj-m += gb-hid.o
-obj-m += gb-raw.o
-obj-m += gb-es2.o
-ifeq ($(CONFIG_USB_HSIC_USB3613),y)
- obj-m += gb-arche.o
-endif
-ifeq ($(CONFIG_ARCH_MSM8994),y)
- obj-m += gb-audio-codec.o
- obj-m += gb-audio-module.o
- obj-m += gb-camera.o
-endif
-obj-m += gb-audio-gb.o
-obj-m += gb-audio-apbridgea.o
-obj-m += gb-audio-manager.o
-obj-m += gb-bootrom.o
-obj-m += gb-firmware.o
-obj-m += gb-spilib.o
-obj-m += gb-sdio.o
-obj-m += gb-uart.o
-obj-m += gb-pwm.o
-obj-m += gb-gpio.o
-obj-m += gb-i2c.o
-obj-m += gb-usb.o
-obj-m += gb-spi.o
-
-KERNELVER              ?= $(shell uname -r)
-KERNELDIR              ?= /lib/modules/$(KERNELVER)/build
-INSTALL_MOD_PATH       ?= /..
-PWD                    := $(shell pwd)
-
-# kernel config option that shall be enable
-CONFIG_OPTIONS_ENABLE := POWER_SUPPLY PWM SYSFS SPI USB SND_SOC MMC LEDS_CLASS INPUT
-
-# kernel config option that shall be disable
-CONFIG_OPTIONS_DISABLE :=
-
-# this only run in kbuild part of the makefile
-ifneq ($(KERNELRELEASE),)
-# This function returns the argument version if current kernel version is minor
-# than the passed version, return 1 if equal or the current kernel version if it
-# is greater than argument version.
-kvers_cmp=$(shell [ "$(KERNELVERSION)" = "$(1)" ] && echo 1 || printf "$(1)\n$(KERNELVERSION)" | sort -V | tail -1)
-
-ifneq ($(call kvers_cmp,"3.19.0"),3.19.0)
-    CONFIG_OPTIONS_ENABLE += LEDS_CLASS_FLASH
-endif
-
-ifneq ($(call kvers_cmp,"4.2.0"),4.2.0)
-    CONFIG_OPTIONS_ENABLE += V4L2_FLASH_LED_CLASS
-endif
-
-$(foreach opt,$(CONFIG_OPTIONS_ENABLE),$(if $(CONFIG_$(opt)),, \
-     $(error CONFIG_$(opt) is disabled in the kernel configuration and must be enable \
-     to continue compilation)))
-$(foreach opt,$(CONFIG_OPTIONS_DISABLE),$(if $(filter m y, $(CONFIG_$(opt))), \
-     $(error CONFIG_$(opt) is enabled in the kernel configuration and must be disable \
-     to continue compilation),))
-endif
-
-# add -Wall to try to catch everything we can.
-ccflags-y := -Wall
+obj-$(CONFIG_GREYBUS)          += greybus.o
 
 # needed for trace events
 ccflags-y += -I$(src)
 
-GB_AUDIO_MANAGER_SYSFS ?= true
-ifeq ($(GB_AUDIO_MANAGER_SYSFS),true)
-gb-audio-manager-y += audio_manager_sysfs.o
-ccflags-y += -DGB_AUDIO_MANAGER_SYSFS
-endif
 
-all: module
-
-tools::
-       $(MAKE) -C tools KERNELDIR=$(realpath $(KERNELDIR))
+# Greybus Host controller drivers
+gb-es2-y := es2.o
 
-module:
-       $(MAKE) -C $(KERNELDIR) M=$(PWD)
+obj-$(CONFIG_GREYBUS_ES2)      += gb-es2.o
+
+# Greybus class drivers
+gb-bootrom-y           := bootrom.o
+gb-camera-y            := camera.o
+gb-firmware-y          := fw-core.o fw-download.o fw-management.o authentication.o
+gb-spilib-y            := spilib.o
+gb-hid-y               := hid.o
+gb-light-y             := light.o
+gb-log-y               := log.o
+gb-loopback-y          := loopback.o
+gb-power-supply-y      := power_supply.o
+gb-raw-y               := raw.o
+gb-vibrator-y          := vibrator.o
+
+obj-$(CONFIG_GREYBUS_BOOTROM)  += gb-bootrom.o
+obj-$(CONFIG_GREYBUS_CAMERA)   += gb-camera.o
+obj-$(CONFIG_GREYBUS_FIRMWARE) += gb-firmware.o gb-spilib.o
+obj-$(CONFIG_GREYBUS_HID)      += gb-hid.o
+obj-$(CONFIG_GREYBUS_LIGHT)    += gb-light.o
+obj-$(CONFIG_GREYBUS_LOG)      += gb-log.o
+obj-$(CONFIG_GREYBUS_LOOPBACK) += gb-loopback.o
+obj-$(CONFIG_GREYBUS_POWER)    += gb-power-supply.o
+obj-$(CONFIG_GREYBUS_RAW)      += gb-raw.o
+obj-$(CONFIG_GREYBUS_VIBRATOR) += gb-vibrator.o
+
+# Greybus Audio is a bunch of modules
+gb-audio-module-y      := audio_module.o audio_topology.o
+gb-audio-codec-y       := audio_codec.o
+gb-audio-gb-y          := audio_gb.o
+gb-audio-apbridgea-y   := audio_apbridgea.o
+gb-audio-manager-y     := audio_manager.o audio_manager_module.o
+
+# Greybus Audio sysfs helpers can be useful when debugging
+#GB_AUDIO_MANAGER_SYSFS ?= true
+#ifeq ($(GB_AUDIO_MANAGER_SYSFS),true)
+#gb-audio-manager-y += audio_manager_sysfs.o
+#ccflags-y += -DGB_AUDIO_MANAGER_SYSFS
+#endif
+
+obj-$(CONFIG_GREYBUS_AUDIO_MSM8994)    += gb-audio-codec.o
+obj-$(CONFIG_GREYBUS_AUDIO_MSM8994)    += gb-audio-module.o
+obj-$(CONFIG_GREYBUS_AUDIO)            += gb-audio-gb.o
+obj-$(CONFIG_GREYBUS_AUDIO)            += gb-audio-apbridgea.o
+obj-$(CONFIG_GREYBUS_AUDIO)            += gb-audio-manager.o
+
+
+# Greybus Bridged PHY drivers
+gb-gbphy-y := gbphy.o
+gb-gpio-y := gpio.o
+gb-i2c-y := i2c.o
+gb-pwm-y := pwm.o
+gb-sdio-y := sdio.o
+gb-spi-y := spi.o
+gb-uart-y := uart.o
+gb-usb-y := usb.o
 
-check:
-       $(MAKE) -C $(KERNELDIR) M=$(PWD) C=2 CF="-D__CHECK_ENDIAN__"
+obj-$(CONFIG_GREYBUS_BRIDGED_PHY)      += gb-gbphy.o
+obj-$(CONFIG_GREYBUS_GPIO)             += gb-gpio.o
+obj-$(CONFIG_GREYBUS_I2C)              += gb-i2c.o
+obj-$(CONFIG_GREYBUS_PWM)              += gb-pwm.o
+obj-$(CONFIG_GREYBUS_SDIO)             += gb-sdio.o
+obj-$(CONFIG_GREYBUS_SPI)              += gb-spi.o
+obj-$(CONFIG_GREYBUS_UART)             += gb-uart.o
+obj-$(CONFIG_GREYBUS_USB)              += gb-usb.o
 
-clean:
-       rm -f *.o *~ core .depend .*.cmd *.ko *.mod.c
-       rm -f Module.markers Module.symvers modules.order
-       rm -rf .tmp_versions Modules.symvers
-       $(MAKE) -C tools clean
 
-coccicheck:
-       $(MAKE) -C $(KERNELDIR) M=$(PWD) coccicheck
+# Greybus Platform driver
+gb-arche-y     := arche-platform.o arche-apb-ctrl.o
 
-install: module
-       mkdir -p $(INSTALL_MOD_PATH)/lib/modules/$(KERNELVER)/kernel/drivers/greybus/
-       cp -f *.ko $(INSTALL_MOD_PATH)/lib/modules/$(KERNELVER)/kernel/drivers/greybus/
-       depmod -b $(INSTALL_MOD_PATH) -a $(KERNELVER)
+obj-$(CONFIG_USB_HSIC_USB3613) += gb-arche.o