| /* |
| * 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_SYSTEM_H__ |
| #define __VIPX_SYSTEM_H__ |
| |
| #include "platform/vipx-clk.h" |
| #include "platform/vipx-ctrl.h" |
| #include "vipx-interface.h" |
| #include "vipx-pm.h" |
| #include "vipx-memory.h" |
| #include "vipx-binary.h" |
| #include "vipx-graphmgr.h" |
| |
| struct vipx_device; |
| |
| struct vipx_system { |
| struct device *dev; |
| void __iomem *reg_ss[REG_MAX]; |
| resource_size_t reg_ss_size[REG_MAX]; |
| void __iomem *itcm; |
| resource_size_t itcm_size; |
| void __iomem *dtcm; |
| resource_size_t dtcm_size; |
| void __iomem *sysreg1; |
| resource_size_t sysreg1_size; |
| void __iomem *sysreg2; |
| resource_size_t sysreg2_size; |
| |
| const struct vipx_clk_ops *clk_ops; |
| const struct vipx_ctrl_ops *ctrl_ops; |
| struct pinctrl *pinctrl; |
| struct vipx_pm pm; |
| struct vipx_memory memory; |
| struct vipx_interface interface; |
| struct vipx_binary binary; |
| struct vipx_graphmgr graphmgr; |
| |
| struct vipx_device *device; |
| }; |
| |
| int vipx_system_fw_bootup(struct vipx_system *sys); |
| |
| int vipx_system_resume(struct vipx_system *sys); |
| int vipx_system_suspend(struct vipx_system *sys); |
| int vipx_system_runtime_resume(struct vipx_system *sys); |
| int vipx_system_runtime_suspend(struct vipx_system *sys); |
| |
| int vipx_system_start(struct vipx_system *sys); |
| int vipx_system_stop(struct vipx_system *sys); |
| int vipx_system_open(struct vipx_system *sys); |
| int vipx_system_close(struct vipx_system *sys); |
| |
| int vipx_system_probe(struct vipx_device *device); |
| void vipx_system_remove(struct vipx_system *sys); |
| |
| #endif |