From: Sebastian Reichel Date: Tue, 9 Mar 2021 18:04:04 +0000 (+0100) Subject: power: supply: sbs-manager: use managed i2c_mux_adapter X-Git-Tag: v5.15~1254^2~26 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=814ddbd9ec0b9344eb390711a115cf6f097f0044;p=platform%2Fkernel%2Flinux-starfive.git power: supply: sbs-manager: use managed i2c_mux_adapter Simplify code by using devm_add_action_or_reset to unregister the i2c_mux_adapter. Signed-off-by: Sebastian Reichel --- diff --git a/drivers/power/supply/sbs-manager.c b/drivers/power/supply/sbs-manager.c index 666243d..cd2bf0b 100644 --- a/drivers/power/supply/sbs-manager.c +++ b/drivers/power/supply/sbs-manager.c @@ -311,6 +311,12 @@ static const struct power_supply_desc sbsm_default_psy_desc = { .property_is_writeable = &sbsm_prop_is_writeable, }; +static void sbsm_del_mux_adapter(void *data) +{ + struct sbsm_data *sbsm = data; + i2c_mux_del_adapters(sbsm->muxc); +} + static int sbsm_probe(struct i2c_client *client, const struct i2c_device_id *id) { @@ -350,6 +356,10 @@ static int sbsm_probe(struct i2c_client *client, } data->muxc->priv = data; + ret = devm_add_action_or_reset(dev, sbsm_del_mux_adapter, data); + if (ret) + return ret; + /* register muxed i2c channels. One for each supported battery */ for (i = 0; i < SBSM_MAX_BATS; ++i) { if (data->supported_bats & BIT(i)) { @@ -395,20 +405,10 @@ static int sbsm_probe(struct i2c_client *client, err_psy: err_mux_register: - i2c_mux_del_adapters(data->muxc); - err_mux_alloc: return ret; } -static int sbsm_remove(struct i2c_client *client) -{ - struct sbsm_data *data = i2c_get_clientdata(client); - - i2c_mux_del_adapters(data->muxc); - return 0; -} - static const struct i2c_device_id sbsm_ids[] = { { "sbs-manager", 0 }, { "ltc1760", 0 }, @@ -431,7 +431,6 @@ static struct i2c_driver sbsm_driver = { .of_match_table = of_match_ptr(sbsm_dt_ids), }, .probe = sbsm_probe, - .remove = sbsm_remove, .alert = sbsm_alert, .id_table = sbsm_ids };