/* include/linux/a1026.h - a1026 voice processor driver * * Copyright (C) 2009 HTC Corporation. * * 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 __LINUX_A1026_H #define __LINUX_A1026_H #include #include #define A1026_MAX_FW_SIZE (128*1024) struct a1026img { unsigned char *buf; unsigned img_size; }; /* indicates if a1026_set_config() performs a full configuration or only * a voice processing algorithm configuration */ /* IOCTLs for Audience A1026 */ #define A1026_IOCTL_MAGIC 'u' #define A1026_BOOTUP_INIT _IO(A1026_IOCTL_MAGIC, 0x01) #define A1026_SUSPEND _IO(A1026_IOCTL_MAGIC, 0x02) #define A1026_ENABLE_CLOCK _IO(A1026_IOCTL_MAGIC, 0x03) #ifdef __KERNEL__ /* A1026 Command codes */ #define A100_msg_Sync 0x80000000 #define A100_msg_Sync_Ack 0x80000000 #define A100_msg_Reset 0x8002 #define RESET_IMMEDIATE 0x0000 #define RESET_DELAYED 0x0001 #define A100_msg_BootloadInitiate 0x8003 /* Set Power State */ #define A100_msg_Sleep 0x80100001 /* Audio Path Commands */ /* Bypass */ #define A100_msg_Bypass 0x801C /* 0ff = 0x0000; on = 0x0001 (Default) */ #define A1026_msg_BOOT 0x0001 #define A1026_msg_BOOT_ACK 0x01 /* general definitions */ #define TIMEOUT 20 /* ms */ #define RETRY_CNT 5 #define POLLING_RETRY_CNT 3 #define A1026_ERROR_CODE 0xffff #define A1026_SLEEP 0 #define A1026_ACTIVE 1 #define A1026_CMD_FIFO_DEPTH 64 #define ERROR 0xffffffff enum A1026_config_mode { A1026_CONFIG_FULL, A1026_CONFIG_VP }; struct a1026_platform_data { uint32_t gpio_a1026_wakeup; uint32_t gpio_a1026_reset; int (*request_resources) (struct i2c_client *client); void (*free_resources) (struct i2c_client *client); void (*reset) (bool state); void (*wakeup) (bool state); }; #endif /* __KERNEL__ */ #endif /* __LINUX_A1026_H */