aw8697: improve latency

When updating register value by mask, avoid write transfer when old
and ne values are identical.

Change-Id: Ie9a1a51684b106ee05b893805d2a3a468aa1b812
Signed-off-by: Konstantin Makariev <hcv867@motorola.com>
Reviewed-on: https://gerrit.mot.com/1701667
SLTApproved: Slta Waiver
SME-Granted: SME Approvals Granted
Tested-by: Jira Key
Reviewed-by: Ryan Lattrel <ryanl@motorola.com>
Reviewed-by: Igor Kovalenko <igork@motorola.com>
Submit-Approved: Jira Key
This commit is contained in:
Konstantin Makariev 2020-07-22 14:05:39 -05:00 • committed by Konstantin Makariev
commit 34aa364e6c

View file

@ -196,12 +196,15 @@ static int aw8697_i2c_write_bits(struct aw8697 *aw8697,
unsigned char reg_addr, unsigned int mask,
unsigned char reg_data)
{
unsigned char reg_val = 0;
unsigned char oval = 0;
unsigned char nval;
aw8697_i2c_read(aw8697, reg_addr, &reg_val);
reg_val &= mask;
reg_val |= reg_data;
aw8697_i2c_write(aw8697, reg_addr, reg_val);
aw8697_i2c_read(aw8697, reg_addr, &oval);
nval = oval;
nval &= mask;
nval |= reg_data;
if (oval != nval)
aw8697_i2c_write(aw8697, reg_addr, nval);
return 0;
}