92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			92 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* copyright (C) 2007 Google, Inc.
 | |
|  * Copyright (c) 2007 QUALCOMM Incorporated
 | |
|  *  *
 | |
|  *   * 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 _ARCH_ARM_MACH_MSM_MSM_SMD_DEBUG_H_
 | |
| #define _ARCH_ARM_MACH_MSM_MSM_SMD_DEBUG_H_
 | |
| 
 | |
| #include <linux/platform_device.h>
 | |
| #include <linux/spinlock.h>
 | |
| #include <linux/list.h>
 | |
| 
 | |
| struct smd_alloc_elm {
 | |
| 	char name[20];
 | |
| 	uint32_t cid;
 | |
| 	uint32_t ctype;
 | |
| 	uint32_t ref_count;
 | |
| };
 | |
| 
 | |
| struct smd_half_channel {
 | |
| 	unsigned state;
 | |
| 	unsigned char fDSR;
 | |
| 	unsigned char fCTS;
 | |
| 	unsigned char fCD;
 | |
| 	unsigned char fRI;
 | |
| 	unsigned char fHEAD;
 | |
| 	unsigned char fTAIL;
 | |
| 	unsigned char fSTATE;
 | |
| 	unsigned char fUNUSED;
 | |
| 	unsigned tail;
 | |
| 	unsigned head;
 | |
| } __attribute__((packed));
 | |
| 
 | |
| struct smd_shared_v1 {
 | |
| 	struct smd_half_channel ch0;
 | |
| 	unsigned char data0[SMD_BUF_SIZE];
 | |
| 	struct smd_half_channel ch1;
 | |
| 	unsigned char data1[SMD_BUF_SIZE];
 | |
| };
 | |
| 
 | |
| struct smd_shared_v2 {
 | |
| 	struct smd_half_channel ch0;
 | |
| 	struct smd_half_channel ch1;
 | |
| };
 | |
| 
 | |
| struct smd_channel {
 | |
| 	volatile struct smd_half_channel *send;
 | |
| 	volatile struct smd_half_channel *recv;
 | |
| 	unsigned char *send_data;
 | |
| 	unsigned char *recv_data;
 | |
| 
 | |
| 	unsigned fifo_mask;
 | |
| 	unsigned fifo_size;
 | |
| 	unsigned current_packet;
 | |
| 	unsigned n;
 | |
| 
 | |
| 	struct list_head ch_list;
 | |
| 
 | |
| 	void *priv;
 | |
| 	void (*notify)(void *priv, unsigned flags);
 | |
| 
 | |
| 	int (*read)(struct smd_channel *ch, void *data, int len);
 | |
| 	int (*write)(struct smd_channel *ch, const void *data, int len);
 | |
| 	int (*read_avail)(struct smd_channel *ch);
 | |
| 	int (*write_avail)(struct smd_channel *ch);
 | |
| 
 | |
| 	void (*update_state)(struct smd_channel *ch);
 | |
| 	unsigned last_state;
 | |
| 	void (*notify_other_cpu)(void);
 | |
| 	unsigned type;
 | |
| 
 | |
| 	char name[32];
 | |
| 	struct platform_device pdev;
 | |
| };
 | |
| 
 | |
| extern struct list_head smd_ch_closed_list;
 | |
| extern struct list_head smd_ch_list_modem;
 | |
| extern struct list_head smd_ch_list_dsp;
 | |
| 
 | |
| extern spinlock_t smd_lock;
 | |
| extern spinlock_t smem_lock;
 | |
| 
 | |
| #endif
 |