123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109 |
- /* linux/include/asm-arm/arch-msm/msm_smd.h
- *
- * Copyright (C) 2007 Google, Inc.
- * Author: Brian Swetland <swetland@google.com>
- *
- * This software is licensed under the terms of the GNU General Public
- * License version 2, as published by the Free Software Foundation, and
- * may be copied, distributed, and modified under those terms.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- */
- #ifndef __ASM_ARCH_MSM_SMD_H
- #define __ASM_ARCH_MSM_SMD_H
- typedef struct smd_channel smd_channel_t;
- extern int (*msm_check_for_modem_crash)(void);
- /* warning: notify() may be called before open returns */
- int smd_open(const char *name, smd_channel_t **ch, void *priv,
- void (*notify)(void *priv, unsigned event));
- #define SMD_EVENT_DATA 1
- #define SMD_EVENT_OPEN 2
- #define SMD_EVENT_CLOSE 3
- int smd_close(smd_channel_t *ch);
- /* passing a null pointer for data reads and discards */
- int smd_read(smd_channel_t *ch, void *data, int len);
- /* Write to stream channels may do a partial write and return
- ** the length actually written.
- ** Write to packet channels will never do a partial write --
- ** it will return the requested length written or an error.
- */
- int smd_write(smd_channel_t *ch, const void *data, int len);
- int smd_write_atomic(smd_channel_t *ch, const void *data, int len);
- int smd_write_avail(smd_channel_t *ch);
- int smd_read_avail(smd_channel_t *ch);
- /* Returns the total size of the current packet being read.
- ** Returns 0 if no packets available or a stream channel.
- */
- int smd_cur_packet_size(smd_channel_t *ch);
- /* used for tty unthrottling and the like -- causes the notify()
- ** callback to be called from the same lock context as is used
- ** when it is called from channel updates
- */
- void smd_kick(smd_channel_t *ch);
- #if 0
- /* these are interruptable waits which will block you until the specified
- ** number of bytes are readable or writable.
- */
- int smd_wait_until_readable(smd_channel_t *ch, int bytes);
- int smd_wait_until_writable(smd_channel_t *ch, int bytes);
- #endif
- typedef enum {
- SMD_PORT_DS = 0,
- SMD_PORT_DIAG,
- SMD_PORT_RPC_CALL,
- SMD_PORT_RPC_REPLY,
- SMD_PORT_BT,
- SMD_PORT_CONTROL,
- SMD_PORT_MEMCPY_SPARE1,
- SMD_PORT_DATA1,
- SMD_PORT_DATA2,
- SMD_PORT_DATA3,
- SMD_PORT_DATA4,
- SMD_PORT_DATA5,
- SMD_PORT_DATA6,
- SMD_PORT_DATA7,
- SMD_PORT_DATA8,
- SMD_PORT_DATA9,
- SMD_PORT_DATA10,
- SMD_PORT_DATA11,
- SMD_PORT_DATA12,
- SMD_PORT_DATA13,
- SMD_PORT_DATA14,
- SMD_PORT_DATA15,
- SMD_PORT_DATA16,
- SMD_PORT_DATA17,
- SMD_PORT_DATA18,
- SMD_PORT_DATA19,
- SMD_PORT_DATA20,
- SMD_PORT_GPS_NMEA,
- SMD_PORT_BRIDGE_1,
- SMD_PORT_BRIDGE_2,
- SMD_PORT_BRIDGE_3,
- SMD_PORT_BRIDGE_4,
- SMD_PORT_BRIDGE_5,
- SMD_PORT_LOOPBACK,
- SMD_PORT_CS_APPS_MODEM,
- SMD_PORT_CS_APPS_DSP,
- SMD_PORT_CS_MODEM_DSP,
- SMD_NUM_PORTS,
- } smd_port_id_type;
- #endif
|