Utils: Remove the v1 firmware generator code
[gstreamer-omap:sysbios-rpmsg.git] / src / utils.mmap / elfload / include / dlw_trgmem.h
1 /*
2  *  Syslink-IPC for TI OMAP Processors
3  *
4  *  Copyright (c) 2008-2010, Texas Instruments Incorporated
5  *  All rights reserved.
6  *
7  *  Redistribution and use in source and binary forms, with or without
8  *  modification, are permitted provided that the following conditions
9  *  are met:
10  *
11  *  *  Redistributions of source code must retain the above copyright
12  *     notice, this list of conditions and the following disclaimer.
13  *
14  *  *  Redistributions in binary form must reproduce the above copyright
15  *     notice, this list of conditions and the following disclaimer in the
16  *     documentation and/or other materials provided with the distribution.
17  *
18  *  *  Neither the name of Texas Instruments Incorporated nor the names of
19  *     its contributors may be used to endorse or promote products derived
20  *     from this software without specific prior written permission.
21  *
22  *  THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
23  *  AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
24  *  THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
25  *  PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR
26  *  CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
27  *  EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
28  *  PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS;
29  *  OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
30  *  WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
31  *  OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
32  *  EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
33  */
34 /*****************************************************************************/
35 /* dlw_trgmem.h                                                              */
36 /*                                                                           */
37 /* Define internal data structures used by RIDL client side for target       */
38 /* memory management.                                                        */
39 /*****************************************************************************/
40 #ifndef DLW_TRGMEM_H
41 #define DLW_TRGMEM_H
42
43 #include "dload_api.h"
44
45 /*---------------------------------------------------------------------------*/
46 /* MIN_BLOCK is the minimum size of a packet.                                */
47 /*---------------------------------------------------------------------------*/
48 #define MIN_BLOCK       4
49
50 /*---------------------------------------------------------------------------*/
51 /* TRG_PACKET is the template for a data packet.  Packet size contains the   */
52 /* number of bytes allocated for the user.  Packets are always allocated     */
53 /* memory in MIN_BLOCK byte chunks.  The list is ordered by packet address   */
54 /* which refers to the target address associated with the first byte of the  */
55 /* packet.  The list itself is allocated out of host memory and is a doubly  */
56 /* linked list to help with easy splitting and merging of elements.          */
57 /*---------------------------------------------------------------------------*/
58 typedef struct _trg_packet
59 {
60    /* Need to change this to TARGET_ADDRESS  packet_addr */
61    uint32_t             packet_addr;   /* target address of packet          */
62    uint32_t             packet_size;   /* number of bytes in this packet    */
63    struct _trg_packet  *prev_packet;   /* prev packet in trg mem list       */
64    struct _trg_packet  *next_packet;   /* next packet in trg mem list       */
65    BOOL                 used_packet;   /* has packet been allocated?        */
66 } TRG_PACKET;
67
68 /*---------------------------------------------------------------------------*/
69 /* Interface into client's target memory manager.                            */
70 /*---------------------------------------------------------------------------*/
71 extern BOOL DLTMM_init(void* client_handle, uint32_t dynMemAddr, uint32_t size);
72 extern BOOL DLTMM_deinit(void* client_handle);
73 extern BOOL DLTMM_malloc(void* client_handle,
74                          struct DLOAD_MEMORY_REQUEST *targ_req,
75                          struct DLOAD_MEMORY_SEGMENT *obj_desc);
76 extern void DLTMM_free(void* client_handle, TARGET_ADDRESS ptr);
77
78 extern void DLTMM_fwrite_trg_mem(FILE *fp);
79 extern void DLTMM_fread_trg_mem(FILE *fp);
80 extern void DLTMM_dump_trg_mem(uint32_t offset, uint32_t nbytes,
81                                FILE* fp);
82
83 #endif /* DLW_TRGMEM_H */