1c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* linux/omap_csmi.h
2c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru**
3c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru** Copyright 2005-2006, The Android Open Source Project
4c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru** Author: Arve Hj�nnev�g
5c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru**
6c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru** This file is dual licensed.  It may be redistributed and/or modified
7c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru** under the terms of the Apache 2.0 License OR version 2 of the GNU
8c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru** General Public License.
9c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru*/
10c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
11c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifndef _OMAP_CSMI_H_
12c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define _OMAP_CSMI_H_
13c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
14c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#include <asm/ioctl.h>
15c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
16c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#ifdef __KERNEL__
17c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
18c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct {
19c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t cmd;
20c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t arg1;
21c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t arg2;
22c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t arg3;
23c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} omap_csmi_gc_command_t;
24c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
25c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct {
26c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	void (*ack)(int mailbox);
27c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	int (*data)(int mailbox);
28c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	void (*reset)(int mailbox);
29c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	void (*start)(int mailbox);
30c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	void (*stop)(int mailbox);
31c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} omap_csmi_mailbox_handlers_t;
32c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
33c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruextern uint8_t *omap_csmi_gsm_data_vaddr;
34c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
35c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SEND_FLAG_NO_ACK_AFTER_SEND 1
36c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define SEND_FLAG_REQEST_ACK_IF_BUSY 2
37c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
38c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querutypedef struct {
39c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t magic;                // 0-3     0x494d5347
40c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t header_size;          // 4-7     64
41c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint8_t  mailbox_size;         // 8       8 or 16
42c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint8_t  num_channels;         // 9       2-15
43c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint8_t  gc_channel;           // 10
44c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint8_t  debug_channel;        // 11
45c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint16_t stream_channel_mask;  // 12-13
46c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint16_t pad;                  // 14-15
47c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	char     vendor_code[16];      // 16-31
48c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	char     product_code[16];     // 32-47
49c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t version;              // 48-51
50c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t ffs_location;         // 52-55
51c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	uint32_t ffs_size;             // 56-59   0 or size
52c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru	char     vendor_data[20];       // 60-79
53c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru} omap_csmi_gsm_image_info_t;
54c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru// in platform_device->platform_data where platform_device->name == "omap-csmi"
55c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
56c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define OMAP_GSM_IMAGE_HEADER_MAGIC 0x494d5347 /* GSMI */
57c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
58c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Querustruct sysdev_class *omap_csmi_get_sysclass(void);
59c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruunsigned short omap_csmi_get_vendor_boot_flags(void);
60c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint omap_csmi_gc_command(const omap_csmi_gc_command_t *command, int timeout, omap_csmi_gc_command_t *reply);
61c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint omap_csmi_send_mailbox(int mailbox, void *data, size_t size, unsigned int flags);
62c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruvoid omap_csmi_read_mailbox(int mailbox, void *data, size_t size);
63c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint omap_csmi_install_mailbox_handlers(int mailbox, omap_csmi_mailbox_handlers_t handlers);
64c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queruint omap_csmi_uninstall_mailbox_handlers(int mailbox, omap_csmi_mailbox_handlers_t handlers);
65c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
66c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru//mailbox channel 1 commands
67c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
68c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_DSP_PLL_REQ                  0x0001
69c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_ARM_PLL_REQ                  0x0002
70c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_READ_MEM_REQ                 0x0003
71c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_SET_MEM_REQ                  0x0004
72c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_SERIAL_CONFIG_REQ            0x0005
73c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_RESET_REQ                    0x0006
74c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_SW_VERSION_REQ               0x0007
75c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_HW_VERSION_REQ               0x0008
76c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_SLEEP_REQ                    0x0009
77c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_IRQ_REQ                      0x000A
78c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_BATTERY_STATUS_REQ           0x0011
79c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_VOICE_REQ              0x0012
80c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_VOICEBANDCTL_REQ       0x0013
81c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_OUTPUTCTL_REQ          0x0014
82c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_SIDETONE_REQ           0x0015
83c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_ECHOCANC_REQ           0x0016
84c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_STEREO_CODEC_REQ       0x0017
85c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_PGA_REQ                0x0018
86c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_PROFILE_LOAD_REQ       0x0019
87c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_FFS_INIT_RESTORE_REQ         0x0020
88c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_FFS_RESTORE_REQ              0x0021
89c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_FFS_BACKUP_REQ               0x0022
90c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_DAR_GET_INFO_REQ             0x0023
91c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_RECORD_START_REQ         0x0030
92c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_RECORD_STOP_REQ          0x0031
93c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_PLAY_START_REQ           0x0032
94c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_PLAY_STOP_REQ            0x0033
95c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_GET_STATUS_REQ           0x0034
96c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_PURGE_PLAY_BUFFER_REQ    0x0035
97c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_ABB_REGISTER_REQ             0x0040
98c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_ENHECHOCANC_REQ        0x0041
99c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
100c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_READ_MEM_RES                 0x1000
101c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_SW_VERSION_RES               0x1001
102c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_HW_VERSION_RES               0x1002
103c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_BATTERY_STATUS_RES           0x1005
104c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_VOICEBANDCTL_RES       0x1006
105c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_OUTPUTCTL_RES          0x1007
106c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_STEREO_CODEC_RES       0x1008
107c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AUDIO_PROFILE_LOAD_RES       0x1019
108c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_FFS_INIT_RESTORE_RES         0x1020
109c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_FFS_BACKUP_RES               0x1022
110c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_DAR_GET_INFO_RES             0x1023
111c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_RECORD_START_RES         0x1030
112c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_RECORD_STOP_RES          0x1031
113c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_PLAY_START_RES           0x1032
114c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_PLAY_STOP_RES            0x1033
115c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_AMR_GET_STATUS_RES           0x1034
116c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define GC_ABB_REGISTER_RES             0x1040
117c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
118c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
119c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
120c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru/* tty ioctls */
121c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
122c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define OMAP_CSMI_TTY_ENABLE_ACK _IO('c', 0)
123c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define OMAP_CSMI_TTY_DISABLE_ACK _IO('c', 1)
124c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define OMAP_CSMI_TTY_READ_UNACKED _IOR('c', 2, int)
125c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define OMAP_CSMI_TTY_ACK _IOW('c', 3, int)
126c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#define OMAP_CSMI_TTY_WAKEUP_AND_ACK _IOW('c', 4, int)
127c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru
128c559cd81139f97cecad1ad91a0b2e25a5936d53Jean-Baptiste Queru#endif
129