xref: /freebsd/sys/contrib/ncsw/Peripherals/BM/bm_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          bm_ipc.h
38*0aeed3e9SJustin Hibbits 
39*0aeed3e9SJustin Hibbits  @Description   BM Inter-Partition prototypes, structures and definitions.
40*0aeed3e9SJustin Hibbits *//***************************************************************************/
41*0aeed3e9SJustin Hibbits #ifndef __BM_IPC_H
42*0aeed3e9SJustin Hibbits #define __BM_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         BM_grp Frame Manager API
50*0aeed3e9SJustin Hibbits 
51*0aeed3e9SJustin Hibbits  @Description   BM API functions, definitions and enums
52*0aeed3e9SJustin Hibbits 
53*0aeed3e9SJustin Hibbits  @{
54*0aeed3e9SJustin Hibbits *//***************************************************************************/
55*0aeed3e9SJustin Hibbits 
56*0aeed3e9SJustin Hibbits /**************************************************************************//**
57*0aeed3e9SJustin Hibbits  @Group         BM_IPC_grp BM Inter-Partition messaging Unit
58*0aeed3e9SJustin Hibbits 
59*0aeed3e9SJustin Hibbits  @Description   BM Inter-Partition messaging unit API definitions and enums.
60*0aeed3e9SJustin Hibbits 
61*0aeed3e9SJustin Hibbits  @{
62*0aeed3e9SJustin Hibbits *//***************************************************************************/
63*0aeed3e9SJustin Hibbits 
64*0aeed3e9SJustin Hibbits #define BM_SET_POOL_THRESH          1
65*0aeed3e9SJustin Hibbits #define BM_UNSET_POOL_THRESH        2
66*0aeed3e9SJustin Hibbits #define BM_GET_COUNTER              3
67*0aeed3e9SJustin Hibbits #define BM_GET_REVISION             4
68*0aeed3e9SJustin Hibbits #define BM_FORCE_BPID               5
69*0aeed3e9SJustin Hibbits #define BM_PUT_BPID                 6
70*0aeed3e9SJustin Hibbits #define BM_MASTER_IS_ALIVE          7
71*0aeed3e9SJustin Hibbits 
72*0aeed3e9SJustin Hibbits #define BM_IPC_MAX_REPLY_BODY_SIZE  16
73*0aeed3e9SJustin Hibbits #define BM_IPC_MAX_REPLY_SIZE       (BM_IPC_MAX_REPLY_BODY_SIZE + sizeof(uint32_t))
74*0aeed3e9SJustin Hibbits #define BM_IPC_MAX_MSG_SIZE         30
75*0aeed3e9SJustin Hibbits 
76*0aeed3e9SJustin Hibbits 
77*0aeed3e9SJustin Hibbits #if defined(__MWERKS__) && !defined(__GNUC__)
78*0aeed3e9SJustin Hibbits #pragma pack(push,1)
79*0aeed3e9SJustin Hibbits #endif /* defined(__MWERKS__) && ... */
80*0aeed3e9SJustin Hibbits #define MEM_MAP_START
81*0aeed3e9SJustin Hibbits 
82*0aeed3e9SJustin Hibbits typedef _Packed struct t_BmIpcMsg
83*0aeed3e9SJustin Hibbits {
84*0aeed3e9SJustin Hibbits     uint32_t    msgId;
85*0aeed3e9SJustin Hibbits     uint8_t     msgBody[BM_IPC_MAX_MSG_SIZE];
86*0aeed3e9SJustin Hibbits } _PackedType t_BmIpcMsg;
87*0aeed3e9SJustin Hibbits 
88*0aeed3e9SJustin Hibbits typedef _Packed struct t_BmIpcReply
89*0aeed3e9SJustin Hibbits {
90*0aeed3e9SJustin Hibbits     uint32_t    error;
91*0aeed3e9SJustin Hibbits     uint8_t     replyBody[BM_IPC_MAX_REPLY_BODY_SIZE];
92*0aeed3e9SJustin Hibbits } _PackedType t_BmIpcReply;
93*0aeed3e9SJustin Hibbits 
94*0aeed3e9SJustin Hibbits typedef _Packed struct t_BmIpcPoolThreshParams
95*0aeed3e9SJustin Hibbits {
96*0aeed3e9SJustin Hibbits     uint8_t     bpid;                                   /**< IN */
97*0aeed3e9SJustin Hibbits     uint32_t    thresholds[MAX_DEPLETION_THRESHOLDS];   /**< IN */
98*0aeed3e9SJustin Hibbits } _PackedType t_BmIpcPoolThreshParams;
99*0aeed3e9SJustin Hibbits 
100*0aeed3e9SJustin Hibbits typedef _Packed struct t_BmIpcGetCounter
101*0aeed3e9SJustin Hibbits {
102*0aeed3e9SJustin Hibbits     uint8_t         bpid;       /**< IN */
103*0aeed3e9SJustin Hibbits     uint32_t        enumId;     /**< IN */
104*0aeed3e9SJustin Hibbits } _PackedType t_BmIpcGetCounter;
105*0aeed3e9SJustin Hibbits 
106*0aeed3e9SJustin Hibbits typedef _Packed struct t_BmIpcBpidParams
107*0aeed3e9SJustin Hibbits {
108*0aeed3e9SJustin Hibbits     uint8_t         bpid;       /**< IN */
109*0aeed3e9SJustin Hibbits } _PackedType t_BmIpcBpidParams;
110*0aeed3e9SJustin Hibbits 
111*0aeed3e9SJustin Hibbits typedef _Packed struct t_BmIpcRevisionInfo {
112*0aeed3e9SJustin Hibbits     uint8_t         majorRev;               /**< Major revision */
113*0aeed3e9SJustin Hibbits     uint8_t         minorRev;               /**< Minor revision */
114*0aeed3e9SJustin Hibbits } _PackedType t_BmIpcRevisionInfo;
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 BM_IPC_grp group */
122*0aeed3e9SJustin Hibbits /** @} */ /* end of BM_grp group */
123*0aeed3e9SJustin Hibbits 
124*0aeed3e9SJustin Hibbits 
125*0aeed3e9SJustin Hibbits #endif /* __BM_IPC_H */
126