In the following code block, BXTWC_DEVICE1_ADDR value is already fixed and hence there no need to check for if (!i2c_addr) in every ipc read/write calls. Even if this check is required it can be moved to probe function.
i2c_addr = BXTWC_DEVICE1_ADDR; if (!i2c_addr) { dev_err(pmic->dev, "I2C address not set\n"); return -EINVAL; } This patch remove this extra check and adds some NULL parameter checks. Signed-off-by: Kuppuswamy Sathyanarayanan <sathyanarayanan.kuppusw...@linux.intel.com> --- drivers/mfd/intel_soc_pmic_bxtwc.c | 22 ++++++++++------------ 1 file changed, 10 insertions(+), 12 deletions(-) diff --git a/drivers/mfd/intel_soc_pmic_bxtwc.c b/drivers/mfd/intel_soc_pmic_bxtwc.c index 92bd833..3df546f 100644 --- a/drivers/mfd/intel_soc_pmic_bxtwc.c +++ b/drivers/mfd/intel_soc_pmic_bxtwc.c @@ -198,15 +198,14 @@ static int regmap_ipc_byte_reg_read(void *context, unsigned int reg, u8 ipc_out[4]; struct intel_soc_pmic *pmic = context; + if (!pmic) + return -EINVAL; + if (reg & REG_ADDR_MASK) i2c_addr = (reg & REG_ADDR_MASK) >> REG_ADDR_SHIFT; - else { + else i2c_addr = BXTWC_DEVICE1_ADDR; - if (!i2c_addr) { - dev_err(pmic->dev, "I2C address not set\n"); - return -EINVAL; - } - } + reg &= REG_OFFSET_MASK; ipc_in[0] = reg; @@ -231,15 +230,14 @@ static int regmap_ipc_byte_reg_write(void *context, unsigned int reg, u8 ipc_in[3]; struct intel_soc_pmic *pmic = context; + if (!pmic) + return -EINVAL; + if (reg & REG_ADDR_MASK) i2c_addr = (reg & REG_ADDR_MASK) >> REG_ADDR_SHIFT; - else { + else i2c_addr = BXTWC_DEVICE1_ADDR; - if (!i2c_addr) { - dev_err(pmic->dev, "I2C address not set\n"); - return -EINVAL; - } - } + reg &= REG_OFFSET_MASK; ipc_in[0] = reg; -- 1.9.1