diff --git a/drivers/mfd/ab3100-core.c b/drivers/mfd/ab3100-core.c index f0afb44271f8b8c4bf7c12e4df0a30152811ef6f..6a5a98806cb817a28c782117a2a171c6975525a5 100644 --- a/drivers/mfd/ab3100-core.c +++ b/drivers/mfd/ab3100-core.c @@ -381,9 +381,11 @@ static int ab3100_event_registers_startup_state_get(struct device *dev, u8 *event) { struct ab3100 *ab3100 = dev_get_drvdata(dev->parent); + if (!ab3100->startup_events_read) return -EAGAIN; /* Try again later */ memcpy(event, ab3100->startup_events, 3); + return 0; } @@ -858,10 +860,8 @@ static int ab3100_probe(struct i2c_client *client, int i; ab3100 = devm_kzalloc(&client->dev, sizeof(struct ab3100), GFP_KERNEL); - if (!ab3100) { - dev_err(&client->dev, "could not allocate AB3100 device\n"); + if (!ab3100) return -ENOMEM; - } /* Initialize data structure */ mutex_init(&ab3100->access_mutex); @@ -883,20 +883,17 @@ static int ab3100_probe(struct i2c_client *client, for (i = 0; ids[i].id != 0x0; i++) { if (ids[i].id == ab3100->chip_id) { - if (ids[i].name != NULL) { - snprintf(&ab3100->chip_name[0], - sizeof(ab3100->chip_name) - 1, - "AB3100 %s", - ids[i].name); + if (ids[i].name) break; - } else { - dev_err(&client->dev, - "AB3000 is not supported\n"); - goto exit_no_detect; - } + + dev_err(&client->dev, "AB3000 is not supported\n"); + goto exit_no_detect; } } + snprintf(&ab3100->chip_name[0], + sizeof(ab3100->chip_name) - 1, "AB3100 %s", ids[i].name); + if (ids[i].id == 0x0) { dev_err(&client->dev, "unknown analog baseband chip id: 0x%x\n", ab3100->chip_id);