| /* |
| * Samsung Exynos SoC series VIPx driver |
| * |
| * Copyright (c) 2018 Samsung Electronics Co., Ltd |
| * |
| * This program is free software; you can redistribute it and/or modify |
| * it under the terms of the GNU General Public License version 2 as |
| * published by the Free Software Foundation. |
| */ |
| |
| #ifndef __VIPX_PM_H__ |
| #define __VIPX_PM_H__ |
| |
| #include <linux/pm_qos.h> |
| |
| struct vipx_system; |
| |
| struct vipx_pm { |
| struct vipx_system *system; |
| struct mutex lock; |
| bool dvfs; |
| unsigned int active_count; |
| #if defined(CONFIG_PM_DEVFREQ) |
| struct pm_qos_request cam_qos_req; |
| int qos_count; |
| unsigned int *qos_table; |
| int default_qos; |
| int resume_qos; |
| int current_qos; |
| #endif |
| }; |
| |
| int vipx_pm_qos_active(struct vipx_pm *pm); |
| int vipx_pm_qos_set_default(struct vipx_pm *pm, int default_qos); |
| int vipx_pm_qos_update(struct vipx_pm *pm, int request_qos); |
| void vipx_pm_qos_suspend(struct vipx_pm *pm); |
| void vipx_pm_qos_resume(struct vipx_pm *pm); |
| |
| void vipx_pm_request_busy(struct vipx_pm *pm); |
| void vipx_pm_request_idle(struct vipx_pm *pm); |
| int vipx_pm_open(struct vipx_pm *pm); |
| void vipx_pm_close(struct vipx_pm *pm); |
| int vipx_pm_probe(struct vipx_system *sys); |
| void vipx_pm_remove(struct vipx_pm *pm); |
| |
| #endif |