| rjw | 1f88458 | 2022-01-06 17:20:42 +0800 | [diff] [blame] | 1 | /* | 
|  | 2 | * Linux driver for TerraTec DMX 6Fire USB | 
|  | 3 | * | 
|  | 4 | * Author:	Torsten Schenk <torsten.schenk@zoho.com> | 
|  | 5 | * Created:	Jan 01, 2011 | 
|  | 6 | * Copyright:	(C) Torsten Schenk | 
|  | 7 | * | 
|  | 8 | * This program is free software; you can redistribute it and/or modify | 
|  | 9 | * it under the terms of the GNU General Public License as published by | 
|  | 10 | * the Free Software Foundation; either version 2 of the License, or | 
|  | 11 | * (at your option) any later version. | 
|  | 12 | */ | 
|  | 13 |  | 
|  | 14 | #ifndef USB6FIRE_CONTROL_H | 
|  | 15 | #define USB6FIRE_CONTROL_H | 
|  | 16 |  | 
|  | 17 | #include "common.h" | 
|  | 18 |  | 
|  | 19 | enum { | 
|  | 20 | CONTROL_MAX_ELEMENTS = 32 | 
|  | 21 | }; | 
|  | 22 |  | 
|  | 23 | enum { | 
|  | 24 | CONTROL_RATE_44KHZ, | 
|  | 25 | CONTROL_RATE_48KHZ, | 
|  | 26 | CONTROL_RATE_88KHZ, | 
|  | 27 | CONTROL_RATE_96KHZ, | 
|  | 28 | CONTROL_RATE_176KHZ, | 
|  | 29 | CONTROL_RATE_192KHZ, | 
|  | 30 | CONTROL_N_RATES | 
|  | 31 | }; | 
|  | 32 |  | 
|  | 33 | struct control_runtime { | 
|  | 34 | int (*update_streaming)(struct control_runtime *rt); | 
|  | 35 | int (*set_rate)(struct control_runtime *rt, int rate); | 
|  | 36 | int (*set_channels)(struct control_runtime *rt, int n_analog_out, | 
|  | 37 | int n_analog_in, bool spdif_out, bool spdif_in); | 
|  | 38 |  | 
|  | 39 | struct sfire_chip *chip; | 
|  | 40 |  | 
|  | 41 | struct snd_kcontrol *element[CONTROL_MAX_ELEMENTS]; | 
|  | 42 | bool opt_coax_switch; | 
|  | 43 | bool line_phono_switch; | 
|  | 44 | bool digital_thru_switch; | 
|  | 45 | bool usb_streaming; | 
|  | 46 | u8 output_vol[6]; | 
|  | 47 | u8 ovol_updated; | 
|  | 48 | u8 output_mute; | 
|  | 49 | s8 input_vol[2]; | 
|  | 50 | u8 ivol_updated; | 
|  | 51 | }; | 
|  | 52 |  | 
|  | 53 | int usb6fire_control_init(struct sfire_chip *chip); | 
|  | 54 | void usb6fire_control_abort(struct sfire_chip *chip); | 
|  | 55 | void usb6fire_control_destroy(struct sfire_chip *chip); | 
|  | 56 | #endif /* USB6FIRE_CONTROL_H */ | 
|  | 57 |  |