summaryrefslogtreecommitdiff
path: root/components
diff options
context:
space:
mode:
authorBernard Xiong <[email protected]>2019-06-11 16:03:01 +0800
committerGitHub <[email protected]>2019-06-11 16:03:01 +0800
commit71b0c1cb7303d841462ebfce18ded1aa93ed9b3e (patch)
tree49d54bff6c91ceb1174c7f4a22d6f132ba3998e5 /components
parentb04a0f75b205444d64b2e55615cb5abeec623d66 (diff)
parent000825666363afa7a2a1701ccdfa1021781764fa (diff)
Merge pull request #2767 from Zero-Free/master
[components][pm]add pm ops support
Diffstat (limited to 'components')
-rw-r--r--components/drivers/pm/pm.c20
1 files changed, 18 insertions, 2 deletions
diff --git a/components/drivers/pm/pm.c b/components/drivers/pm/pm.c
index 3e9cf56c76..60e71ddfd9 100644
--- a/components/drivers/pm/pm.c
+++ b/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 */