~ubuntu-branches/debian/wheezy/linux-2.6/wheezy

« back to all changes in this revision

Viewing changes to drivers/staging/tidspbridge/include/dspbridge/cmmdefs.h

  • Committer: Bazaar Package Importer
  • Author(s): Ben Hutchings, Ben Hutchings, Aurelien Jarno, Martin Michlmayr
  • Date: 2011-04-06 13:53:30 UTC
  • mfrom: (43.1.5 sid)
  • Revision ID: james.westby@ubuntu.com-20110406135330-wjufxhd0tvn3zx4z
Tags: 2.6.38-3
[ Ben Hutchings ]
* [ppc64] Add to linux-tools package architectures (Closes: #620124)
* [amd64] Save cr4 to mmu_cr4_features at boot time (Closes: #620284)
* appletalk: Fix bugs introduced when removing use of BKL
* ALSA: Fix yet another race in disconnection
* cciss: Fix lost command issue
* ath9k: Fix kernel panic in AR2427
* ses: Avoid kernel panic when lun 0 is not mapped
* PCI/ACPI: Report ASPM support to BIOS if not disabled from command line

[ Aurelien Jarno ]
* rtlwifi: fix build when PCI is not enabled.

[ Martin Michlmayr ]
* rtlwifi: Eliminate udelay calls with too large values (Closes: #620204)

Show diffs side-by-side

added added

removed removed

Lines of Context:
 
1
/*
 
2
 * cmmdefs.h
 
3
 *
 
4
 * DSP-BIOS Bridge driver support functions for TI OMAP processors.
 
5
 *
 
6
 * Global MEM constants and types.
 
7
 *
 
8
 * Copyright (C) 2008 Texas Instruments, Inc.
 
9
 *
 
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.
 
13
 *
 
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.
 
17
 */
 
18
 
 
19
#ifndef CMMDEFS_
 
20
#define CMMDEFS_
 
21
 
 
22
#include <dspbridge/list.h>
 
23
 
 
24
/* Cmm attributes used in cmm_create() */
 
25
struct cmm_mgrattrs {
 
26
        /* Minimum SM allocation; default 32 bytes. */
 
27
        u32 ul_min_block_size;
 
28
};
 
29
 
 
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 */
 
34
};
 
35
 
 
36
/*
 
37
 *  DSPPa to GPPPa Conversion Factor.
 
38
 *
 
39
 *  For typical platforms:
 
40
 *      converted Address = PaDSP + ( c_factor * addressToConvert).
 
41
 */
 
42
#define CMM_SUBFROMDSPPA        -1
 
43
#define CMM_ADDTODSPPA          1
 
44
 
 
45
#define CMM_ALLSEGMENTS         0xFFFFFF        /* All SegIds */
 
46
#define CMM_MAXGPPSEGS          1       /* Maximum # of SM segs */
 
47
 
 
48
/*
 
49
 *  SMSEGs are SM segments the DSP allocates from.
 
50
 *
 
51
 *  This info is used by the GPP to xlate DSP allocated PAs.
 
52
 */
 
53
 
 
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 */
 
65
 
 
66
};
 
67
 
 
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];
 
78
};
 
79
 
 
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;
 
89
};
 
90
 
 
91
/*
 
92
 * Cmm translation types. Use to map SM addresses to process context.
 
93
 */
 
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 */
 
100
};
 
101
 
 
102
struct cmm_object;
 
103
struct cmm_xlatorobject;
 
104
 
 
105
#endif /* CMMDEFS_ */