Commit 814ddbd9 authored by Sebastian Reichel's avatar Sebastian Reichel
Browse files

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: default avatarSebastian Reichel <sebastian.reichel@collabora.com>
parent 310162f6
Loading
Loading
Loading
Loading
+10 −11
Original line number Diff line number Diff line
@@ -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
};