/* SPDX-License-Identifier: GPL-2.0 */ 
 | 
/* 
 | 
 * Copyright (C) STMicroelectronics SA 2015 
 | 
 * Authors: Yannick Fertre <yannick.fertre@st.com> 
 | 
 *          Hugues Fruchet <hugues.fruchet@st.com> 
 | 
 */ 
 | 
  
 | 
#ifndef HVA_HW_H 
 | 
#define HVA_HW_H 
 | 
  
 | 
#include "hva-mem.h" 
 | 
  
 | 
/* HVA Versions */ 
 | 
#define HVA_VERSION_UNKNOWN    0x000 
 | 
#define HVA_VERSION_V400       0x400 
 | 
  
 | 
/* HVA command types */ 
 | 
enum hva_hw_cmd_type { 
 | 
    /* RESERVED = 0x00 */ 
 | 
    /* RESERVED = 0x01 */ 
 | 
    H264_ENC = 0x02, 
 | 
    /* RESERVED = 0x03 */ 
 | 
    /* RESERVED = 0x04 */ 
 | 
    /* RESERVED = 0x05 */ 
 | 
    /* RESERVED = 0x06 */ 
 | 
    /* RESERVED = 0x07 */ 
 | 
    REMOVE_CLIENT = 0x08, 
 | 
    FREEZE_CLIENT = 0x09, 
 | 
    START_CLIENT = 0x0A, 
 | 
    FREEZE_ALL = 0x0B, 
 | 
    START_ALL = 0x0C, 
 | 
    REMOVE_ALL = 0x0D 
 | 
}; 
 | 
  
 | 
int hva_hw_probe(struct platform_device *pdev, struct hva_dev *hva); 
 | 
void hva_hw_remove(struct hva_dev *hva); 
 | 
int hva_hw_runtime_suspend(struct device *dev); 
 | 
int hva_hw_runtime_resume(struct device *dev); 
 | 
int hva_hw_execute_task(struct hva_ctx *ctx, enum hva_hw_cmd_type cmd, 
 | 
            struct hva_buffer *task); 
 | 
#ifdef CONFIG_VIDEO_STI_HVA_DEBUGFS 
 | 
void hva_hw_dump_regs(struct hva_dev *hva, struct seq_file *s); 
 | 
#endif 
 | 
  
 | 
#endif /* HVA_HW_H */ 
 |