PageRenderTime 20ms CodeModel.GetById 16ms app.highlight 2ms RepoModel.GetById 1ms app.codeStats 0ms

/arch/arm/mach-msm/include/mach/msm_smd.h

https://github.com/AICP/kernel_asus_grouper
C Header | 109 lines | 62 code | 15 blank | 32 comment | 0 complexity | bfb6a73cb0230be6b89a750b9b8676ea MD5 | raw file
  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#if 0
 61/* these are interruptable waits which will block you until the specified
 62** number of bytes are readable or writable.
 63*/
 64int smd_wait_until_readable(smd_channel_t *ch, int bytes);
 65int smd_wait_until_writable(smd_channel_t *ch, int bytes);
 66#endif
 67
 68typedef enum {
 69	SMD_PORT_DS = 0,
 70	SMD_PORT_DIAG,
 71	SMD_PORT_RPC_CALL,
 72	SMD_PORT_RPC_REPLY,
 73	SMD_PORT_BT,
 74	SMD_PORT_CONTROL,
 75	SMD_PORT_MEMCPY_SPARE1,
 76	SMD_PORT_DATA1,
 77	SMD_PORT_DATA2,
 78	SMD_PORT_DATA3,
 79	SMD_PORT_DATA4,
 80	SMD_PORT_DATA5,
 81	SMD_PORT_DATA6,
 82	SMD_PORT_DATA7,
 83	SMD_PORT_DATA8,
 84	SMD_PORT_DATA9,
 85	SMD_PORT_DATA10,
 86	SMD_PORT_DATA11,
 87	SMD_PORT_DATA12,
 88	SMD_PORT_DATA13,
 89	SMD_PORT_DATA14,
 90	SMD_PORT_DATA15,
 91	SMD_PORT_DATA16,
 92	SMD_PORT_DATA17,
 93	SMD_PORT_DATA18,
 94	SMD_PORT_DATA19,
 95	SMD_PORT_DATA20,
 96	SMD_PORT_GPS_NMEA,
 97	SMD_PORT_BRIDGE_1,
 98	SMD_PORT_BRIDGE_2,
 99	SMD_PORT_BRIDGE_3,
100	SMD_PORT_BRIDGE_4,
101	SMD_PORT_BRIDGE_5,
102	SMD_PORT_LOOPBACK,
103	SMD_PORT_CS_APPS_MODEM,
104	SMD_PORT_CS_APPS_DSP,
105	SMD_PORT_CS_MODEM_DSP,
106	SMD_NUM_PORTS,
107} smd_port_id_type;
108
109#endif