• Home
  • History
  • Annotate
  • Line#
  • Navigate
  • Raw
  • Download
  • only in /asuswrt-rt-n18u-9.0.0.4.380.2695/release/src-rt-6.x.4708/linux/linux-2.6/arch/arm/mach-msm/include/mach/
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
20typedef struct smd_channel smd_channel_t;
21
22extern int (*msm_check_for_modem_crash)(void);
23
24/* warning: notify() may be called before open returns */
25int smd_open(const char *name, smd_channel_t **ch, void *priv,
26	     void (*notify)(void *priv, unsigned event));
27
28#define SMD_EVENT_DATA 1
29#define SMD_EVENT_OPEN 2
30#define SMD_EVENT_CLOSE 3
31
32int smd_close(smd_channel_t *ch);
33
34/* passing a null pointer for data reads and discards */
35int smd_read(smd_channel_t *ch, void *data, int len);
36
37/* Write to stream channels may do a partial write and return
38** the length actually written.
39** Write to packet channels will never do a partial write --
40** it will return the requested length written or an error.
41*/
42int smd_write(smd_channel_t *ch, const void *data, int len);
43int smd_write_atomic(smd_channel_t *ch, const void *data, int len);
44
45int smd_write_avail(smd_channel_t *ch);
46int smd_read_avail(smd_channel_t *ch);
47
48/* Returns the total size of the current packet being read.
49** Returns 0 if no packets available or a stream channel.
50*/
51int smd_cur_packet_size(smd_channel_t *ch);
52
53/* used for tty unthrottling and the like -- causes the notify()
54** callback to be called from the same lock context as is used
55** when it is called from channel updates
56*/
57void smd_kick(smd_channel_t *ch);
58
59
60
61typedef enum {
62	SMD_PORT_DS = 0,
63	SMD_PORT_DIAG,
64	SMD_PORT_RPC_CALL,
65	SMD_PORT_RPC_REPLY,
66	SMD_PORT_BT,
67	SMD_PORT_CONTROL,
68	SMD_PORT_MEMCPY_SPARE1,
69	SMD_PORT_DATA1,
70	SMD_PORT_DATA2,
71	SMD_PORT_DATA3,
72	SMD_PORT_DATA4,
73	SMD_PORT_DATA5,
74	SMD_PORT_DATA6,
75	SMD_PORT_DATA7,
76	SMD_PORT_DATA8,
77	SMD_PORT_DATA9,
78	SMD_PORT_DATA10,
79	SMD_PORT_DATA11,
80	SMD_PORT_DATA12,
81	SMD_PORT_DATA13,
82	SMD_PORT_DATA14,
83	SMD_PORT_DATA15,
84	SMD_PORT_DATA16,
85	SMD_PORT_DATA17,
86	SMD_PORT_DATA18,
87	SMD_PORT_DATA19,
88	SMD_PORT_DATA20,
89	SMD_PORT_GPS_NMEA,
90	SMD_PORT_BRIDGE_1,
91	SMD_PORT_BRIDGE_2,
92	SMD_PORT_BRIDGE_3,
93	SMD_PORT_BRIDGE_4,
94	SMD_PORT_BRIDGE_5,
95	SMD_PORT_LOOPBACK,
96	SMD_PORT_CS_APPS_MODEM,
97	SMD_PORT_CS_APPS_DSP,
98	SMD_PORT_CS_MODEM_DSP,
99	SMD_NUM_PORTS,
100} smd_port_id_type;
101
102#endif
103