diff --git a/drivers/misc/regulator_vibrator_mmi/Android.mk b/drivers/misc/regulator_vibrator_mmi/Android.mk index acfe6013be05..b1234cdb2a5e 100644 --- a/drivers/misc/regulator_vibrator_mmi/Android.mk +++ b/drivers/misc/regulator_vibrator_mmi/Android.mk @@ -1,6 +1,10 @@ DLKM_DIR := motorola/kernel/modules LOCAL_PATH := $(call my-dir) +ifeq ($(VIBRATOR_NOISE_CAMERA), true) + KBUILD_OPTIONS += CONFIG_VIBRATOR_NOISE_CAMERA=y +endif + include $(CLEAR_VARS) LOCAL_MODULE := regulator_vibrator_mmi.ko LOCAL_MODULE_TAGS := optional diff --git a/drivers/misc/regulator_vibrator_mmi/Kbuild b/drivers/misc/regulator_vibrator_mmi/Kbuild index 42b1f65c5b18..11f504ca1cdb 100644 --- a/drivers/misc/regulator_vibrator_mmi/Kbuild +++ b/drivers/misc/regulator_vibrator_mmi/Kbuild @@ -2,6 +2,10 @@ EXTRA_CFLAGS += -Wall EXTRA_CFLAGS += -I$(ANDROID_BUILD_TOP)/motorola/kernel/modules/include +ifneq ($(filter m y,$(CONFIG_VIBRATOR_NOISE_CAMERA)),) + EXTRA_CFLAGS += -DCONFIG_VIBRATOR_NOISE_CAMERA +endif + regulator_vibrator_mmi-y += moto_regulator_vibrator.o obj-m += regulator_vibrator_mmi.o diff --git a/drivers/misc/regulator_vibrator_mmi/moto_regulator_vibrator.c b/drivers/misc/regulator_vibrator_mmi/moto_regulator_vibrator.c index e27f56433097..ea7d062b6fc6 100644 --- a/drivers/misc/regulator_vibrator_mmi/moto_regulator_vibrator.c +++ b/drivers/misc/regulator_vibrator_mmi/moto_regulator_vibrator.c @@ -26,6 +26,11 @@ #define EXT_VIB_PLAY_MS 5000 #define EXT_VIB_MAX_PLAY_MS 15000 +#ifdef CONFIG_VIBRATOR_NOISE_CAMERA +extern int mot_actuator_on_vibrate_start(void); +extern int mot_actuator_on_vibrate_stop(void); +#endif + struct vib_ldo_chip { struct led_classdev cdev; struct mutex lock; @@ -65,6 +70,9 @@ static void ext_vib_work(struct work_struct *work) if (chip->dis_short_long) { pr_warn("vib in dis short and long, play ms=%lld, dis_longms=%d\n",chip->vib_play_ms, chip->dis_long_ms); if (chip->vib_play_ms > chip->dis_long_ms) { +#ifdef CONFIG_VIBRATOR_NOISE_CAMERA + mot_actuator_on_vibrate_start(); +#endif ret = gpio_direction_output(chip->vcc_2v6_Pin, chip->state); } else { @@ -88,6 +96,13 @@ static void ext_vib_work(struct work_struct *work) } else { if (chip->pwr_by_gpio) { +#ifdef CONFIG_VIBRATOR_NOISE_CAMERA + if (chip->dis_short_long) { + if (chip->vib_play_ms > chip->dis_long_ms) { + mot_actuator_on_vibrate_stop(); + } + } +#endif gpio_direction_output(chip->vcc_2v6_Pin, chip->state); gpio_direction_output(chip->vcc_3v0_Pin, chip->state); }