blob: b49065335bfebe5e8a3753e782d7199c8c4b484d [file] [log] [blame]
Dima Zavina404bce2009-01-26 12:32:22 -08001/*
2 * Copyright (c) 2009, Google Inc.
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * * Redistributions of source code must retain the above copyright
9 * notice, this list of conditions and the following disclaimer.
10 * * Redistributions in binary form must reproduce the above copyright
11 * notice, this list of conditions and the following disclaimer in
12 * the documentation and/or other materials provided with the
13 * distribution.
14 *
15 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
16 * "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
17 * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
18 * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE
19 * COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
20 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
21 * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
22 * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
23 * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
24 * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
25 * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 * SUCH DAMAGE.
27 */
28
29#ifndef __PLATFORM_MSM_SHARED_SMEM_H
30#define __PLATFORM_MSM_SHARED_SMEM_H
31
32#include <sys/types.h>
33
34struct smem_proc_comm
35{
36 unsigned command;
37 unsigned status;
38 unsigned data1;
39 unsigned data2;
40};
41
42struct smem_heap_info
43{
44 unsigned initialized;
45 unsigned free_offset;
46 unsigned heap_remaining;
47 unsigned reserved;
48};
49
50struct smem_alloc_info
51{
52 unsigned allocated;
53 unsigned offset;
54 unsigned size;
55 unsigned reserved;
56};
57
58struct smem {
59 struct smem_proc_comm proc_comm[4];
60 unsigned version_info[32];
61 struct smem_heap_info heap_info;
62 struct smem_alloc_info alloc_info[128];
63};
64
65typedef enum {
66 SMEM_SPINLOCK_ARRAY = 7,
67
68 SMEM_AARM_PARTITION_TABLE = 9,
69
70 SMEM_FIRST_VALID_TYPE = SMEM_SPINLOCK_ARRAY,
71 SMEM_LAST_VALID_TYPE = SMEM_AARM_PARTITION_TABLE,
72} smem_mem_type_t;
73
74/* Note: buf MUST be 4byte aligned, and max_len MUST be a multiple of 4. */
75unsigned smem_read_alloc_entry(smem_mem_type_t type, void *buf, int max_len);
76
77#endif /* __PLATFORM_MSM_SHARED_SMEM_H */