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
 |