static inline void m_can_enable_all_interrupts(struct m_can_classdev *cdev)
 {
+       if (!cdev->net->irq) {
+               dev_dbg(cdev->dev, "Start hrtimer\n");
+               hrtimer_start(&cdev->hrtimer,
+                             ms_to_ktime(HRTIMER_POLL_INTERVAL_MS),
+                             HRTIMER_MODE_REL_PINNED);
+       }
+
        /* Only interrupt line 0 is used in this driver */
        m_can_write(cdev, M_CAN_ILE, ILE_EINT0);
 }
 static inline void m_can_disable_all_interrupts(struct m_can_classdev *cdev)
 {
        m_can_write(cdev, M_CAN_ILE, 0x0);
+
+       if (!cdev->net->irq) {
+               dev_dbg(cdev->dev, "Stop hrtimer\n");
+               hrtimer_cancel(&cdev->hrtimer);
+       }
 }
 
 /* Retrieve internal timestamp counter from TSCV.TSC, and shift it to 32-bit
 
        m_can_enable_all_interrupts(cdev);
 
-       if (!dev->irq) {
-               dev_dbg(cdev->dev, "Start hrtimer\n");
-               hrtimer_start(&cdev->hrtimer, ms_to_ktime(HRTIMER_POLL_INTERVAL_MS),
-                             HRTIMER_MODE_REL_PINNED);
-       }
-
        return 0;
 }
 
 {
        struct m_can_classdev *cdev = netdev_priv(dev);
 
-       if (!dev->irq) {
-               dev_dbg(cdev->dev, "Stop hrtimer\n");
-               hrtimer_cancel(&cdev->hrtimer);
-       }
-
        /* disable all interrupts */
        m_can_disable_all_interrupts(cdev);