eeprom: ee1004: Add helper ee1004_cleanup

Factor out the cleanup code to a new helper ee1004_cleanup().

Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Link: https://lore.kernel.org/r/9738cbc7-458d-276f-4012-66551f105d90@gmail.com
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
This commit is contained in:
Heiner Kallweit 2021-05-24 22:18:23 +02:00 committed by Greg Kroah-Hartman
parent 8700a7328e
commit 5fe3cba0bf

View File

@ -159,6 +159,15 @@ static struct bin_attribute *ee1004_attrs[] = {
BIN_ATTRIBUTE_GROUPS(ee1004);
static void ee1004_cleanup(int idx)
{
if (--ee1004_dev_count == 0)
while (--idx >= 0) {
i2c_unregister_device(ee1004_set_page[idx]);
ee1004_set_page[idx] = NULL;
}
}
static int ee1004_probe(struct i2c_client *client)
{
int err, cnr = 0;
@ -205,12 +214,7 @@ static int ee1004_probe(struct i2c_client *client)
return 0;
err_clients:
if (--ee1004_dev_count == 0) {
for (cnr--; cnr >= 0; cnr--) {
i2c_unregister_device(ee1004_set_page[cnr]);
ee1004_set_page[cnr] = NULL;
}
}
ee1004_cleanup(cnr);
mutex_unlock(&ee1004_bus_lock);
return err;
@ -218,16 +222,9 @@ static int ee1004_probe(struct i2c_client *client)
static int ee1004_remove(struct i2c_client *client)
{
int i;
/* Remove page select clients if this is the last device */
mutex_lock(&ee1004_bus_lock);
if (--ee1004_dev_count == 0) {
for (i = 0; i < EE1004_NUM_PAGES; i++) {
i2c_unregister_device(ee1004_set_page[i]);
ee1004_set_page[i] = NULL;
}
}
ee1004_cleanup(EE1004_NUM_PAGES);
mutex_unlock(&ee1004_bus_lock);
return 0;