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