On Wed, 2020-12-16 at 16:37 +0900, Yoshihiro Shimoda wrote: > Use dev_regmap_add_irq_chip() to simplify the code. > > Signed-off-by: Yoshihiro Shimoda <yoshihiro.shimoda.uh@xxxxxxxxxxx> Reviewed-by: Matti Vaittinen <matti.vaittinen@xxxxxxxxxxxxxxxxx> > --- > drivers/mfd/bd9571mwv.c | 27 ++++++--------------------- > 1 file changed, 6 insertions(+), 21 deletions(-) > > diff --git a/drivers/mfd/bd9571mwv.c b/drivers/mfd/bd9571mwv.c > index e68c3fa..49e968e 100644 > --- a/drivers/mfd/bd9571mwv.c > +++ b/drivers/mfd/bd9571mwv.c > @@ -170,31 +170,17 @@ static int bd9571mwv_probe(struct i2c_client > *client, > if (ret) > return ret; > > - ret = regmap_add_irq_chip(bd->regmap, bd->irq, IRQF_ONESHOT, 0, > - &bd9571mwv_irq_chip, &bd->irq_data); > + ret = devm_regmap_add_irq_chip(bd->dev, bd->regmap, bd->irq, > + IRQF_ONESHOT, 0, > &bd9571mwv_irq_chip, > + &bd->irq_data); > if (ret) { > dev_err(bd->dev, "Failed to register IRQ chip\n"); > return ret; > } > > - ret = devm_mfd_add_devices(bd->dev, PLATFORM_DEVID_AUTO, > - bd9571mwv_cells, > ARRAY_SIZE(bd9571mwv_cells), > - NULL, 0, regmap_irq_get_domain(bd- > >irq_data)); The funny diff formatting got me fooled. I spent a while wondering why you do remove the devm_mfd_add_devices - untill I noticed that it was just the diff playing tricks - it is added back in the remove. I should practice my diff reading skills :) But the result looks good and clean to me! > - if (ret) { > - regmap_del_irq_chip(bd->irq, bd->irq_data); > - return ret; > - } > - > - return 0; > -} > - > -static int bd9571mwv_remove(struct i2c_client *client) > -{ > - struct bd9571mwv *bd = i2c_get_clientdata(client); > - > - regmap_del_irq_chip(bd->irq, bd->irq_data); > - > - return 0; > + return devm_mfd_add_devices(bd->dev, PLATFORM_DEVID_AUTO, > + bd9571mwv_cells, > ARRAY_SIZE(bd9571mwv_cells), > + NULL, 0, regmap_irq_get_domain(bd- > >irq_data)); > } > > static const struct of_device_id bd9571mwv_of_match_table[] = { > @@ -215,7 +201,6 @@ static struct i2c_driver bd9571mwv_driver = { > .of_match_table = bd9571mwv_of_match_table, > }, > .probe = bd9571mwv_probe, > - .remove = bd9571mwv_remove, > .id_table = bd9571mwv_id_table, > }; > module_i2c_driver(bd9571mwv_driver);