xref: /dpdk/drivers/bus/dpaa/include/fsl_usd.h (revision 1094dd940ec0cc4e3ce2c5cd94807350855a17f9)
1d81734caSHemant Agrawal /* SPDX-License-Identifier: (BSD-3-Clause OR GPL-2.0)
223df3960SShreyansh Jain  *
323df3960SShreyansh Jain  * Copyright 2010-2011 Freescale Semiconductor, Inc.
423df3960SShreyansh Jain  * All rights reserved.
5b9c94167SNipun Gupta  * Copyright 2019 NXP
623df3960SShreyansh Jain  *
723df3960SShreyansh Jain  */
823df3960SShreyansh Jain 
923df3960SShreyansh Jain #ifndef __FSL_USD_H
1023df3960SShreyansh Jain #define __FSL_USD_H
1123df3960SShreyansh Jain 
1223df3960SShreyansh Jain #include <compat.h>
138c83f28cSHemant Agrawal #include <dpaa_list.h>
14c47ff048SShreyansh Jain #include <fsl_qman.h>
1523df3960SShreyansh Jain 
16*1094dd94SDavid Marchand #include <rte_compat.h>
17*1094dd94SDavid Marchand 
1823df3960SShreyansh Jain #ifdef __cplusplus
1923df3960SShreyansh Jain extern "C" {
2023df3960SShreyansh Jain #endif
2123df3960SShreyansh Jain 
22f6fadc3eSShreyansh Jain /* Thread-entry/exit hooks; */
23f6fadc3eSShreyansh Jain int qman_thread_init(void);
24f09ede6cSShreyansh Jain int bman_thread_init(void);
25f6fadc3eSShreyansh Jain int qman_thread_finish(void);
26f09ede6cSShreyansh Jain int bman_thread_finish(void);
27f6fadc3eSShreyansh Jain 
2823df3960SShreyansh Jain #define QBMAN_ANY_PORTAL_IDX 0xffffffff
2923df3960SShreyansh Jain 
3023df3960SShreyansh Jain /* Obtain and free raw (unitialized) portals */
3123df3960SShreyansh Jain 
3223df3960SShreyansh Jain struct dpaa_raw_portal {
3323df3960SShreyansh Jain 	/* inputs */
3423df3960SShreyansh Jain 
3523df3960SShreyansh Jain 	/* set to non zero to turn on stashing */
3623df3960SShreyansh Jain 	uint8_t enable_stash;
3723df3960SShreyansh Jain 	/* Stashing attributes for the portal */
3823df3960SShreyansh Jain 	uint32_t cpu;
3923df3960SShreyansh Jain 	uint32_t cache;
4023df3960SShreyansh Jain 	uint32_t window;
4123df3960SShreyansh Jain 
4223df3960SShreyansh Jain 	/* Specifies the stash request queue this portal should use */
4323df3960SShreyansh Jain 	uint8_t sdest;
4423df3960SShreyansh Jain 
457be78d02SJosh Soref 	/* Specifies a specific portal index to map or QBMAN_ANY_PORTAL_IDX
4623df3960SShreyansh Jain 	 * for don't care.  The portal index will be populated by the
4723df3960SShreyansh Jain 	 * driver when the ioctl() successfully completes.
4823df3960SShreyansh Jain 	 */
4923df3960SShreyansh Jain 	uint32_t index;
5023df3960SShreyansh Jain 
5123df3960SShreyansh Jain 	/* outputs */
5223df3960SShreyansh Jain 	uint64_t cinh;
5323df3960SShreyansh Jain 	uint64_t cena;
5423df3960SShreyansh Jain };
5523df3960SShreyansh Jain 
5623df3960SShreyansh Jain int qman_allocate_raw_portal(struct dpaa_raw_portal *portal);
5723df3960SShreyansh Jain int qman_free_raw_portal(struct dpaa_raw_portal *portal);
5823df3960SShreyansh Jain 
5923df3960SShreyansh Jain int bman_allocate_raw_portal(struct dpaa_raw_portal *portal);
6023df3960SShreyansh Jain int bman_free_raw_portal(struct dpaa_raw_portal *portal);
6123df3960SShreyansh Jain 
628e253882SHemant Agrawal /* Obtain thread-local UIO file-descriptors */
631e0f9b07SHemant Agrawal __rte_internal
648e253882SHemant Agrawal int qman_thread_fd(void);
658e253882SHemant Agrawal int bman_thread_fd(void);
668e253882SHemant Agrawal 
67f6fadc3eSShreyansh Jain /* Post-process interrupts. NB, the kernel IRQ handler disables the interrupt
68f6fadc3eSShreyansh Jain  * line before notifying us, and this post-processing re-enables it once
69f6fadc3eSShreyansh Jain  * processing is complete. As such, it is essential to call this before going
70f6fadc3eSShreyansh Jain  * into another blocking read/select/poll.
71f6fadc3eSShreyansh Jain  */
721e0f9b07SHemant Agrawal __rte_internal
73f6fadc3eSShreyansh Jain void qman_thread_irq(void);
74f6fadc3eSShreyansh Jain 
751e0f9b07SHemant Agrawal __rte_internal
761e0f9b07SHemant Agrawal void bman_thread_irq(void);
771e0f9b07SHemant Agrawal __rte_internal
781e0f9b07SHemant Agrawal void qman_fq_portal_thread_irq(struct qman_portal *qp);
791e0f9b07SHemant Agrawal __rte_internal
808e253882SHemant Agrawal void qman_clear_irq(void);
818e253882SHemant Agrawal 
82f6fadc3eSShreyansh Jain /* Global setup */
83f6fadc3eSShreyansh Jain int qman_global_init(void);
84f09ede6cSShreyansh Jain int bman_global_init(void);
85f09ede6cSShreyansh Jain 
869d32ef0fSHemant Agrawal /* Direct portal create and destroy */
871e0f9b07SHemant Agrawal __rte_internal
88a6a75240SNipun Gupta struct qman_portal *fsl_qman_fq_portal_create(int *fd);
89b9c94167SNipun Gupta int fsl_qman_fq_portal_destroy(struct qman_portal *qp);
90b9c94167SNipun Gupta int fsl_qman_fq_portal_init(struct qman_portal *qp);
919d32ef0fSHemant Agrawal 
9223df3960SShreyansh Jain #ifdef __cplusplus
9323df3960SShreyansh Jain }
9423df3960SShreyansh Jain #endif
9523df3960SShreyansh Jain 
9623df3960SShreyansh Jain #endif /* __FSL_USD_H */
97