| /* SPDX-License-Identifier: GPL-2.0 */ |
| /* |
| * Support for Intel Camera Imaging ISP subsystem. |
| * Copyright (c) 2010 - 2015, Intel Corporation. |
| * |
| * This program is free software; you can redistribute it and/or modify it |
| * under the terms and conditions of the GNU General Public License, |
| * version 2, as published by the Free Software Foundation. |
| * |
| * This program is distributed in the hope 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 _IA_CSS_BUFQ_H |
| #define _IA_CSS_BUFQ_H |
| |
| #include <type_support.h> |
| #include "ia_css_bufq_comm.h" |
| #include "ia_css_buffer.h" |
| #include "ia_css_err.h" |
| #define BUFQ_EVENT_SIZE 4 |
| |
| /** |
| * @brief Query the internal frame ID. |
| * |
| * @param[in] key The query key. |
| * @param[out] val The query value. |
| * |
| * @return |
| * true, if the query succeeds; |
| * false, if the query fails. |
| */ |
| bool ia_css_query_internal_queue_id( |
| enum ia_css_buffer_type buf_type, |
| unsigned int thread_id, |
| enum sh_css_queue_id *val |
| ); |
| |
| /** |
| * @brief Map buffer type to a internal queue id. |
| * |
| * @param[in] thread id Thread in which the buffer type has to be mapped or unmapped |
| * @param[in] buf_type buffer type. |
| * @param[in] map boolean flag to specify map or unmap |
| * @return none |
| */ |
| void ia_css_queue_map( |
| unsigned int thread_id, |
| enum ia_css_buffer_type buf_type, |
| bool map |
| ); |
| |
| /** |
| * @brief Initialize buffer type to a queue id mapping |
| * @return none |
| */ |
| void ia_css_queue_map_init(void); |
| |
| /** |
| * @brief initializes bufq module |
| * It create instances of |
| * -host to SP buffer queue which is a list with predefined size, |
| * MxN queues where M is the number threads and N is the number queues per thread |
| *-SP to host buffer queue , is a list with N queues |
| *-host to SP event communication queue |
| * -SP to host event communication queue |
| * -queue for tagger commands |
| * @return none |
| */ |
| void ia_css_bufq_init(void); |
| |
| /** |
| * @brief Enqueues an item into host to SP buffer queue |
| * |
| * @param thread_index[in] Thread in which the item to be enqueued |
| * |
| * @param queue_id[in] Index of the queue in the specified thread |
| * @param item[in] Object to enqueue. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_enqueue_buffer( |
| int thread_index, |
| int queue_id, |
| uint32_t item); |
| |
| /** |
| * @brief Dequeues an item from SP to host buffer queue. |
| * |
| * @param queue_id[in] Specifies the index of the queue in the list where |
| * the item has to be read. |
| * @paramitem [out] Object to be dequeued into this item. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_dequeue_buffer( |
| int queue_id, |
| uint32_t *item); |
| |
| /** |
| * @brief Enqueue an event item into host to SP communication event queue. |
| * |
| * @param[in] evt_id The event ID. |
| * @param[in] evt_payload_0 The event payload. |
| * @param[in] evt_payload_1 The event payload. |
| * @param[in] evt_payload_2 The event payload. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_enqueue_psys_event( |
| u8 evt_id, |
| u8 evt_payload_0, |
| u8 evt_payload_1, |
| uint8_t evt_payload_2 |
| ); |
| |
| /** |
| * @brief Dequeue an item from SP to host communication event queue. |
| * |
| * @param item Object to be dequeued into this item. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_dequeue_psys_event( |
| u8 item[BUFQ_EVENT_SIZE] |
| |
| ); |
| |
| /** |
| * @brief Enqueue an event item into host to SP EOF event queue. |
| * |
| * @param[in] evt_id The event ID. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_enqueue_isys_event( |
| uint8_t evt_id); |
| |
| /** |
| * @brief Dequeue an item from SP to host communication EOF event queue. |
| |
| * |
| * @param item Object to be dequeued into this item. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_dequeue_isys_event( |
| u8 item[BUFQ_EVENT_SIZE]); |
| |
| /** |
| * @brief Enqueue a tagger command item into tagger command queue.. |
| * |
| * @param item Object to be enqueue. |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_enqueue_tag_cmd( |
| uint32_t item); |
| |
| /** |
| * @brief Uninitializes bufq module. |
| * |
| * @return 0 or error code upon error. |
| * |
| */ |
| int ia_css_bufq_deinit(void); |
| |
| /** |
| * @brief Dump queue states |
| * |
| * @return None |
| * |
| */ |
| void ia_css_bufq_dump_queue_info(void); |
| |
| #endif /* _IA_CSS_BUFQ_H */ |