1*2874c5fdSThomas Gleixner /* SPDX-License-Identifier: GPL-2.0-or-later */ 2c6d43ba8STorsten Schenk /* 3c6d43ba8STorsten Schenk * Linux driver for TerraTec DMX 6Fire USB 4c6d43ba8STorsten Schenk * 5c6d43ba8STorsten Schenk * Author: Torsten Schenk <torsten.schenk@zoho.com> 6c6d43ba8STorsten Schenk * Created: Jan 01, 2011 7c6d43ba8STorsten Schenk * Copyright: (C) Torsten Schenk 8c6d43ba8STorsten Schenk */ 9c6d43ba8STorsten Schenk 10c6d43ba8STorsten Schenk #ifndef USB6FIRE_CONTROL_H 11c6d43ba8STorsten Schenk #define USB6FIRE_CONTROL_H 12c6d43ba8STorsten Schenk 13c6d43ba8STorsten Schenk #include "common.h" 14c6d43ba8STorsten Schenk 15c6d43ba8STorsten Schenk enum { 16c6d43ba8STorsten Schenk CONTROL_MAX_ELEMENTS = 32 17c6d43ba8STorsten Schenk }; 18c6d43ba8STorsten Schenk 192475b0d4STorsten Schenk enum { 202475b0d4STorsten Schenk CONTROL_RATE_44KHZ, 212475b0d4STorsten Schenk CONTROL_RATE_48KHZ, 222475b0d4STorsten Schenk CONTROL_RATE_88KHZ, 232475b0d4STorsten Schenk CONTROL_RATE_96KHZ, 242475b0d4STorsten Schenk CONTROL_RATE_176KHZ, 252475b0d4STorsten Schenk CONTROL_RATE_192KHZ, 262475b0d4STorsten Schenk CONTROL_N_RATES 272475b0d4STorsten Schenk }; 282475b0d4STorsten Schenk 29c6d43ba8STorsten Schenk struct control_runtime { 302475b0d4STorsten Schenk int (*update_streaming)(struct control_runtime *rt); 312475b0d4STorsten Schenk int (*set_rate)(struct control_runtime *rt, int rate); 322475b0d4STorsten Schenk int (*set_channels)(struct control_runtime *rt, int n_analog_out, 332475b0d4STorsten Schenk int n_analog_in, bool spdif_out, bool spdif_in); 342475b0d4STorsten Schenk 35c6d43ba8STorsten Schenk struct sfire_chip *chip; 36c6d43ba8STorsten Schenk 37c6d43ba8STorsten Schenk struct snd_kcontrol *element[CONTROL_MAX_ELEMENTS]; 38c6d43ba8STorsten Schenk bool opt_coax_switch; 39c6d43ba8STorsten Schenk bool line_phono_switch; 402475b0d4STorsten Schenk bool digital_thru_switch; 412475b0d4STorsten Schenk bool usb_streaming; 42f90ffbf3STorsten Schenk u8 output_vol[6]; 43f90ffbf3STorsten Schenk u8 ovol_updated; 44d97c735aSTorsten Schenk u8 output_mute; 4506bb4e74STorsten Schenk s8 input_vol[2]; 4606bb4e74STorsten Schenk u8 ivol_updated; 47c6d43ba8STorsten Schenk }; 48c6d43ba8STorsten Schenk 4987f9796aSBill Pemberton int usb6fire_control_init(struct sfire_chip *chip); 50c6d43ba8STorsten Schenk void usb6fire_control_abort(struct sfire_chip *chip); 51c6d43ba8STorsten Schenk void usb6fire_control_destroy(struct sfire_chip *chip); 52c6d43ba8STorsten Schenk #endif /* USB6FIRE_CONTROL_H */ 53c6d43ba8STorsten Schenk 54