Lines Matching +full:single +full:- +full:chip
3 Copyright Echo Digital Audio Corporation (c) 1998 - 2004
21 Foundation, Inc., 59 Temple Place - Suite 330, Boston,
22 MA 02111-1307, USA.
26 Translation from C++ and adaptation for use in ALSA-Driver
34 +-----------+
35 record | |<-------------------- Inputs
36 <-------| | |
39 ------->| | +-------+
40 play | |--->|monitor|-------> Outputs
41 +-----------+ | mixer |
42 +-------+
45 audio transport - moving audio data to and from buffers on the host via
53 For most cards, there is a one-to-one correspondence between outputs
54 and busses; that is, each individual pipe is hard-wired to a single bus.
63 +-----------+
64 record | |<----------------------------- Inputs
65 <-------| | |
68 ------->| | +------+ +-------+
69 play | |-->|vmixer|-->|monitor|-------> Outputs
70 +-----------+ +------+ | mixer |
71 +-------+
75 short for "virtual output mixer." For Mia, pipes are *not* hard-wired
76 to a single bus; the vmixer lets you mix any pipe to any bus in any
79 Note, however, that the left-hand side of the diagram is unchanged.
80 Transport works exactly the same way - the difference is in the mixer stage.
99 0-7 Analog outputs (0 .. FirstDigitalBusOut-1)
100 8-15 Digital outputs (FirstDigitalBusOut .. NumBussesOut-1)
101 16-17 Analog inputs
102 18-25 Digital inputs
125 either S/PDIF mode, the last 6 channels don't do anything - data sent
143 actually support two different word clock modes - single speed (below
144 50 kHz) and double speed (above 50 kHz). The hardware detects if a single
241 * Clock bit numbers - used to report capabilities and whatever clocks
283 #define ECHOGAIN_MUTED (-128) /* Minimum possible gain */
284 #define ECHOGAIN_MINOUT (-128) /* Min output gain (dB) */
286 #define ECHOGAIN_MININP (-50) /* Min input gain (0.5 dB) */
317 struct snd_dma_buffer sgpage; /* Room for the scatter-gather list */
375 u8 spdif_status; /* Gina20, Darla20, Darla24 - only */
376 u8 clock_state; /* Gina20, Darla20, Darla24 - only */
381 char meters_enabled; /* VU-meters status */
385 char non_audio_spdif; /* 3G - only */
386 char digital_in_automute; /* Gina24, Layla24, Mona - only */
389 char phantom_power; /* Gina3G - only */
394 /* External module -dependent pipe and bus indexes */
399 char nominal_level[ECHO_MAXAUDIOPIPES]; /* True == -10dBV
401 s8 input_gain[ECHO_MAXAUDIOINPUTS]; /* Input level -50..+50
403 s8 output_gain[ECHO_MAXAUDIOOUTPUTS]; /* Output level -128..+6 dB
404 * (-128=muted) */
406 /* -128..+6 dB */
408 /* -128..+6 dB */
413 u16 output_clock_types; /* Suppoted output clock types -
434 static int init_dsp_comm_page(struct echoaudio *chip);
435 static int init_line_levels(struct echoaudio *chip);
436 static int free_pipes(struct echoaudio *chip, struct audiopipe *pipe);
437 static int load_firmware(struct echoaudio *chip);
438 static int wait_handshake(struct echoaudio *chip);
439 static int send_vector(struct echoaudio *chip, u32 command);
441 struct echoaudio *chip, const short fw_index);
443 struct echoaudio *chip);
446 static int enable_midi_input(struct echoaudio *chip, char enable);
449 static int midi_service_irq(struct echoaudio *chip);
451 struct echoaudio *chip);
455 static inline void clear_handshake(struct echoaudio *chip) in clear_handshake() argument
457 chip->comm_page->handshake = 0; in clear_handshake()
460 static inline u32 get_dsp_register(struct echoaudio *chip, u32 index) in get_dsp_register() argument
462 return readl(&chip->dsp_registers[index]); in get_dsp_register()
465 static inline void set_dsp_register(struct echoaudio *chip, u32 index, in set_dsp_register() argument
468 writel(value, &chip->dsp_registers[index]); in set_dsp_register()
472 /* Pipe and bus indexes. PX_* and BX_* are defined as chip->px_* and chip->bx_*
477 static inline int px_digital_out(const struct echoaudio *chip) in px_digital_out() argument
482 static inline int px_analog_in(const struct echoaudio *chip) in px_analog_in() argument
487 static inline int px_digital_in(const struct echoaudio *chip) in px_digital_in() argument
492 static inline int px_num(const struct echoaudio *chip) in px_num() argument
497 static inline int bx_digital_out(const struct echoaudio *chip) in bx_digital_out() argument
502 static inline int bx_analog_in(const struct echoaudio *chip) in bx_analog_in() argument
507 static inline int bx_digital_in(const struct echoaudio *chip) in bx_digital_in() argument
512 static inline int bx_num(const struct echoaudio *chip) in bx_num() argument
517 static inline int num_pipes_out(const struct echoaudio *chip) in num_pipes_out() argument
519 return px_analog_in(chip); in num_pipes_out()
522 static inline int num_pipes_in(const struct echoaudio *chip) in num_pipes_in() argument
524 return px_num(chip) - px_analog_in(chip); in num_pipes_in()
527 static inline int num_busses_out(const struct echoaudio *chip) in num_busses_out() argument
529 return bx_analog_in(chip); in num_busses_out()
532 static inline int num_busses_in(const struct echoaudio *chip) in num_busses_in() argument
534 return bx_num(chip) - bx_analog_in(chip); in num_busses_in()
537 static inline int num_analog_busses_out(const struct echoaudio *chip) in num_analog_busses_out() argument
539 return bx_digital_out(chip); in num_analog_busses_out()
542 static inline int num_analog_busses_in(const struct echoaudio *chip) in num_analog_busses_in() argument
544 return bx_digital_in(chip) - bx_analog_in(chip); in num_analog_busses_in()
547 static inline int num_digital_busses_out(const struct echoaudio *chip) in num_digital_busses_out() argument
549 return num_busses_out(chip) - num_analog_busses_out(chip); in num_digital_busses_out()
552 static inline int num_digital_busses_in(const struct echoaudio *chip) in num_digital_busses_in() argument
554 return num_busses_in(chip) - num_analog_busses_in(chip); in num_digital_busses_in()
557 /* The monitor array is a one-dimensional array; compute the offset
559 static inline int monitor_index(const struct echoaudio *chip, int out, int in) in monitor_index() argument
561 return out * num_busses_in(chip) + in; in monitor_index()