123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			123 lines
		
	
	
		
			3.0 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* 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;
 | |
| 
 | |
| /* 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
 | |
| int smd_wait_until_opened(smd_channel_t *ch, int timeout_us);
 | |
| 
 | |
| 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;
 | |
| 
 | |
| #if defined(CONFIG_MSM_N_WAY_SMD)
 | |
| enum
 | |
| {
 | |
| 	SMD_APPS_MODEM = 0,
 | |
| 	SMD_APPS_QDSP,
 | |
| 	SMD_MODEM_QDSP
 | |
| };
 | |
| #else
 | |
| enum
 | |
| {
 | |
| 	SMD_APPS_MODEM = 0
 | |
| };
 | |
| #endif
 | |
| 
 | |
| #endif
 |