2011-01-24 18:45:30 +01:00
/*
* Linux driver for TerraTec DMX 6F ire USB
*
* Author : Torsten Schenk < torsten . schenk @ zoho . com >
* Created : Jan 01 , 2011
* Copyright : ( C ) Torsten Schenk
*
* 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 .
*/
# ifndef USB6FIRE_CONTROL_H
# define USB6FIRE_CONTROL_H
# include "common.h"
enum {
CONTROL_MAX_ELEMENTS = 32
} ;
2011-04-04 11:50:53 +02:00
enum {
CONTROL_RATE_44KHZ ,
CONTROL_RATE_48KHZ ,
CONTROL_RATE_88KHZ ,
CONTROL_RATE_96KHZ ,
CONTROL_RATE_176KHZ ,
CONTROL_RATE_192KHZ ,
CONTROL_N_RATES
} ;
2011-01-24 18:45:30 +01:00
struct control_runtime {
2011-04-04 11:50:53 +02:00
int ( * update_streaming ) ( struct control_runtime * rt ) ;
int ( * set_rate ) ( struct control_runtime * rt , int rate ) ;
int ( * set_channels ) ( struct control_runtime * rt , int n_analog_out ,
int n_analog_in , bool spdif_out , bool spdif_in ) ;
2011-01-24 18:45:30 +01:00
struct sfire_chip * chip ;
struct snd_kcontrol * element [ CONTROL_MAX_ELEMENTS ] ;
bool opt_coax_switch ;
bool line_phono_switch ;
2011-04-04 11:50:53 +02:00
bool digital_thru_switch ;
bool usb_streaming ;
2012-02-22 15:21:12 +01:00
u8 output_vol [ 6 ] ;
u8 ovol_updated ;
2012-02-22 15:21:23 +01:00
u8 output_mute ;
2012-02-22 15:21:30 +01:00
s8 input_vol [ 2 ] ;
u8 ivol_updated ;
2011-01-24 18:45:30 +01:00
} ;
2012-12-06 12:35:28 -05:00
int usb6fire_control_init ( struct sfire_chip * chip ) ;
2011-01-24 18:45:30 +01:00
void usb6fire_control_abort ( struct sfire_chip * chip ) ;
void usb6fire_control_destroy ( struct sfire_chip * chip ) ;
# endif /* USB6FIRE_CONTROL_H */