/* Copyright (c) 2013, The Linux Foundation. All rights reserved. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 and * only version 2 as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * */ #ifndef __Q6_HFI_H__ #define __Q6_HFI_H__ #include #include "vidc_hfi.h" #include "vidc_hfi_helper.h" #include "msm_vidc_resources.h" #define Q6_IFACEQ_QUEUE_SIZE (8 * 1024) struct q6_resources { struct msm_vidc_fw fw; }; struct q6_iface_q_info { spinlock_t lock; u32 q_size; u32 read_idx; u32 write_idx; u8 *buffer; }; struct q6_hfi_device { struct list_head list; struct list_head sess_head; struct q6_iface_q_info event_queue; struct workqueue_struct *vidc_workq; struct work_struct vidc_worker; u32 device_id; msm_vidc_callback callback; struct q6_resources resources; struct msm_vidc_platform_resources *res; void *apr; }; struct q6_apr_cmd_sys_init_packet { struct apr_hdr hdr; struct hfi_cmd_sys_init_packet pkt; }; struct q6_apr_cmd_sys_session_init_packet { struct apr_hdr hdr; struct hfi_cmd_sys_session_init_packet pkt; }; struct q6_apr_session_cmd_pkt { struct apr_hdr hdr; struct vidc_hal_session_cmd_pkt pkt; }; struct q6_apr_cmd_session_set_buffers_packet { struct apr_hdr hdr; struct hfi_cmd_session_set_buffers_packet pkt; }; struct q6_apr_cmd_session_release_buffer_packet { struct apr_hdr hdr; struct hfi_cmd_session_release_buffer_packet pkt; }; struct q6_apr_cmd_session_empty_buffer_compressed_packet { struct apr_hdr hdr; struct hfi_cmd_session_empty_buffer_compressed_packet pkt; }; struct q6_apr_cmd_session_empty_buffer_uncompressed_plane0_packet { struct apr_hdr hdr; struct hfi_cmd_session_empty_buffer_uncompressed_plane0_packet pkt; }; struct q6_apr_cmd_session_fill_buffer_packet { struct apr_hdr hdr; struct hfi_cmd_session_fill_buffer_packet pkt; }; struct q6_apr_cmd_session_parse_sequence_header_packet { struct apr_hdr hdr; struct hfi_cmd_session_parse_sequence_header_packet pkt; }; struct q6_apr_cmd_session_get_sequence_header_packet { struct apr_hdr hdr; struct hfi_cmd_session_get_sequence_header_packet pkt; }; struct q6_apr_cmd_session_get_property_packet { struct apr_hdr hdr; struct hfi_cmd_session_get_property_packet pkt; }; struct q6_apr_cmd_session_flush_packet { struct apr_hdr hdr; struct hfi_cmd_session_flush_packet pkt; }; struct q6_apr_cmd_session_set_property_packet { struct apr_hdr hdr; struct hfi_cmd_session_set_property_packet pkt; }; int q6_hfi_initialize(struct hfi_device *hdev, u32 device_id, struct msm_vidc_platform_resources *res, hfi_cmd_response_callback callback); void q6_hfi_delete_device(void *device); #endif /*#ifndef __Q6_HFI_H__ */