Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

mfd: Fix 88pm860x uninitialized variable and clean up

The original code had a compile warning:
drivers/mfd/88pm860x-core.c:431: warning: ‘ret’ may be used
uninitialized in this function
It seems like the warning is valid if either pdata or pdata->touch is
NULL.

This patch checks pdata and pdata->touch at the beginning of the
function. That means everything can be pulled in one indent level.
Now all the statements fit within the 80 character limit.

Also at that point the "use_gpadc" variable isn't needed and removing
it simplifies the logic.

Signed-off-by: Dan Carpenter <error27@gmail.com>
Acked-by: Haojian Zhuang <hzhuang1@marvell.com>
Signed-off-by: Samuel Ortiz <sameo@linux.intel.com>

authored by

Dan Carpenter and committed by
Samuel Ortiz
eb6e8ddf d281b80c

+32 -40
+32 -40
drivers/mfd/88pm860x-core.c
··· 428 428 { 429 429 struct i2c_client *i2c = (chip->id == CHIP_PM8607) ? chip->client \ 430 430 : chip->companion; 431 - int use_gpadc = 0, data, ret; 431 + int data; 432 + int ret; 432 433 433 434 /* initialize GPADC without activating it */ 434 435 435 - if (pdata && pdata->touch) { 436 - /* set GPADC MISC1 register */ 437 - data = 0; 438 - data |= (pdata->touch->gpadc_prebias << 1) 439 - & PM8607_GPADC_PREBIAS_MASK; 440 - data |= (pdata->touch->slot_cycle << 3) 441 - & PM8607_GPADC_SLOT_CYCLE_MASK; 442 - data |= (pdata->touch->off_scale << 5) 443 - & PM8607_GPADC_OFF_SCALE_MASK; 444 - data |= (pdata->touch->sw_cal << 7) 445 - & PM8607_GPADC_SW_CAL_MASK; 446 - if (data) { 447 - ret = pm860x_reg_write(i2c, PM8607_GPADC_MISC1, data); 448 - if (ret < 0) 449 - goto out; 450 - } 451 - /* set tsi prebias time */ 452 - if (pdata->touch->tsi_prebias) { 453 - data = pdata->touch->tsi_prebias; 454 - ret = pm860x_reg_write(i2c, PM8607_TSI_PREBIAS, data); 455 - if (ret < 0) 456 - goto out; 457 - } 458 - /* set prebias & prechg time of pen detect */ 459 - data = 0; 460 - data |= pdata->touch->pen_prebias & PM8607_PD_PREBIAS_MASK; 461 - data |= (pdata->touch->pen_prechg << 5) 462 - & PM8607_PD_PRECHG_MASK; 463 - if (data) { 464 - ret = pm860x_reg_write(i2c, PM8607_PD_PREBIAS, data); 465 - if (ret < 0) 466 - goto out; 467 - } 436 + if (!pdata || !pdata->touch) 437 + return -EINVAL; 468 438 469 - use_gpadc = 1; 439 + /* set GPADC MISC1 register */ 440 + data = 0; 441 + data |= (pdata->touch->gpadc_prebias << 1) & PM8607_GPADC_PREBIAS_MASK; 442 + data |= (pdata->touch->slot_cycle << 3) & PM8607_GPADC_SLOT_CYCLE_MASK; 443 + data |= (pdata->touch->off_scale << 5) & PM8607_GPADC_OFF_SCALE_MASK; 444 + data |= (pdata->touch->sw_cal << 7) & PM8607_GPADC_SW_CAL_MASK; 445 + if (data) { 446 + ret = pm860x_reg_write(i2c, PM8607_GPADC_MISC1, data); 447 + if (ret < 0) 448 + goto out; 449 + } 450 + /* set tsi prebias time */ 451 + if (pdata->touch->tsi_prebias) { 452 + data = pdata->touch->tsi_prebias; 453 + ret = pm860x_reg_write(i2c, PM8607_TSI_PREBIAS, data); 454 + if (ret < 0) 455 + goto out; 456 + } 457 + /* set prebias & prechg time of pen detect */ 458 + data = 0; 459 + data |= pdata->touch->pen_prebias & PM8607_PD_PREBIAS_MASK; 460 + data |= (pdata->touch->pen_prechg << 5) & PM8607_PD_PRECHG_MASK; 461 + if (data) { 462 + ret = pm860x_reg_write(i2c, PM8607_PD_PREBIAS, data); 463 + if (ret < 0) 464 + goto out; 470 465 } 471 466 472 - /* turn on GPADC */ 473 - if (use_gpadc) { 474 - ret = pm860x_set_bits(i2c, PM8607_GPADC_MISC1, 475 - PM8607_GPADC_EN, PM8607_GPADC_EN); 476 - } 467 + ret = pm860x_set_bits(i2c, PM8607_GPADC_MISC1, 468 + PM8607_GPADC_EN, PM8607_GPADC_EN); 477 469 out: 478 470 return ret; 479 471 }