From: yxj Date: Fri, 28 Jun 2013 06:13:05 +0000 (+0800) Subject: mfd:rk616:core:fix rk616_i2c_write_bits X-Git-Tag: firefly_0821_release~6965^2~10 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=1bf73ddc9e1662d899fda3e0dd8884b0f566b130;p=firefly-linux-kernel-4.4.55.git mfd:rk616:core:fix rk616_i2c_write_bits --- diff --git a/drivers/mfd/rk616-core.c b/drivers/mfd/rk616-core.c index 376ecb07b990..fd3dfbef1dc1 100755 --- a/drivers/mfd/rk616-core.c +++ b/drivers/mfd/rk616-core.c @@ -103,13 +103,15 @@ static int rk616_i2c_write_bits(struct mfd_rk616 *rk616, u16 reg,u32 mask,u32 *p int ret; u32 reg_val; char *tx_buf = NULL; - mutex_lock(&rk616->reg_lock); + tx_buf = (char *)kmalloc(6, GFP_KERNEL); if(!tx_buf) return -ENOMEM; + mutex_lock(&rk616->reg_lock); rk616->read_dev(rk616,reg,®_val); reg_val &= ~mask; + *pval &= mask; reg_val |= *pval; *pval = reg_val; memcpy(tx_buf, ®, 2);