130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#ifndef __SOUND_HDSP_H 230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define __SOUND_HDSP_H 330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* 530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org) 630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is free software; you can redistribute it and/or modify 830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * it under the terms of the GNU General Public License as published by 930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * the Free Software Foundation; either version 2 of the License, or 1030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * (at your option) any later version. 1130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * This program is distributed in the hope that it will be useful, 1330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * but WITHOUT ANY WARRANTY; without even the implied warranty of 1430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 1530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * GNU General Public License for more details. 1630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * 1730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * You should have received a copy of the GNU General Public License 1830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * along with this program; if not, write to the Free Software 1930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 2030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng */ 2130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#include <linux/types.h> 2330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define HDSP_MATRIX_MIXER_SIZE 2048 2530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 2630692c65c4174412c90e79489e98ab85c1a7412fBen Chengenum HDSP_IO_Type { 2730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng Digiface, 2830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng Multiface, 2930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng H9652, 3030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng H9632, 3130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng RPM, 3230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng Undefined, 3330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 3430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 3530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdsp_peak_rms { 3630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 input_peaks[26]; 3730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 playback_peaks[26]; 3830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u32 output_peaks[28]; 3930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 input_rms[26]; 4030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 playback_rms[26]; 4130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng /* These are only used for H96xx cards */ 4230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng __u64 output_rms[26]; 4330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 4430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, struct hdsp_peak_rms) 4630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 4730692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdsp_config_info { 4830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char pref_sync_ref; 4930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char wordclock_sync_check; 5030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char spdif_sync_check; 5130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char adatsync_sync_check; 5230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char adat_sync_check[3]; 5330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char spdif_in; 5430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char spdif_out; 5530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char spdif_professional; 5630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char spdif_emphasis; 5730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char spdif_nonaudio; 5830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int spdif_sample_rate; 5930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int system_sample_rate; 6030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned int autosync_sample_rate; 6130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char system_clock_mode; 6230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char clock_source; 6330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char autosync_ref; 6430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char line_out; 6530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char passthru; 6630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char da_gain; 6730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char ad_gain; 6830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char phone_gain; 6930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char xlr_breakout_cable; 7030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned char analog_extension_board; 7130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, struct hdsp_config_info) 7430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7530692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdsp_firmware { 7630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng void __user *firmware_data; /* 24413 x 4 bytes */ 7730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 7830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 7930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, struct hdsp_firmware) 8030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8130692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdsp_version { 8230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng enum HDSP_IO_Type io_type; 8330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned short firmware_rev; 8430692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 8530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, struct hdsp_version) 8730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 8830692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdsp_mixer { 8930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng unsigned short matrix[HDSP_MATRIX_MIXER_SIZE]; 9030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9230692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, struct hdsp_mixer) 9330692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9430692c65c4174412c90e79489e98ab85c1a7412fBen Chengstruct hdsp_9632_aeb { 9530692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int aebi; 9630692c65c4174412c90e79489e98ab85c1a7412fBen Cheng int aebo; 9730692c65c4174412c90e79489e98ab85c1a7412fBen Cheng}; 9830692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 9930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#define SNDRV_HDSP_IOCTL_GET_9632_AEB _IOR('H', 0x45, struct hdsp_9632_aeb) 10030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 10130692c65c4174412c90e79489e98ab85c1a7412fBen Cheng/* typedefs for compatibility to user-space */ 10230692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef enum HDSP_IO_Type HDSP_IO_Type; 10330692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct hdsp_peak_rms hdsp_peak_rms_t; 10430692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct hdsp_config_info hdsp_config_info_t; 10530692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct hdsp_firmware hdsp_firmware_t; 10630692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct hdsp_version hdsp_version_t; 10730692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct hdsp_mixer hdsp_mixer_t; 10830692c65c4174412c90e79489e98ab85c1a7412fBen Chengtypedef struct hdsp_9632_aeb hdsp_9632_aeb_t; 10930692c65c4174412c90e79489e98ab85c1a7412fBen Cheng 11030692c65c4174412c90e79489e98ab85c1a7412fBen Cheng#endif /* __SOUND_HDSP_H */ 111