can: m_can: add deinit callback
authorSean Nyekjaer <sean@geanix.com>
Fri, 22 Nov 2024 14:52:22 +0000 (15:52 +0100)
committerMarc Kleine-Budde <mkl@pengutronix.de>
Fri, 10 Jan 2025 10:05:43 +0000 (11:05 +0100)
This is added in preparation for calling standby mode in the tcan4x5x
driver or other users of m_can.
For the tcan4x5x; If 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-1-90bafaf5eccd@geanix.com
Signed-off-by: Marc Kleine-Budde <mkl@pengutronix.de>
drivers/net/can/m_can/m_can.c
drivers/net/can/m_can/m_can.h

index 16e9e7d7527d9762d73a7ec47940c73c0976e05d..e31ce973892a96f47d26d06464e0f6e2245550fd 100644 (file)
@@ -1756,6 +1756,13 @@ static void m_can_stop(struct net_device *dev)
 
        /* set the state as STOPPED */
        cdev->can.state = CAN_STATE_STOPPED;
+
+       if (cdev->ops->deinit) {
+               ret = cdev->ops->deinit(cdev);
+               if (ret)
+                       netdev_err(dev, "failed to deinitialize: %pe\n",
+                                  ERR_PTR(ret));
+       }
 }
 
 static int m_can_close(struct net_device *dev)
index 92b2bd8628e6b31370f4accbc2e28f3b2257a71d..6206535341a22a68d7c5570f619e6c4d05e6fcf4 100644 (file)
@@ -68,6 +68,7 @@ struct m_can_ops {
        int (*write_fifo)(struct m_can_classdev *cdev, int addr_offset,
                          const void *val, size_t val_count);
        int (*init)(struct m_can_classdev *cdev);
+       int (*deinit)(struct m_can_classdev *cdev);
 };
 
 struct m_can_tx_op {