/* * 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