]>
Commit | Line | Data |
---|---|---|
e79753ed PM |
1 | /* linux/include/asm-arm/arch-msm/msm_smd.h |
2 | * | |
3 | * Copyright (C) 2007 Google, Inc. | |
4 | * Author: Brian Swetland <swetland@google.com> | |
5 | * | |
6 | * This software is licensed under the terms of the GNU General Public | |
7 | * License version 2, as published by the Free Software Foundation, and | |
8 | * may be copied, distributed, and modified under those terms. | |
9 | * | |
10 | * This program is distributed in the hope that it will be useful, | |
11 | * but WITHOUT ANY WARRANTY; without even the implied warranty of | |
12 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | |
13 | * GNU General Public License for more details. | |
14 | * | |
15 | */ | |
16 | ||
17 | #ifndef __ASM_ARCH_MSM_SMD_H | |
18 | #define __ASM_ARCH_MSM_SMD_H | |
19 | ||
20 | typedef struct smd_channel smd_channel_t; | |
21 | ||
22 | /* warning: notify() may be called before open returns */ | |
23 | int smd_open(const char *name, smd_channel_t **ch, void *priv, | |
24 | void (*notify)(void *priv, unsigned event)); | |
25 | ||
26 | #define SMD_EVENT_DATA 1 | |
27 | #define SMD_EVENT_OPEN 2 | |
28 | #define SMD_EVENT_CLOSE 3 | |
29 | ||
30 | int smd_close(smd_channel_t *ch); | |
31 | ||
32 | /* passing a null pointer for data reads and discards */ | |
33 | int smd_read(smd_channel_t *ch, void *data, int len); | |
34 | ||
35 | /* Write to stream channels may do a partial write and return | |
36 | ** the length actually written. | |
37 | ** Write to packet channels will never do a partial write -- | |
38 | ** it will return the requested length written or an error. | |
39 | */ | |
40 | int smd_write(smd_channel_t *ch, const void *data, int len); | |
41 | ||
42 | int smd_write_avail(smd_channel_t *ch); | |
43 | int smd_read_avail(smd_channel_t *ch); | |
44 | ||
45 | /* Returns the total size of the current packet being read. | |
46 | ** Returns 0 if no packets available or a stream channel. | |
47 | */ | |
48 | int smd_cur_packet_size(smd_channel_t *ch); | |
49 | ||
50 | /* used for tty unthrottling and the like -- causes the notify() | |
51 | ** callback to be called from the same lock context as is used | |
52 | ** when it is called from channel updates | |
53 | */ | |
54 | void smd_kick(smd_channel_t *ch); | |
55 | ||
56 | ||
57 | #if 0 | |
58 | /* these are interruptable waits which will block you until the specified | |
59 | ** number of bytes are readable or writable. | |
60 | */ | |
61 | int smd_wait_until_readable(smd_channel_t *ch, int bytes); | |
62 | int smd_wait_until_writable(smd_channel_t *ch, int bytes); | |
63 | #endif | |
64 | ||
65 | typedef enum | |
66 | { | |
67 | SMD_PORT_DS = 0, | |
68 | SMD_PORT_DIAG, | |
69 | SMD_PORT_RPC_CALL, | |
70 | SMD_PORT_RPC_REPLY, | |
71 | SMD_PORT_BT, | |
72 | SMD_PORT_CONTROL, | |
73 | SMD_PORT_MEMCPY_SPARE1, | |
74 | SMD_PORT_DATA1, | |
75 | SMD_PORT_DATA2, | |
76 | SMD_PORT_DATA3, | |
77 | SMD_PORT_DATA4, | |
78 | SMD_PORT_DATA5, | |
79 | SMD_PORT_DATA6, | |
80 | SMD_PORT_DATA7, | |
81 | SMD_PORT_DATA8, | |
82 | SMD_PORT_DATA9, | |
83 | SMD_PORT_DATA10, | |
84 | SMD_PORT_DATA11, | |
85 | SMD_PORT_DATA12, | |
86 | SMD_PORT_DATA13, | |
87 | SMD_PORT_DATA14, | |
88 | SMD_PORT_DATA15, | |
89 | SMD_PORT_DATA16, | |
90 | SMD_PORT_DATA17, | |
91 | SMD_PORT_DATA18, | |
92 | SMD_PORT_DATA19, | |
93 | SMD_PORT_DATA20, | |
94 | SMD_PORT_GPS_NMEA, | |
95 | SMD_PORT_BRIDGE_1, | |
96 | SMD_PORT_BRIDGE_2, | |
97 | SMD_PORT_BRIDGE_3, | |
98 | SMD_PORT_BRIDGE_4, | |
99 | SMD_PORT_BRIDGE_5, | |
100 | SMD_PORT_LOOPBACK, | |
101 | SMD_PORT_CS_APPS_MODEM, | |
102 | SMD_PORT_CS_APPS_DSP, | |
103 | SMD_PORT_CS_MODEM_DSP, | |
104 | SMD_NUM_PORTS, | |
105 | } smd_port_id_type; | |
106 | ||
107 | #endif |