From 775bfee7af0a642c54dcf7f7c581bfc59eb41996 Mon Sep 17 00:00:00 2001 From: Konstantin Makariev Date: Thu, 12 Jul 2018 09:09:25 -0500 Subject: [PATCH] aw869x: set config explicitly Use explicit boost and PWM clock mode configuration Change-Id: Icaa1e0e0496b29cac522b31e84c71dbacccae94d Signed-off-by: Konstantin Makariev Reviewed-on: https://gerrit.mot.com/1208943 SLTApproved: Slta Waiver SME-Granted: SME Approvals Granted Tested-by: Jira Key Reviewed-by: Jianqi Yang Submit-Approved: Jira Key --- drivers/misc/awinic/aw869x.c | 15 +++++++++------ drivers/misc/awinic/aw869x_reg.h | 6 ++++++ 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/drivers/misc/awinic/aw869x.c b/drivers/misc/awinic/aw869x.c index 1cc4dbfdff02..6c0874bf1a26 100644 --- a/drivers/misc/awinic/aw869x.c +++ b/drivers/misc/awinic/aw869x.c @@ -1059,8 +1059,8 @@ static int aw869x_haptic_init(struct aw869x *aw869x) aw869x_i2c_write_bits(aw869x, AW869X_REG_SYSCTRL, AW869X_BIT_SYSCTRL_WORK_MODE_MASK, AW869X_BIT_SYSCTRL_STANDBY); aw869x_i2c_write(aw869x, AW869X_REG_ANACTRL, 0x01); - //aw869x_i2c_write(aw869x, AW869X_REG_PWMDBG, 0x41); // 24K PWM - + //aw869x_i2c_write_bits(aw869x, AW869X_REG_PWMDBG, + // AW869X_BIT_PWMDBG_PWMCLK_MODE_MASK, AW869X_BIT_PWMDBG_PWMCLK_MODE_24KB); return ret; } @@ -1096,8 +1096,10 @@ static void vibrator_enable( struct timed_output_dev *dev, int value) if (value > 0) { if (value < 100) { - aw869x_i2c_write(aw869x, AW869X_REG_PWMDBG, 0x61); // 48K PWM - aw869x_haptic_set_bst_vol(aw869x, 0x5d); + aw869x_i2c_write_bits(aw869x, AW869X_REG_PWMDBG, + AW869X_BIT_PWMDBG_PWMCLK_MODE_MASK, AW869X_BIT_PWMDBG_PWMCLK_MODE_12KB); + 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); aw869x->seq = 0x01000000; aw869x_haptic_set_que_seq(aw869x, aw869x->seq); @@ -1110,8 +1112,9 @@ static void vibrator_enable( struct timed_output_dev *dev, int value) ns_to_ktime((u64)value * NSEC_PER_MSEC), HRTIMER_MODE_REL); */ } else { - aw869x_i2c_write(aw869x, AW869X_REG_PWMDBG, 0x61); // 12K PWM - aw869x_haptic_set_bst_vol(aw869x, 0x01); + aw869x_i2c_write_bits(aw869x, AW869X_REG_PWMDBG, + AW869X_BIT_PWMDBG_PWMCLK_MODE_MASK, AW869X_BIT_PWMDBG_PWMCLK_MODE_12KB); + aw869x_haptic_set_bst_vol(aw869x, AW869X_BIT_BSTCFG_BSTVOL_6P25V); aw869x_haptic_set_gain(aw869x, 0x0e); aw869x->duration = value; /* wav index config */ diff --git a/drivers/misc/awinic/aw869x_reg.h b/drivers/misc/awinic/aw869x_reg.h index 157fdc2e898e..f6487794e4cb 100644 --- a/drivers/misc/awinic/aw869x_reg.h +++ b/drivers/misc/awinic/aw869x_reg.h @@ -285,4 +285,10 @@ const unsigned char aw869x_reg_access[AW869X_REG_MAX]={ #define AW869X_BIT_BSTCFG_PEAKCUR_2A (1<<0) #define AW869X_BIT_BSTCFG_PEAKCUR_1P5A (0<<0) +// PWMDBG +#define AW869X_BIT_PWMDBG_PWMCLK_MODE_MASK (~(3<<5)) +#define AW869X_BIT_PWMDBG_PWMCLK_MODE_12KB (3<<5) +#define AW869X_BIT_PWMDBG_PWMCLK_MODE_21KB (2<<5) +#define AW869X_BIT_PWMDBG_PWMCLK_MODE_48KB (0<<5) + #endif