mirror of
https://github.com/BobTheBlinker/android_kernel_motorola_sm6375.git
synced 2026-10-09 21:59:12 -04:00
Support specified seq and extra for various vibrating effect
The first 1 second vibrating would vibrate as a short vibrating by "else if (value < 100 || aw869x->seq != 0)" because default aw869x->seq is 0x01000000. So fix it. Change-Id: I3903ffd745cfeca63a72b5047ad5ad2867af822a Signed-off-by: yangjq <yangjq@lenovo.com> Reviewed-on: https://gerrit.mot.com/1229442 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Jianqi Yang <yangj@motorola.com> Submit-Approved: Jira Key
This commit is contained in:
parent
ba4251d211
commit
04b5986bfb
1 changed files with 9 additions and 9 deletions
|
|
@ -1100,20 +1100,18 @@ static void aw869x_rtp_play(struct aw869x *aw869x, int value)
|
|||
|
||||
static void aw869x_vibrate(struct aw869x *aw869x, int value)
|
||||
{
|
||||
int seq;
|
||||
mutex_lock(&aw869x->lock);
|
||||
|
||||
aw869x_haptic_stop(aw869x);
|
||||
pr_info("%s: value=%d, aw869x->seq=0x%08x\n", __FUNCTION__, value, aw869x->seq);
|
||||
if (value > 0 || aw869x->seq != 0) {
|
||||
if (((aw869x->seq >> ((AW869X_SEQUENCER_SIZE - 1) * 8)) & 0xFF) >= 10) {
|
||||
seq = (aw869x->seq >> ((AW869X_SEQUENCER_SIZE - 1) * 8)) & 0xFF;
|
||||
pr_info("%s: value=%d, seq=%d\n", __FUNCTION__, value, seq);
|
||||
if (value > 0 || seq > 2) {
|
||||
if (seq >= 12)
|
||||
aw869x_rtp_play(aw869x, 1);
|
||||
aw869x->seq = 0;
|
||||
} else if (value < 100 || aw869x->seq != 0) {
|
||||
else if (value < 100 || seq > 2) {
|
||||
aw869x_i2c_write_bits(aw869x, AW869X_REG_PWMDBG,
|
||||
AW869X_BIT_PWMDBG_PWMCLK_MODE_MASK, AW869X_BIT_PWMDBG_PWMCLK_MODE_12KB);
|
||||
#ifdef AW869X_HAPTIC_VBAT_MONITOR
|
||||
aw869x_haptic_set_bst_mode(aw869x, AW869X_HAPTIC_BOOST_MODE);
|
||||
#endif
|
||||
aw869x_haptic_set_bst_vol(aw869x, AW869X_BIT_BSTCFG_BSTVOL_8P75V);
|
||||
//aw869x_haptic_set_peak_cur(aw869x, AW869X_BIT_BSTCFG_PEAKCUR_3P5A);
|
||||
aw869x_haptic_set_gain(aw869x, 0x20);
|
||||
|
|
@ -1130,7 +1128,6 @@ static void aw869x_vibrate(struct aw869x *aw869x, int value)
|
|||
hrtimer_start(&aw869x->timer,
|
||||
ns_to_ktime((u64)value * NSEC_PER_MSEC), HRTIMER_MODE_REL);
|
||||
*/
|
||||
aw869x->seq = 0;
|
||||
} else {
|
||||
aw869x_i2c_write_bits(aw869x, AW869X_REG_PWMDBG,
|
||||
AW869X_BIT_PWMDBG_PWMCLK_MODE_MASK, AW869X_BIT_PWMDBG_PWMCLK_MODE_12KB);
|
||||
|
|
@ -1152,6 +1149,9 @@ static void aw869x_vibrate(struct aw869x *aw869x, int value)
|
|||
}
|
||||
schedule_work(&aw869x->vibrator_work);
|
||||
}
|
||||
/* Restore to default short waveform */
|
||||
if (seq > 2)
|
||||
aw869x->seq = 0;
|
||||
}
|
||||
|
||||
mutex_unlock(&aw869x->lock);
|
||||
|
|
|
|||
Loading…
Reference in a new issue