15d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#ifndef __VOICE_SVC_H__
25d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define __VOICE_SVC_H__
35d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
45d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/types.h>
55d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#include <linux/ioctl.h>
65d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
75d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VOICE_SVC_DRIVER_NAME "voice_svc"
85d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
95d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VOICE_SVC_MVM_STR "MVM"
105d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define VOICE_SVC_CVS_STR "CVS"
115d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MAX_APR_SERVICE_NAME_LEN  64
125d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
135d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSG_REGISTER 0x1
145d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSG_REQUEST  0x2
155d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#define MSG_RESPONSE 0x3
165d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
175d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct voice_svc_write_msg {
185d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 msg_type;
195d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 payload[0];
205d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
215d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
225d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct voice_svc_register {
235d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char svc_name[MAX_APR_SERVICE_NAME_LEN];
245d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 src_port;
255d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 reg_flag;
265d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
275d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
285d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct voice_svc_cmd_response {
295d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 src_port;
305d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 dest_port;
315d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 token;
325d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 opcode;
335d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 payload_size;
345d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 payload[0];
355d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
365d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
375d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjinstruct voice_svc_cmd_request {
385d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	char svc_name[MAX_APR_SERVICE_NAME_LEN];
395d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 src_port;
405d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 dest_port;
415d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 token;
425d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 opcode;
435d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u32 payload_size;
445d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin	__u8 payload[0];
455d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin};
465d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin
475d6a7fb6f1a9ff1d898b290fc7c0b2695cf22229Patrick Tjin#endif
48