drivers/staging/media/atomisp/pci/runtime/queue/interface/ia_css_queue.h

Source file repositories/reference/linux-study-clean/drivers/staging/media/atomisp/pci/runtime/queue/interface/ia_css_queue.h

File Facts

System
Linux kernel
Corpus path
drivers/staging/media/atomisp/pci/runtime/queue/interface/ia_css_queue.h
Extension
.h
Size
4799 bytes
Lines
168
Domain
Driver Families
Bucket
drivers/staging
Inferred role
Driver Families: implementation source
Status
source implementation candidate

Why This File Exists

Repeatable hardware-adapter layer. Deep compatibility for every driver is out of scope; this atlas records patterns, probe lifecycles, bus glue, IRQ/DMA usage, and links back to core abstractions.

Dependency Surface

Detected Declarations

Annotated Snippet

struct ia_css_queue_local {
	ia_css_circbuf_desc_t *cb_desc; /*Circbuf desc for local queues*/
	ia_css_circbuf_elem_t *cb_elems; /*Circbuf elements*/
};

typedef struct ia_css_queue_local ia_css_queue_local_t;

/* Handle for queue object*/
typedef struct ia_css_queue ia_css_queue_t;

/*****************************************************************************
 * Queue Public APIs
 *****************************************************************************/
/* @brief Initialize a local queue instance.
 *
 * @param[out] qhandle. Handle to queue instance for use with API
 * @param[in]  desc.   Descriptor with queue properties filled-in
 * @return     0      - Successful init of local queue instance.
 * @return     -EINVAL - Invalid argument.
 *
 */
int ia_css_queue_local_init(
    ia_css_queue_t *qhandle,
    ia_css_queue_local_t *desc);

/* @brief Initialize a remote queue instance
 *
 * @param[out] qhandle. Handle to queue instance for use with API
 * @param[in]  desc.   Descriptor with queue properties filled-in
 * @return     0      - Successful init of remote queue instance.
 * @return     -EINVAL - Invalid argument.
 */
int ia_css_queue_remote_init(
    ia_css_queue_t *qhandle,
    ia_css_queue_remote_t *desc);

/* @brief Uninitialize a queue instance
 *
 * @param[in]  qhandle. Handle to queue instance
 * @return     0 - Successful uninit.
 *
 */
int ia_css_queue_uninit(
    ia_css_queue_t *qhandle);

/* @brief Enqueue an item in the queue instance
 *
 * @param[in]  qhandle. Handle to queue instance
 * @param[in]  item.    Object to be enqueued.
 * @return     0       - Successful enqueue.
 * @return     -EINVAL  - Invalid argument.
 * @return     -ENOBUFS - Queue is full.
 *
 */
int ia_css_queue_enqueue(
    ia_css_queue_t *qhandle,
    uint32_t item);

/* @brief Dequeue an item from the queue instance
 *
 * @param[in]  qhandle. Handle to queue instance
 * @param[out] item.    Object to be dequeued into this item.

 * @return     0       - Successful dequeue.
 * @return     -EINVAL  - Invalid argument.
 * @return     -ENODATA - Queue is empty.
 *
 */
int ia_css_queue_dequeue(
    ia_css_queue_t *qhandle,
    uint32_t *item);

/* @brief Check if the queue is empty
 *
 * @param[in]  qhandle.  Handle to queue instance
 * @param[in]  is_empty  True if empty, False if not.
 * @return     0       - Successful access state.
 * @return     -EINVAL  - Invalid argument.
 * @return     -ENOSYS  - Function not implemented.
 *
 */
int ia_css_queue_is_empty(
    ia_css_queue_t *qhandle,
    bool *is_empty);

/* @brief Check if the queue is full
 *
 * @param[in]  qhandle.  Handle to queue instance
 * @param[in]  is_full   True if Full, False if not.
 * @return     0       - Successfully access state.

Annotation

Implementation Notes