1*4882a593Smuzhiyun /* SPDX-License-Identifier: GPL-2.0 */ 2*4882a593Smuzhiyun /* 3*4882a593Smuzhiyun * Copyright (C) STMicroelectronics SA 2015 4*4882a593Smuzhiyun * Authors: Yannick Fertre <yannick.fertre@st.com> 5*4882a593Smuzhiyun * Hugues Fruchet <hugues.fruchet@st.com> 6*4882a593Smuzhiyun */ 7*4882a593Smuzhiyun 8*4882a593Smuzhiyun #ifndef HVA_HW_H 9*4882a593Smuzhiyun #define HVA_HW_H 10*4882a593Smuzhiyun 11*4882a593Smuzhiyun #include "hva-mem.h" 12*4882a593Smuzhiyun 13*4882a593Smuzhiyun /* HVA Versions */ 14*4882a593Smuzhiyun #define HVA_VERSION_UNKNOWN 0x000 15*4882a593Smuzhiyun #define HVA_VERSION_V400 0x400 16*4882a593Smuzhiyun 17*4882a593Smuzhiyun /* HVA command types */ 18*4882a593Smuzhiyun enum hva_hw_cmd_type { 19*4882a593Smuzhiyun /* RESERVED = 0x00 */ 20*4882a593Smuzhiyun /* RESERVED = 0x01 */ 21*4882a593Smuzhiyun H264_ENC = 0x02, 22*4882a593Smuzhiyun /* RESERVED = 0x03 */ 23*4882a593Smuzhiyun /* RESERVED = 0x04 */ 24*4882a593Smuzhiyun /* RESERVED = 0x05 */ 25*4882a593Smuzhiyun /* RESERVED = 0x06 */ 26*4882a593Smuzhiyun /* RESERVED = 0x07 */ 27*4882a593Smuzhiyun REMOVE_CLIENT = 0x08, 28*4882a593Smuzhiyun FREEZE_CLIENT = 0x09, 29*4882a593Smuzhiyun START_CLIENT = 0x0A, 30*4882a593Smuzhiyun FREEZE_ALL = 0x0B, 31*4882a593Smuzhiyun START_ALL = 0x0C, 32*4882a593Smuzhiyun REMOVE_ALL = 0x0D 33*4882a593Smuzhiyun }; 34*4882a593Smuzhiyun 35*4882a593Smuzhiyun int hva_hw_probe(struct platform_device *pdev, struct hva_dev *hva); 36*4882a593Smuzhiyun void hva_hw_remove(struct hva_dev *hva); 37*4882a593Smuzhiyun int hva_hw_runtime_suspend(struct device *dev); 38*4882a593Smuzhiyun int hva_hw_runtime_resume(struct device *dev); 39*4882a593Smuzhiyun int hva_hw_execute_task(struct hva_ctx *ctx, enum hva_hw_cmd_type cmd, 40*4882a593Smuzhiyun struct hva_buffer *task); 41*4882a593Smuzhiyun #ifdef CONFIG_VIDEO_STI_HVA_DEBUGFS 42*4882a593Smuzhiyun void hva_hw_dump_regs(struct hva_dev *hva, struct seq_file *s); 43*4882a593Smuzhiyun #endif 44*4882a593Smuzhiyun 45*4882a593Smuzhiyun #endif /* HVA_HW_H */ 46