diff options
Diffstat (limited to 'drivers/regulator/max8907-regulator.c')
| -rw-r--r-- | drivers/regulator/max8907-regulator.c | 15 | 
1 files changed, 12 insertions, 3 deletions
diff --git a/drivers/regulator/max8907-regulator.c b/drivers/regulator/max8907-regulator.c index 76152aaa330b..96dc0eea7659 100644 --- a/drivers/regulator/max8907-regulator.c +++ b/drivers/regulator/max8907-regulator.c @@ -296,7 +296,10 @@ static int max8907_regulator_probe(struct platform_device *pdev)  	memcpy(pmic->desc, max8907_regulators, sizeof(pmic->desc));  	/* Backwards compatibility with MAX8907B; SD1 uses different voltages */ -	regmap_read(max8907->regmap_gen, MAX8907_REG_II2RR, &val); +	ret = regmap_read(max8907->regmap_gen, MAX8907_REG_II2RR, &val); +	if (ret) +		return ret; +  	if ((val & MAX8907_II2RR_VERSION_MASK) ==  	    MAX8907_II2RR_VERSION_REV_B) {  		pmic->desc[MAX8907_SD1].min_uV = 637500; @@ -333,14 +336,20 @@ static int max8907_regulator_probe(struct platform_device *pdev)  		}  		if (pmic->desc[i].ops == &max8907_ldo_ops) { -			regmap_read(config.regmap, pmic->desc[i].enable_reg, +			ret = regmap_read(config.regmap, pmic->desc[i].enable_reg,  				    &val); +			if (ret) +				return ret; +  			if ((val & MAX8907_MASK_LDO_SEQ) !=  			    MAX8907_MASK_LDO_SEQ)  				pmic->desc[i].ops = &max8907_ldo_hwctl_ops;  		} else if (pmic->desc[i].ops == &max8907_out5v_ops) { -			regmap_read(config.regmap, pmic->desc[i].enable_reg, +			ret = regmap_read(config.regmap, pmic->desc[i].enable_reg,  				    &val); +			if (ret) +				return ret; +  			if ((val & (MAX8907_MASK_OUT5V_VINEN |  						MAX8907_MASK_OUT5V_ENSRC)) !=  			    MAX8907_MASK_OUT5V_ENSRC)  |