dev: qpnp_haptic: add configurable resonator support
Haptic vibrator can have different motor types and different
resonant frequencire for lra. Modify the function to get additional
configuration setting based on target/board.
Change-Id: I8beef5a9d2812a6ab1835c129a74ad99a5eba909
diff --git a/dev/qpnp_haptic/qpnp_haptic.c b/dev/qpnp_haptic/qpnp_haptic.c
index e472dff..51de2e5 100644
--- a/dev/qpnp_haptic/qpnp_haptic.c
+++ b/dev/qpnp_haptic/qpnp_haptic.c
@@ -65,9 +65,7 @@
#define QPNP_HAP_PWM_CAP_MASK 0x03
#define QPNP_HAP_PWM_CAP_13PF 0x01
#define QPNP_HAP_RATE_CFG1_MASK 0xFF
-#define QPNP_HAP_RATE_CFG1_7_0 0x1C
#define QPNP_HAP_RATE_CFG2_MASK 0x0F
-#define QPNP_HAP_RATE_CFG2_11_8 0x04
#define QPNP_HAP_EN_BRAKE_EN_MASK 0x01
#define QPNP_HAP_EN_BRAKING_EN 0x01
#define QPNP_HAP_BRAKE_VMAX_MASK 0xFF
@@ -87,12 +85,13 @@
/* Turn on vibrator */
void pm_vib_turn_on(void)
{
- uint32_t vib_type = VIB_ERM_TYPE;
- vib_type = get_vibration_type();
+ struct qpnp_hap vib_config = {0};
+
+ get_vibration_type(&vib_config);
/* Configure the ACTUATOR TYPE register as ERM*/
pmic_spmi_reg_mask_write(QPNP_HAP_ACT_TYPE_REG,
QPNP_HAP_ACT_TYPE_MASK,
- VIB_ERM_TYPE == vib_type ? QPNP_HAP_ERM
+ VIB_ERM_TYPE == vib_config.vib_type ? QPNP_HAP_ERM
: QPNP_HAP_LRA);
/* Disable auto resonance for ERM */
@@ -129,9 +128,9 @@
/* Configure RATE_CFG1 and RATE_CFG2 registers for haptic rate. */
pmic_spmi_reg_mask_write(QPNP_HAP_RATE_CFG1_REG,
- QPNP_HAP_RATE_CFG1_MASK, QPNP_HAP_RATE_CFG1_7_0);
+ QPNP_HAP_RATE_CFG1_MASK, vib_config.hap_rate_cfg1);
pmic_spmi_reg_mask_write(QPNP_HAP_RATE_CFG2_REG,
- QPNP_HAP_RATE_CFG2_MASK, QPNP_HAP_RATE_CFG2_11_8);
+ QPNP_HAP_RATE_CFG2_MASK, vib_config.hap_rate_cfg2);
/* Configure BRAKE register, PATTERN1 & PATTERN2 as VMAX. */
pmic_spmi_reg_mask_write(QPNP_HAP_EN_CTL2_REG,