1c6d43ba8STorsten Schenk /* 2c6d43ba8STorsten Schenk * Linux driver for TerraTec DMX 6Fire USB 3c6d43ba8STorsten Schenk * 4c6d43ba8STorsten Schenk * Author: Torsten Schenk <torsten.schenk@zoho.com> 5c6d43ba8STorsten Schenk * Created: Jan 01, 2011 6c6d43ba8STorsten Schenk * Copyright: (C) Torsten Schenk 7c6d43ba8STorsten Schenk * 8c6d43ba8STorsten Schenk * This program is free software; you can redistribute it and/or modify 9c6d43ba8STorsten Schenk * it under the terms of the GNU General Public License as published by 10c6d43ba8STorsten Schenk * the Free Software Foundation; either version 2 of the License, or 11c6d43ba8STorsten Schenk * (at your option) any later version. 12c6d43ba8STorsten Schenk */ 13c6d43ba8STorsten Schenk 14c6d43ba8STorsten Schenk #ifndef USB6FIRE_CONTROL_H 15c6d43ba8STorsten Schenk #define USB6FIRE_CONTROL_H 16c6d43ba8STorsten Schenk 17c6d43ba8STorsten Schenk #include "common.h" 18c6d43ba8STorsten Schenk 19c6d43ba8STorsten Schenk enum { 20c6d43ba8STorsten Schenk CONTROL_MAX_ELEMENTS = 32 21c6d43ba8STorsten Schenk }; 22c6d43ba8STorsten Schenk 232475b0d4STorsten Schenk enum { 242475b0d4STorsten Schenk CONTROL_RATE_44KHZ, 252475b0d4STorsten Schenk CONTROL_RATE_48KHZ, 262475b0d4STorsten Schenk CONTROL_RATE_88KHZ, 272475b0d4STorsten Schenk CONTROL_RATE_96KHZ, 282475b0d4STorsten Schenk CONTROL_RATE_176KHZ, 292475b0d4STorsten Schenk CONTROL_RATE_192KHZ, 302475b0d4STorsten Schenk CONTROL_N_RATES 312475b0d4STorsten Schenk }; 322475b0d4STorsten Schenk 33c6d43ba8STorsten Schenk struct control_runtime { 342475b0d4STorsten Schenk int (*update_streaming)(struct control_runtime *rt); 352475b0d4STorsten Schenk int (*set_rate)(struct control_runtime *rt, int rate); 362475b0d4STorsten Schenk int (*set_channels)(struct control_runtime *rt, int n_analog_out, 372475b0d4STorsten Schenk int n_analog_in, bool spdif_out, bool spdif_in); 382475b0d4STorsten Schenk 39c6d43ba8STorsten Schenk struct sfire_chip *chip; 40c6d43ba8STorsten Schenk 41c6d43ba8STorsten Schenk struct snd_kcontrol *element[CONTROL_MAX_ELEMENTS]; 42c6d43ba8STorsten Schenk bool opt_coax_switch; 43c6d43ba8STorsten Schenk bool line_phono_switch; 442475b0d4STorsten Schenk bool digital_thru_switch; 452475b0d4STorsten Schenk bool usb_streaming; 46f90ffbf3STorsten Schenk u8 output_vol[6]; 47f90ffbf3STorsten Schenk u8 ovol_updated; 48d97c735aSTorsten Schenk u8 output_mute; 4906bb4e74STorsten Schenk s8 input_vol[2]; 5006bb4e74STorsten Schenk u8 ivol_updated; 51c6d43ba8STorsten Schenk }; 52c6d43ba8STorsten Schenk 53*87f9796aSBill Pemberton int usb6fire_control_init(struct sfire_chip *chip); 54c6d43ba8STorsten Schenk void usb6fire_control_abort(struct sfire_chip *chip); 55c6d43ba8STorsten Schenk void usb6fire_control_destroy(struct sfire_chip *chip); 56c6d43ba8STorsten Schenk #endif /* USB6FIRE_CONTROL_H */ 57c6d43ba8STorsten Schenk 58