xref: /freebsd/sys/contrib/ncsw/Peripherals/QM/qm_ipc.h (revision 82aa34e6fa1cd5a4ad401383522daf51412ea4b2)
1*0aeed3e9SJustin Hibbits /******************************************************************************
2*0aeed3e9SJustin Hibbits 
3*0aeed3e9SJustin Hibbits  � 1995-2003, 2004, 2005-2011 Freescale Semiconductor, Inc.
4*0aeed3e9SJustin Hibbits  All rights reserved.
5*0aeed3e9SJustin Hibbits 
6*0aeed3e9SJustin Hibbits  This is proprietary source code of Freescale Semiconductor Inc.,
7*0aeed3e9SJustin Hibbits  and its use is subject to the NetComm Device Drivers EULA.
8*0aeed3e9SJustin Hibbits  The copyright notice above does not evidence any actual or intended
9*0aeed3e9SJustin Hibbits  publication of such source code.
10*0aeed3e9SJustin Hibbits 
11*0aeed3e9SJustin Hibbits  ALTERNATIVELY, redistribution and use in source and binary forms, with
12*0aeed3e9SJustin Hibbits  or without modification, are permitted provided that the following
13*0aeed3e9SJustin Hibbits  conditions are met:
14*0aeed3e9SJustin Hibbits      * Redistributions of source code must retain the above copyright
15*0aeed3e9SJustin Hibbits        notice, this list of conditions and the following disclaimer.
16*0aeed3e9SJustin Hibbits      * Redistributions in binary form must reproduce the above copyright
17*0aeed3e9SJustin Hibbits        notice, this list of conditions and the following disclaimer in the
18*0aeed3e9SJustin Hibbits        documentation and/or other materials provided with the distribution.
19*0aeed3e9SJustin Hibbits      * Neither the name of Freescale Semiconductor nor the
20*0aeed3e9SJustin Hibbits        names of its contributors may be used to endorse or promote products
21*0aeed3e9SJustin Hibbits        derived from this software without specific prior written permission.
22*0aeed3e9SJustin Hibbits 
23*0aeed3e9SJustin Hibbits  THIS SOFTWARE IS PROVIDED BY Freescale Semiconductor ``AS IS'' AND ANY
24*0aeed3e9SJustin Hibbits  EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
25*0aeed3e9SJustin Hibbits  WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
26*0aeed3e9SJustin Hibbits  DISCLAIMED. IN NO EVENT SHALL Freescale Semiconductor BE LIABLE FOR ANY
27*0aeed3e9SJustin Hibbits  DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
28*0aeed3e9SJustin Hibbits  (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
29*0aeed3e9SJustin Hibbits  LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
30*0aeed3e9SJustin Hibbits  ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
31*0aeed3e9SJustin Hibbits  (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
32*0aeed3e9SJustin Hibbits  SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33*0aeed3e9SJustin Hibbits  *
34*0aeed3e9SJustin Hibbits 
35*0aeed3e9SJustin Hibbits  **************************************************************************/
36*0aeed3e9SJustin Hibbits /**************************************************************************//**
37*0aeed3e9SJustin Hibbits  @File          QM_ipc.h
38*0aeed3e9SJustin Hibbits 
39*0aeed3e9SJustin Hibbits  @Description   QM Inter-Partition prototypes, structures and definitions.
40*0aeed3e9SJustin Hibbits *//***************************************************************************/
41*0aeed3e9SJustin Hibbits #ifndef __QM_IPC_H
42*0aeed3e9SJustin Hibbits #define __QM_IPC_H
43*0aeed3e9SJustin Hibbits 
44*0aeed3e9SJustin Hibbits #include "error_ext.h"
45*0aeed3e9SJustin Hibbits #include "std_ext.h"
46*0aeed3e9SJustin Hibbits 
47*0aeed3e9SJustin Hibbits 
48*0aeed3e9SJustin Hibbits /**************************************************************************//**
49*0aeed3e9SJustin Hibbits  @Group         QM_grp Frame Manager API
50*0aeed3e9SJustin Hibbits 
51*0aeed3e9SJustin Hibbits  @Description   QM API functions, definitions and enums
52*0aeed3e9SJustin Hibbits 
53*0aeed3e9SJustin Hibbits  @{
54*0aeed3e9SJustin Hibbits *//***************************************************************************/
55*0aeed3e9SJustin Hibbits 
56*0aeed3e9SJustin Hibbits /**************************************************************************//**
57*0aeed3e9SJustin Hibbits  @Group         QM_IPC_grp Qm Inter-Partition messaging Unit
58*0aeed3e9SJustin Hibbits 
59*0aeed3e9SJustin Hibbits  @Description   QM Inter-Partition messaging unit API definitions and enums.
60*0aeed3e9SJustin Hibbits 
61*0aeed3e9SJustin Hibbits  @{
62*0aeed3e9SJustin Hibbits *//***************************************************************************/
63*0aeed3e9SJustin Hibbits 
64*0aeed3e9SJustin Hibbits #define QM_FORCE_FQID               1
65*0aeed3e9SJustin Hibbits #define QM_PUT_FQID                 2
66*0aeed3e9SJustin Hibbits #define QM_GET_COUNTER              3
67*0aeed3e9SJustin Hibbits #define QM_GET_SET_PORTAL_PARAMS    4
68*0aeed3e9SJustin Hibbits #define QM_GET_REVISION             5
69*0aeed3e9SJustin Hibbits #define QM_MASTER_IS_ALIVE          6
70*0aeed3e9SJustin Hibbits 
71*0aeed3e9SJustin Hibbits #define QM_IPC_MAX_REPLY_BODY_SIZE  16
72*0aeed3e9SJustin Hibbits #define QM_IPC_MAX_REPLY_SIZE       (QM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t))
73*0aeed3e9SJustin Hibbits #define QM_IPC_MAX_MSG_SIZE         30
74*0aeed3e9SJustin Hibbits 
75*0aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
76*0aeed3e9SJustin Hibbits #pragma pack(push,1)
77*0aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
78*0aeed3e9SJustin Hibbits #define MEM_MAP_START
79*0aeed3e9SJustin Hibbits 
80*0aeed3e9SJustin Hibbits typedef _Packed struct t_QmIpcMsg
81*0aeed3e9SJustin Hibbits {
82*0aeed3e9SJustin Hibbits     uint32_t    msgId;
83*0aeed3e9SJustin Hibbits     uint8_t     msgBody[QM_IPC_MAX_MSG_SIZE];
84*0aeed3e9SJustin Hibbits } _PackedType   t_QmIpcMsg;
85*0aeed3e9SJustin Hibbits 
86*0aeed3e9SJustin Hibbits typedef _Packed struct t_QmIpcReply
87*0aeed3e9SJustin Hibbits {
88*0aeed3e9SJustin Hibbits     uint32_t    error;
89*0aeed3e9SJustin Hibbits     uint8_t     replyBody[QM_IPC_MAX_REPLY_BODY_SIZE];
90*0aeed3e9SJustin Hibbits } _PackedType t_QmIpcReply;
91*0aeed3e9SJustin Hibbits 
92*0aeed3e9SJustin Hibbits typedef _Packed struct t_QmIpcGetCounter
93*0aeed3e9SJustin Hibbits {
94*0aeed3e9SJustin Hibbits     uint32_t        enumId;     /**< IN */
95*0aeed3e9SJustin Hibbits } _PackedType t_QmIpcGetCounter;
96*0aeed3e9SJustin Hibbits 
97*0aeed3e9SJustin Hibbits typedef _Packed struct t_QmIpcFqidParams
98*0aeed3e9SJustin Hibbits {
99*0aeed3e9SJustin Hibbits     uint32_t         fqid;       /**< IN */
100*0aeed3e9SJustin Hibbits     uint32_t         size;       /**< IN */
101*0aeed3e9SJustin Hibbits } _PackedType t_QmIpcFqidParams;
102*0aeed3e9SJustin Hibbits 
103*0aeed3e9SJustin Hibbits typedef _Packed struct t_QmIpcPortalInitParams {
104*0aeed3e9SJustin Hibbits     uint8_t             portalId;       /**< IN */
105*0aeed3e9SJustin Hibbits     uint8_t             stashDestQueue; /**< IN */
106*0aeed3e9SJustin Hibbits     uint16_t            liodn;          /**< IN */
107*0aeed3e9SJustin Hibbits     uint16_t            dqrrLiodn;      /**< IN */
108*0aeed3e9SJustin Hibbits     uint16_t            fdFqLiodn;      /**< IN */
109*0aeed3e9SJustin Hibbits } _PackedType t_QmIpcPortalInitParams;
110*0aeed3e9SJustin Hibbits 
111*0aeed3e9SJustin Hibbits typedef _Packed struct t_QmIpcRevisionInfo {
112*0aeed3e9SJustin Hibbits     uint8_t         majorRev;               /**< OUT: Major revision */
113*0aeed3e9SJustin Hibbits     uint8_t         minorRev;               /**< OUT: Minor revision */
114*0aeed3e9SJustin Hibbits } _PackedType t_QmIpcRevisionInfo;
115*0aeed3e9SJustin Hibbits 
116*0aeed3e9SJustin Hibbits #define MEM_MAP_END
117*0aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
118*0aeed3e9SJustin Hibbits #pragma pack(pop)
119*0aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
120*0aeed3e9SJustin Hibbits 
121*0aeed3e9SJustin Hibbits /** @} */ /* end of QM_IPC_grp group */
122*0aeed3e9SJustin Hibbits /** @} */ /* end of QM_grp group */
123*0aeed3e9SJustin Hibbits 
124*0aeed3e9SJustin Hibbits 
125*0aeed3e9SJustin Hibbits #endif /* __QM_IPC_H */
126