hdsp.h 2.59 KB
Newer Older
Jaroslav Kysela's avatar
Jaroslav Kysela committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
#ifndef __SOUND_HDSP_H
#define __SOUND_HDSP_H

/*
 *   Copyright (C) 2003 Thomas Charbonnel (thomas@undata.org)
 *    
 *   This program is free software; you can redistribute it and/or modify
 *   it under the terms of the GNU General Public License as published by
 *   the Free Software Foundation; either version 2 of the License, or
 *   (at your option) any later version.
 *
 *   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.
 *
 *   You should have received a copy of the GNU General Public License
 *   along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#define HDSP_MATRIX_MIXER_SIZE 2048

typedef enum {
	Digiface,
	Multiface,
Jaroslav Kysela's avatar
Jaroslav Kysela committed
27
	H9652,
Jaroslav Kysela's avatar
Jaroslav Kysela committed
28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
	Undefined,
} HDSP_IO_Type;

typedef struct _snd_hdsp_peak_rms hdsp_peak_rms_t;

struct _snd_hdsp_peak_rms {
	unsigned int playback_peaks[26];
	unsigned int input_peaks[26];
	unsigned int output_peaks[28];
	unsigned long long playback_rms[26];
	unsigned long long input_rms[26];
};

#define SNDRV_HDSP_IOCTL_GET_PEAK_RMS _IOR('H', 0x40, hdsp_peak_rms_t)

typedef struct _snd_hdsp_config_info hdsp_config_info_t;

struct _snd_hdsp_config_info {
	unsigned char pref_sync_ref;
	unsigned char wordclock_sync_check;
	unsigned char spdif_sync_check;
	unsigned char adatsync_sync_check;
	unsigned char adat_sync_check[3];
	unsigned char spdif_in;
	unsigned char spdif_out;
	unsigned char spdif_professional;
	unsigned char spdif_emphasis;
	unsigned char spdif_nonaudio;
	unsigned int spdif_sample_rate;
	unsigned int system_sample_rate;
	unsigned int autosync_sample_rate;
	unsigned char system_clock_mode;
	unsigned char clock_source;
	unsigned char autosync_ref;
	unsigned char line_out;
	unsigned char passthru; 
};

#define SNDRV_HDSP_IOCTL_GET_CONFIG_INFO _IOR('H', 0x41, hdsp_config_info_t)

typedef struct _snd_hdsp_firmware hdsp_firmware_t;

struct _snd_hdsp_firmware {
Jaroslav Kysela's avatar
Jaroslav Kysela committed
71
	unsigned long *firmware_data;	/* 24413 long words */
Jaroslav Kysela's avatar
Jaroslav Kysela committed
72 73
};

Jaroslav Kysela's avatar
Jaroslav Kysela committed
74
#define SNDRV_HDSP_IOCTL_UPLOAD_FIRMWARE _IOW('H', 0x42, hdsp_firmware_t)
Jaroslav Kysela's avatar
Jaroslav Kysela committed
75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93

typedef struct _snd_hdsp_version hdsp_version_t;

struct _snd_hdsp_version {
	HDSP_IO_Type io_type;
	unsigned short firmware_rev;
};

#define SNDRV_HDSP_IOCTL_GET_VERSION _IOR('H', 0x43, hdsp_version_t)

typedef struct _snd_hdsp_mixer hdsp_mixer_t;

struct _snd_hdsp_mixer {
	unsigned short matrix[HDSP_MATRIX_MIXER_SIZE];
};

#define SNDRV_HDSP_IOCTL_GET_MIXER _IOR('H', 0x44, hdsp_mixer_t)

#endif /* __SOUND_HDSP_H */