diff --git a/arch/arm64/Kconfig b/arch/arm64/Kconfig index d8cff517919e..3915b8ff02e5 100644 --- a/arch/arm64/Kconfig +++ b/arch/arm64/Kconfig @@ -1679,3 +1679,9 @@ source "arch/arm64/kvm/Kconfig" if CRYPTO source "arch/arm64/crypto/Kconfig" endif + +config AF_NOISE_ELIMINATION + bool "For elimnating AF resonance noise" + default n + help + Enable it only for produts that suffering AF resonance noise. diff --git a/drivers/leds/leds-qpnp-vibrator-ldo.c b/drivers/leds/leds-qpnp-vibrator-ldo.c index ed1a722534bc..9837fcd39cf5 100644 --- a/drivers/leds/leds-qpnp-vibrator-ldo.c +++ b/drivers/leds/leds-qpnp-vibrator-ldo.c @@ -37,6 +37,11 @@ #define QPNP_VIB_MAX_PLAY_MS 15000 #define QPNP_VIB_OVERDRIVE_PLAY_MS 30 +#ifdef CONFIG_AF_NOISE_ELIMINATION +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 regmap *regmap; @@ -119,6 +124,14 @@ static inline int qpnp_vib_ldo_enable(struct vib_ldo_chip *chip, bool enable) if (chip->vib_enabled == enable) return 0; +#ifdef CONFIG_AF_NOISE_ELIMINATION + if (chip->vib_play_ms > 80) { + if (enable) + mot_actuator_on_vibrate_start(); + else + mot_actuator_on_vibrate_stop(); + } +#endif ret = regmap_update_bits(chip->regmap, chip->base + QPNP_VIB_LDO_REG_EN_CTL, QPNP_VIB_LDO_EN,