File Index
Files and directories
Sign in
FILE

knav_qmss.h

File preview with syntax highlighting.

linux-6.19.14/include/linux/soc/ti/knav_qmss.h C
 1/* SPDX-License-Identifier: GPL-2.0-only */
 2/*
 3 * Keystone Navigator Queue Management Sub-System header
 4 *
 5 * Copyright (C) 2014 Texas Instruments Incorporated - https://www.ti.com
 6 * Author:	Sandeep Nair <sandeep_n@ti.com>
 7 *		Cyril Chemparathy <cyril@ti.com>
 8 *		Santosh Shilimkar <santosh.shilimkar@ti.com>
 9 */
10
11#ifndef __SOC_TI_KNAV_QMSS_H__
12#define __SOC_TI_KNAV_QMSS_H__
13
14#include <linux/err.h>
15#include <linux/time.h>
16#include <linux/atomic.h>
17#include <linux/device.h>
18#include <linux/fcntl.h>
19#include <linux/dma-mapping.h>
20
21/* queue types */
22#define KNAV_QUEUE_QPEND	((unsigned)-2) /* interruptible qpend queue */
23#define KNAV_QUEUE_ACC		((unsigned)-3) /* Accumulated queue */
24#define KNAV_QUEUE_GP		((unsigned)-4) /* General purpose queue */
25
26/* queue flags */
27#define KNAV_QUEUE_SHARED	0x0001		/* Queue can be shared */
28
29/**
30 * enum knav_queue_ctrl_cmd -	queue operations.
31 * @KNAV_QUEUE_GET_ID:		Get the ID number for an open queue
32 * @KNAV_QUEUE_FLUSH:		forcibly empty a queue if possible
33 * @KNAV_QUEUE_SET_NOTIFIER:	Set a notifier callback to a queue handle.
34 * @KNAV_QUEUE_ENABLE_NOTIFY:	Enable notifier callback for a queue handle.
35 * @KNAV_QUEUE_DISABLE_NOTIFY:	Disable notifier callback for a queue handle.
36 * @KNAV_QUEUE_GET_COUNT:	Get number of queues.
37 */
38enum knav_queue_ctrl_cmd {
39	KNAV_QUEUE_GET_ID,
40	KNAV_QUEUE_FLUSH,
41	KNAV_QUEUE_SET_NOTIFIER,
42	KNAV_QUEUE_ENABLE_NOTIFY,
43	KNAV_QUEUE_DISABLE_NOTIFY,
44	KNAV_QUEUE_GET_COUNT
45};
46
47/* Queue notifier callback prototype */
48typedef void (*knav_queue_notify_fn)(void *arg);
49
50/**
51 * struct knav_queue_notify_config:	Notifier configuration
52 * @fn:					Notifier function
53 * @fn_arg:				Notifier function arguments
54 */
55struct knav_queue_notify_config {
56	knav_queue_notify_fn fn;
57	void *fn_arg;
58};
59
60void *knav_queue_open(const char *name, unsigned id,
61					unsigned flags);
62void knav_queue_close(void *qhandle);
63int knav_queue_device_control(void *qhandle,
64				enum knav_queue_ctrl_cmd cmd,
65				unsigned long arg);
66dma_addr_t knav_queue_pop(void *qhandle, unsigned *size);
67int knav_queue_push(void *qhandle, dma_addr_t dma,
68				unsigned size, unsigned flags);
69
70void *knav_pool_create(const char *name,
71				int num_desc, int region_id);
72void knav_pool_destroy(void *ph);
73int knav_pool_count(void *ph);
74void *knav_pool_desc_get(void *ph);
75void knav_pool_desc_put(void *ph, void *desc);
76int knav_pool_desc_map(void *ph, void *desc, unsigned size,
77					dma_addr_t *dma, unsigned *dma_sz);
78void *knav_pool_desc_unmap(void *ph, dma_addr_t dma, unsigned dma_sz);
79dma_addr_t knav_pool_desc_virt_to_dma(void *ph, void *virt);
80void *knav_pool_desc_dma_to_virt(void *ph, dma_addr_t dma);
81bool knav_qmss_device_ready(void);
82
83#endif /* __SOC_TI_KNAV_QMSS_H__ */
~/ Read-only file preview.