blob: c2be5b723eb261b412d83e08807ce4a7005afaf2 [file] [log] [blame]
/*
* 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