Browse Source

[components][pm]add pm ops support

EvalZero 6 years ago
parent
commit
0008256663
1 changed files with 18 additions and 2 deletions
  1. 18 2
      components/drivers/pm/pm.c

+ 18 - 2
components/drivers/pm/pm.c

@@ -45,8 +45,8 @@ static int _pm_device_suspend(uint8_t mode)
         if (_pm.device_pm[index].ops->suspend != RT_NULL)
         {
             ret = _pm.device_pm[index].ops->suspend(_pm.device_pm[index].device, mode);
-            if(ret != RT_EOK)
-                break; 
+            if (ret != RT_EOK)
+                break;
         }
     }
 
@@ -458,6 +458,18 @@ int rt_pm_run_enter(uint8_t mode)
     return RT_EOK;
 }
 
+#ifdef RT_USING_DEVICE_OPS
+const static struct rt_device_ops pm_ops =
+{
+    RT_NULL,
+    RT_NULL,
+    RT_NULL,
+    _rt_pm_device_read,
+    _rt_pm_device_write,
+    _rt_pm_device_control,
+};
+#endif
+
 /**
  * This function will initialize power management.
  *
@@ -479,12 +491,16 @@ void rt_system_pm_init(const struct rt_pm_ops *ops,
     device->rx_indicate = RT_NULL;
     device->tx_complete = RT_NULL;
 
+#ifdef RT_USING_DEVICE_OPS
+    device->ops = &pm_ops;
+#else
     device->init        = RT_NULL;
     device->open        = RT_NULL;
     device->close       = RT_NULL;
     device->read        = _rt_pm_device_read;
     device->write       = _rt_pm_device_write;
     device->control     = _rt_pm_device_control;
+#endif
     device->user_data   = user_data;
 
     /* register PM device to the system */