4
* DSP-BIOS Bridge driver support functions for TI OMAP processors.
6
* Global MEM constants and types.
8
* Copyright (C) 2008 Texas Instruments, Inc.
10
* This package is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License version 2 as
12
* published by the Free Software Foundation.
14
* THIS PACKAGE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR
15
* IMPLIED WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED
16
* WARRANTIES OF MERCHANTIBILITY AND FITNESS FOR A PARTICULAR PURPOSE.
22
#include <dspbridge/list.h>
24
/* Cmm attributes used in cmm_create() */
26
/* Minimum SM allocation; default 32 bytes. */
27
u32 ul_min_block_size;
30
/* Attributes for CMM_AllocBuf() & CMM_AllocDesc() */
32
u32 ul_seg_id; /* 1,2... are SM segments. 0 is not. */
33
u32 ul_alignment; /* 0,1,2,4....ul_min_block_size */
37
* DSPPa to GPPPa Conversion Factor.
39
* For typical platforms:
40
* converted Address = PaDSP + ( c_factor * addressToConvert).
42
#define CMM_SUBFROMDSPPA -1
43
#define CMM_ADDTODSPPA 1
45
#define CMM_ALLSEGMENTS 0xFFFFFF /* All SegIds */
46
#define CMM_MAXGPPSEGS 1 /* Maximum # of SM segs */
49
* SMSEGs are SM segments the DSP allocates from.
51
* This info is used by the GPP to xlate DSP allocated PAs.
55
u32 dw_seg_base_pa; /* Start Phys address of SM segment */
56
/* Total size in bytes of segment: DSP+GPP */
57
u32 ul_total_seg_size;
58
u32 dw_gpp_base_pa; /* Start Phys addr of Gpp SM seg */
59
u32 ul_gpp_size; /* Size of Gpp SM seg in bytes */
60
u32 dw_dsp_base_va; /* DSP virt base byte address */
61
u32 ul_dsp_size; /* DSP seg size in bytes */
62
/* # of current GPP allocations from this segment */
64
u32 dw_seg_base_va; /* Start Virt address of SM seg */
68
/* CMM useful information */
70
/* # of SM segments registered with this Cmm. */
71
u32 ul_num_gppsm_segs;
72
/* Total # of allocations outstanding for CMM */
73
u32 ul_total_in_use_cnt;
74
/* Min SM block size allocation from cmm_create() */
75
u32 ul_min_block_size;
76
/* Info per registered SM segment. */
77
struct cmm_seginfo seg_info[CMM_MAXGPPSEGS];
80
/* XlatorCreate attributes */
81
struct cmm_xlatorattrs {
82
u32 ul_seg_id; /* segment Id used for SM allocations */
83
u32 dw_dsp_bufs; /* # of DSP-side bufs */
84
u32 dw_dsp_buf_size; /* size of DSP-side bufs in GPP bytes */
85
/* Vm base address alloc'd in client process context */
87
/* dw_vm_size must be >= (dwMaxNumBufs * dwMaxSize) */
92
* Cmm translation types. Use to map SM addresses to process context.
95
CMM_VA2PA = 0, /* Virtual to GPP physical address xlation */
96
CMM_PA2VA = 1, /* GPP Physical to virtual */
97
CMM_VA2DSPPA = 2, /* Va to DSP Pa */
98
CMM_PA2DSPPA = 3, /* GPP Pa to DSP Pa */
99
CMM_DSPPA2PA = 4, /* DSP Pa to GPP Pa */
103
struct cmm_xlatorobject;
105
#endif /* CMMDEFS_ */