diff options
author | Jiri Kosina <jkosina@suse.cz> | 2021-11-05 14:10:27 +0300 |
---|---|---|
committer | Jiri Kosina <jkosina@suse.cz> | 2021-11-05 14:10:27 +0300 |
commit | 820e9906cf64142169134f35b996108303cf22ca (patch) | |
tree | 89f8831fb39c59aba208395d91e25ab4b26f473f /drivers/net/dsa/xrs700x/xrs700x_i2c.c | |
parent | b9865081a56a5cd01cd7c9735911709ff82bd8df (diff) | |
parent | 2ea5999d07d2a0ab6ad92ccf65524707f2c5e456 (diff) | |
download | linux-820e9906cf64142169134f35b996108303cf22ca.tar.xz |
Merge branch 'for-5.16/asus' into for-linus
Diffstat (limited to 'drivers/net/dsa/xrs700x/xrs700x_i2c.c')
-rw-r--r-- | drivers/net/dsa/xrs700x/xrs700x_i2c.c | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/drivers/net/dsa/xrs700x/xrs700x_i2c.c b/drivers/net/dsa/xrs700x/xrs700x_i2c.c index 489d9385b4f0..6deae388a0d6 100644 --- a/drivers/net/dsa/xrs700x/xrs700x_i2c.c +++ b/drivers/net/dsa/xrs700x/xrs700x_i2c.c @@ -109,11 +109,28 @@ static int xrs700x_i2c_remove(struct i2c_client *i2c) { struct xrs700x *priv = i2c_get_clientdata(i2c); + if (!priv) + return 0; + xrs700x_switch_remove(priv); + i2c_set_clientdata(i2c, NULL); + return 0; } +static void xrs700x_i2c_shutdown(struct i2c_client *i2c) +{ + struct xrs700x *priv = i2c_get_clientdata(i2c); + + if (!priv) + return; + + xrs700x_switch_shutdown(priv); + + i2c_set_clientdata(i2c, NULL); +} + static const struct i2c_device_id xrs700x_i2c_id[] = { { "xrs700x-switch", 0 }, {}, @@ -137,6 +154,7 @@ static struct i2c_driver xrs700x_i2c_driver = { }, .probe = xrs700x_i2c_probe, .remove = xrs700x_i2c_remove, + .shutdown = xrs700x_i2c_shutdown, .id_table = xrs700x_i2c_id, }; |