]> www.infradead.org Git - users/hch/misc.git/commitdiff
can: tcan4x5x: add deinit callback to set standby mode
authorSean Nyekjaer <sean@geanix.com>
Fri, 22 Nov 2024 14:52:23 +0000 (15:52 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 10 Jan 2025 10:05:44 +0000 (11:05 +0100)
At Vsup 12V, standby mode will save 7-8mA, when the interface is
down.

Signed-off-by: Sean Nyekjaer <sean@geanix.com>
Link: https://patch.msgid.link/20241122-tcan-standby-v3-2-90bafaf5eccd@geanix.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/m_can/tcan4x5x-core.c

index 4c94541766072929f84a76ef4054be747d994959..e5c162f8c589b2c75c51cd8a994fc93ab507b9dc 100644 (file)
@@ -279,6 +279,14 @@ static int tcan4x5x_init(struct m_can_classdev *cdev)
        return ret;
 }
 
+static int tcan4x5x_deinit(struct m_can_classdev *cdev)
+{
+       struct tcan4x5x_priv *tcan4x5x = cdev_to_priv(cdev);
+
+       return regmap_update_bits(tcan4x5x->regmap, TCAN4X5X_CONFIG,
+                                 TCAN4X5X_MODE_SEL_MASK, TCAN4X5X_MODE_STANDBY);
+};
+
 static int tcan4x5x_disable_wake(struct m_can_classdev *cdev)
 {
        struct tcan4x5x_priv *tcan4x5x = cdev_to_priv(cdev);
@@ -376,6 +384,7 @@ static int tcan4x5x_get_gpios(struct m_can_classdev *cdev,
 
 static const struct m_can_ops tcan4x5x_ops = {
        .init = tcan4x5x_init,
+       .deinit = tcan4x5x_deinit,
        .read_reg = tcan4x5x_read_reg,
        .write_reg = tcan4x5x_write_reg,
        .write_fifo = tcan4x5x_write_fifo,