GUI: Fix Tomato RAF theme for all builds. Compilation typo.
[tomato.git] / release / src-rt-6.x.4708 / linux / linux-2.6.36 / drivers / staging / tidspbridge / include / dspbridge / cmmdefs.h
blobfbff372d2f51de1ed588a5da053dc69b17d11cc6
1 /*
2 * cmmdefs.h
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.
19 #ifndef CMMDEFS_
20 #define CMMDEFS_
22 #include <dspbridge/list.h>
24 /* Cmm attributes used in cmm_create() */
25 struct cmm_mgrattrs {
26 /* Minimum SM allocation; default 32 bytes. */
27 u32 ul_min_block_size;
30 /* Attributes for CMM_AllocBuf() & CMM_AllocDesc() */
31 struct cmm_attrs {
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.
54 struct cmm_seginfo {
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 */
63 u32 ul_in_use_cnt;
64 u32 dw_seg_base_va; /* Start Virt address of SM seg */
68 /* CMM useful information */
69 struct cmm_info {
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 */
86 void *vm_base;
87 /* dw_vm_size must be >= (dwMaxNumBufs * dwMaxSize) */
88 u32 dw_vm_size;
92 * Cmm translation types. Use to map SM addresses to process context.
94 enum cmm_xlatetype {
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 */
102 struct cmm_object;
103 struct cmm_xlatorobject;
105 #endif /* CMMDEFS_ */