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