本文整理汇总了C++中register_pm_notifier函数的典型用法代码示例。如果您正苦于以下问题:C++ register_pm_notifier函数的具体用法?C++ register_pm_notifier怎么用?C++ register_pm_notifier使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了register_pm_notifier函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: gpu_notifier_init
int gpu_notifier_init(struct kbase_device *kbdev)
{
struct exynos_context *platform = (struct exynos_context *)kbdev->platform_context;
if (!platform)
return -ENODEV;
platform->voltage_margin = 0;
#ifdef CONFIG_EXYNOS_THERMAL
exynos_gpu_add_notifier(&gpu_tmu_nb);
#endif /* CONFIG_EXYNOS_THERMAL */
#ifdef CONFIG_MALI_RT_PM
if (register_pm_notifier(&gpu_pm_nb))
return -1;
#endif /* CONFIG_MALI_RT_PM */
#ifdef CONFIG_CPU_IDLE
if (register_pm_notifier(&gpu_lpc_nb))
return -1;
#endif /* CONFIG_CPU_IDLE */
pm_runtime_enable(kbdev->dev);
return 0;
}
示例2: _mali_dev_platform_register
/** This function is called when Mali GPU device is initialized
*/
int _mali_dev_platform_register(void)
{
int err;
#ifdef CONFIG_PM_RUNTIME
set_mali_parent_power_domain((void *)&mali_gpu_device);
#endif
#ifdef CONFIG_PM_RUNTIME
err = register_pm_notifier(&mali_pwr_notif_block);
if (err)
{
return err;
}
#endif
#if MALI_LICENSE_IS_GPL
err = platform_device_register(&mali_gpu_device);
if (!err)
{
err = platform_driver_register(&mali_plat_driver);
if (err)
{
#ifdef CONFIG_PM_RUNTIME
unregister_pm_notifier(&mali_pwr_notif_block);
#endif
platform_device_unregister(&mali_gpu_device);
}
}
#endif
return err;
}
示例3: hisi_clkmbox_init
static int __init hisi_clkmbox_init(void)
{
int ret = 0;
mbox_clk = kzalloc(sizeof(*mbox_clk), GFP_KERNEL);
if (!mbox_clk) {
pr_err("[%s] fail to alloc mbox_clk!\n", __func__);
ret = -ENOMEM;
goto err;
}
/* get mailbox to communicate with lpm3 */
mbox_clk->mbox = hisi_mbox_get(HISI_MAILBOX_RP_LPM3, NULL);
if (!mbox_clk->mbox) {
pr_err("[%s] fail to get mbox!\n", __func__);
ret = -ENODEV;
goto err_mbox;
}
mailbox_disable = 0;
register_pm_notifier(&mailbox_pm_notif_block);
return ret;
err_mbox:
kfree(mbox_clk);
mbox_clk = NULL;
err:
return ret;
}
示例4: tegra_cpuidle_init
static int __init tegra_cpuidle_init(void)
{
unsigned int cpu;
int ret;
#ifdef CONFIG_PM_SLEEP
tegra_pd_min_residency = tegra_cpu_lp2_min_residency();
tegra_pg_exit_latency = tegra_cpu_power_good_time();
tegra_pd_power_off_time = tegra_cpu_power_off_time();
tegra_cpuidle_init_soc(&tegra_idle_ops);
#endif
for_each_possible_cpu(cpu) {
ret = tegra_cpuidle_register(cpu);
if (ret) {
pr_err("CPU%u: CPUidle registration failed\n",
cpu);
return ret;
}
}
#ifdef CONFIG_TEGRA_MC_DOMAINS
work_on_cpu(0, pm_attach_cpuidle_work, NULL);
#endif
register_pm_notifier(&tegra_cpuidle_pm_notifier);
return 0;
}
示例5: set_pm_notifier
static void set_pm_notifier(int mask)
{
int ret = 0;
bool val = (mask & KCOLLECT_SUSPEND_MASK) ? true : false;
if (val) { // previous state is off, and now is on
if (PRE_MASK_IS_OFF(KCOLLECT_SUSPEND_MASK, mask)) {
ret = register_pm_notifier(&suspend_notifier);
if (ret < 0) {
pr_err("hw_kcollect %s : register_pm_notifier failed!\n", __func__);
} else {
pr_debug("hw_kcollect %s : register_pm_notifier\n", __func__);
}
}
} else { // previous state is on, and now is off
if (PRE_MASK_IS_ON(KCOLLECT_SUSPEND_MASK, mask)) {
ret = unregister_pm_notifier(&suspend_notifier);
if (ret < 0) {
pr_err("hw_kcollect %s : unregister_pm_notifier failed!\n", __func__);
} else {
pr_debug("hw_kcollect %s : unregister_pm_notifier\n", __func__);
}
}
}
}
示例6: exynos5_manta_battery_late_init
static int __init exynos5_manta_battery_late_init(void)
{
int ret;
struct usb_phy *usb_xceiv;
ret = power_supply_register(NULL, &manta_battery_psy);
if (ret)
pr_err("%s: failed to register power_supply\n",
__func__);
ret = request_threaded_irq(gpio_to_irq(GPIO_OTG_VBUS_SENSE),
NULL, ta_int_intr,
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
IRQF_ONESHOT, "usb_vbus", NULL);
if (ret) {
pr_err("%s: usb_vbus irq register failed, ret=%d\n",
__func__, ret);
} else {
ret = enable_irq_wake(gpio_to_irq(GPIO_OTG_VBUS_SENSE));
if (ret)
pr_warn("%s: failed to enable irq_wake for usb_vbus\n",
__func__);
}
ret = request_threaded_irq(gpio_to_irq(GPIO_VBUS_POGO_5V), NULL,
ta_int_intr,
IRQF_TRIGGER_RISING | IRQF_TRIGGER_FALLING |
IRQF_ONESHOT, "pogo_vbus", NULL);
if (ret) {
pr_err("%s: pogo_vbus irq register failed, ret=%d\n",
__func__, ret);
} else {
ret = enable_irq_wake(gpio_to_irq(GPIO_VBUS_POGO_5V));
if (ret)
pr_warn("%s: failed to enable irq_wake for pogo_vbus\n",
__func__);
}
ret = register_pm_notifier(&exynos5_manta_battery_pm_notifier_block);
if (ret)
pr_warn("%s: failed to register PM notifier; ret=%d\n",
__func__, ret);
usb_xceiv = usb_get_transceiver();
if (!usb_xceiv) {
pr_err("%s: No USB transceiver found\n", __func__);
} else {
ret = usb_register_notifier(usb_xceiv, &manta_bat_usb_nb);
if (ret) {
pr_err("%s: usb_register_notifier on transceiver %s failed\n",
__func__, dev_name(usb_xceiv->dev));
}
}
/* get initial charger status */
change_charger_status(false, false);
return 0;
}
示例7: ssm_enable
static int ssm_enable(struct ssm_data *sd)
{
int rc;
dev_dbg(sd->dev, "%s\n", __func__);
mutex_lock(&sd->lock);
if (sd->enabled) {
dev_err(sd->dev, "%s: Already enabled!\n", __func__);
rc = -EINVAL;
goto exit;
}
rc = register_pm_notifier(&sd->pm_notifier);
if (rc) {
dev_err(sd->dev, "%s: Failed to register pm_notifier (%d)\n",
__func__, rc);
goto exit;
}
register_early_suspend(&sd->early_suspend);
sd->notify_next_suspend_prepare = false;
sd->notify_late_resume = false;
sd->enabled = true;
exit:
mutex_unlock(&sd->lock);
return rc;
}
示例8: cmdq_init
static int __init cmdq_init(void)
{
int status;
CMDQ_MSG("CMDQ driver init begin\n");
/* Initialize group callback */
cmdqCoreInitGroupCB();
/* Register MDP callback */
cmdqCoreRegisterCB(CMDQ_GROUP_MDP,
cmdqMdpClockOn, cmdqMdpDumpInfo, cmdqMdpResetEng, cmdqMdpClockOff);
/* Register VENC callback */
cmdqCoreRegisterCB(CMDQ_GROUP_VENC, NULL, cmdqVEncDumpInfo, NULL, NULL);
status = platform_driver_register(&gCmdqDriver);
if (0 != status) {
CMDQ_ERR("Failed to register the CMDQ driver(%d)\n", status);
return -ENODEV;
}
/* register pm notifier */
status = register_pm_notifier(&cmdq_pm_notifier_block);
if (0 != status) {
CMDQ_ERR("Failed to register_pm_notifier(%d)\n", status);
return -ENODEV;
}
CMDQ_MSG("CMDQ driver init end\n");
return 0;
}
示例9: cbp_init
static int __init cbp_init(void)
{
int ret;
ret = platform_device_register(&cbp_device);
if (ret) {
LOGPRT(LOG_ERR, "platform_device_register failed\n");
goto err_platform_device_register;
}
ret = platform_driver_register(&cbp_driver);
if (ret) {
LOGPRT(LOG_ERR, "platform_driver_register failed\n");
goto err_platform_driver_register;
}
ret = register_pm_notifier(&cbp_pm_notifier_block);
if (ret) {
LOGPRT(LOG_ERR, "%s failed to register PM notifier\n", __func__);
goto err_platform_driver_register;
}else{
LOGPRT(LOG_ERR, "%s sucess to register PM notifier\n", __func__);
}
return ret;
err_platform_driver_register:
platform_device_unregister(&cbp_device);
err_platform_device_register:
return ret;
}
示例10: ledtrig_sleep_init
static int __init ledtrig_sleep_init(void)
{
led_trigger_register_simple("sleep", &ledtrig_sleep);
register_pm_notifier(&ledtrig_sleep_pm_notifier);
register_early_suspend(&ledtrig_sleep_early_suspend_handler);
return 0;
}
示例11: gpu_notifier_init
int gpu_notifier_init(struct kbase_device *kbdev)
{
struct exynos_context *platform = (struct exynos_context *)kbdev->platform_context;
if (!platform)
return -ENODEV;
platform->voltage_margin = 0;
#if defined(CONFIG_EXYNOS_THERMAL) && defined(CONFIG_GPU_THERMAL)
exynos_gpu_add_notifier(&gpu_tmu_nb);
#endif /* CONFIG_EXYNOS_THERMAL */
#ifdef CONFIG_MALI_RT_PM
if (register_pm_notifier(&gpu_pm_nb))
return -1;
#endif /* CONFIG_MALI_RT_PM */
#ifdef CONFIG_EXYNOS_BUSMONITOR
busmon_notifier_chain_register(&gpu_noc_nb);
#endif
pm_runtime_enable(kbdev->dev);
platform->power_status = true;
return 0;
}
示例12: omap_dss_probe
static int __init omap_dss_probe(struct platform_device *pdev)
{
struct omap_dss_board_info *pdata = pdev->dev.platform_data;
int r;
core.pdev = pdev;
dss_features_init(omapdss_get_version());
r = dss_initialize_debugfs();
if (r)
goto err_debugfs;
if (def_disp_name)
core.default_display_name = def_disp_name;
else if (pdata->default_display_name)
core.default_display_name = pdata->default_display_name;
else if (pdata->default_device)
core.default_display_name = pdata->default_device->name;
register_pm_notifier(&omap_dss_pm_notif_block);
return 0;
err_debugfs:
return r;
}
示例13: tegra_cpuidle_init
static int __init tegra_cpuidle_init(void)
{
unsigned int cpu;
int ret;
ret = cpuidle_register_driver(&tegra_idle);
if (ret)
return ret;
#ifdef CONFIG_PM_SLEEP
tegra_lp2_min_residency = tegra_cpu_lp2_min_residency();
tegra_lp2_exit_latency = tegra_cpu_power_good_time();
tegra_lp2_power_off_time = tegra_cpu_power_off_time();
ret = tegra_cpudile_init_soc();
if (ret)
return ret;
#endif
for_each_possible_cpu(cpu) {
if (tegra_cpuidle_register_device(cpu))
pr_err("CPU%u: error initializing idle loop\n", cpu);
}
register_pm_notifier(&tegra_cpuidle_pm_notifier);
return 0;
}
示例14: gpu_notifier_init
int gpu_notifier_init(struct kbase_device *kbdev)
{
struct exynos_context *platform = (struct exynos_context *)kbdev->platform_context;
if (!platform)
return -ENODEV;
platform->voltage_margin = 0;
#if defined(CONFIG_EXYNOS_THERMAL)
exynos_gpu_add_notifier(&gpu_tmu_nb);
platform->tmu_status = true;
#else /* CONFIG_EXYNOS_THERMAL */
platform->tmu_status = false;
#endif /* CONFIG_EXYNOS_THERMAL */
#ifdef CONFIG_MALI_MIDGARD_RT_PM
if (register_pm_notifier(&gpu_pm_nb))
return MALI_FALSE;
#endif /* CONFIG_MALI_MIDGARD_RT_PM */
pm_runtime_enable(kbdev->dev);
pm_qos_add_notifier(PM_QOS_GPU_FREQ_MIN, &exynos_gpu_min_qos_notifier);
pm_qos_add_notifier(PM_QOS_GPU_FREQ_MAX, &exynos_gpu_max_qos_notifier);
return MALI_TRUE;
}
示例15: _mali_dev_platform_register
/** This function is called when Mali GPU device is initialized
*/
int _mali_dev_platform_register(void)
{
int err;
#if MALI_PMM_RUNTIME_JOB_CONTROL_ON
set_mali_parent_power_domain((void *)&mali_gpu_device);
#endif
#ifdef CONFIG_PM_RUNTIME
#if MALI_PMM_RUNTIME_JOB_CONTROL_ON
err = register_pm_notifier(&mali_pwr_notif_block);
if (err)
{
return err;
}
#endif /* MALI_PMM_RUNTIME_JOB_CONTROL_ON */
#endif /* CONFIG_PM_RUNTIME */
err = platform_device_register(&mali_gpu_device);
lock = _mali_osk_lock_init((_mali_osk_lock_flags_t)( _MALI_OSK_LOCKFLAG_READERWRITER | _MALI_OSK_LOCKFLAG_ORDERED), 0, 0);
if (!err)
{
err = platform_driver_register(&mali_plat_driver);
if (err)
{
_mali_osk_lock_term(lock);
#ifdef CONFIG_PM_RUNTIME
#if MALI_PMM_RUNTIME_JOB_CONTROL_ON
unregister_pm_notifier(&mali_pwr_notif_block);
#endif /* MALI_PMM_RUNTIME_JOB_CONTROL_ON */
#endif /* CONFIG_PM_RUNTIME */
platform_device_unregister(&mali_gpu_device);
}
}
return err;
}