summaryrefslogtreecommitdiff
path: root/drivers/net/dsa/xrs700x/xrs700x_i2c.c
diff options
context:
space:
mode:
authorMiquel Raynal <miquel.raynal@bootlin.com>2021-11-07 17:38:36 +0100
committerMiquel Raynal <miquel.raynal@bootlin.com>2021-11-07 17:38:36 +0100
commite269d7caf9e0dbd95fac9991991298f74930c2c0 (patch)
tree5fc1a69a0a54cdfc7f3a0be247f6658d3d7ed3c1 /drivers/net/dsa/xrs700x/xrs700x_i2c.c
parentbca20e6a73863f37eb5e04c505be219a65f26a38 (diff)
parentdf872ab1ffe4bd865dfb5956cae4901429004ab6 (diff)
Merge tag 'spi-nor/for-5.16' into mtd/next
SPI NOR core changes: - Add spi-nor device tree binding under SPI NOR maintainers SPI NOR manufacturer drivers changes: - Enable locking for n25q128a13 SPI NOR controller drivers changes: - Use devm_platform_ioremap_resource_byname()
Diffstat (limited to 'drivers/net/dsa/xrs700x/xrs700x_i2c.c')
-rw-r--r--drivers/net/dsa/xrs700x/xrs700x_i2c.c18
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,
};