xref: /linux/sound/pci/ctxfi/ctmixer.h (revision c7561cd80469f2fe4a6be0984db57832ee7f2a3b)
18cc72361SWai Yew CHAY /**
28cc72361SWai Yew CHAY  * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved.
38cc72361SWai Yew CHAY  *
48cc72361SWai Yew CHAY  * This source file is released under GPL v2 license (no other versions).
58cc72361SWai Yew CHAY  * See the COPYING file included in the main directory of this source
68cc72361SWai Yew CHAY  * distribution for the license terms and conditions.
78cc72361SWai Yew CHAY  *
88cc72361SWai Yew CHAY  * @File	ctmixer.h
98cc72361SWai Yew CHAY  *
108cc72361SWai Yew CHAY  * @Brief
118cc72361SWai Yew CHAY  * This file contains the definition of the mixer device functions.
128cc72361SWai Yew CHAY  *
138cc72361SWai Yew CHAY  * @Author	Liu Chun
148cc72361SWai Yew CHAY  * @Date 	Mar 28 2008
158cc72361SWai Yew CHAY  *
168cc72361SWai Yew CHAY  */
178cc72361SWai Yew CHAY 
188cc72361SWai Yew CHAY #ifndef CTMIXER_H
198cc72361SWai Yew CHAY #define CTMIXER_H
208cc72361SWai Yew CHAY 
218cc72361SWai Yew CHAY #include "ctatc.h"
228cc72361SWai Yew CHAY #include "ctresource.h"
238cc72361SWai Yew CHAY 
248cc72361SWai Yew CHAY #define INIT_VOL	0x1c00
258cc72361SWai Yew CHAY 
268cc72361SWai Yew CHAY enum MIXER_PORT_T {
278cc72361SWai Yew CHAY 	MIX_WAVE_FRONT,
288cc72361SWai Yew CHAY 	MIX_WAVE_REAR,
298cc72361SWai Yew CHAY 	MIX_WAVE_CENTLFE,
308cc72361SWai Yew CHAY 	MIX_WAVE_SURROUND,
318cc72361SWai Yew CHAY 	MIX_SPDIF_OUT,
328cc72361SWai Yew CHAY 	MIX_PCMO_FRONT,
338cc72361SWai Yew CHAY 	MIX_MIC_IN,
348cc72361SWai Yew CHAY 	MIX_LINE_IN,
358cc72361SWai Yew CHAY 	MIX_SPDIF_IN,
368cc72361SWai Yew CHAY 	MIX_PCMI_FRONT,
378cc72361SWai Yew CHAY 	MIX_PCMI_REAR,
388cc72361SWai Yew CHAY 	MIX_PCMI_CENTLFE,
398cc72361SWai Yew CHAY 	MIX_PCMI_SURROUND,
408cc72361SWai Yew CHAY 
418cc72361SWai Yew CHAY 	NUM_MIX_PORTS
428cc72361SWai Yew CHAY };
438cc72361SWai Yew CHAY 
448cc72361SWai Yew CHAY /* alsa mixer descriptor */
458cc72361SWai Yew CHAY struct ct_mixer {
468cc72361SWai Yew CHAY 	struct ct_atc *atc;
478cc72361SWai Yew CHAY 
488cc72361SWai Yew CHAY 	void **amixers;		/* amixer resources for volume control */
498cc72361SWai Yew CHAY 	void **sums;		/* sum resources for signal collection */
508cc72361SWai Yew CHAY 	unsigned int switch_state; /* A bit-map to indicate state of switches */
518cc72361SWai Yew CHAY 
528cc72361SWai Yew CHAY 	int (*get_output_ports)(struct ct_mixer *mixer, enum MIXER_PORT_T type,
538cc72361SWai Yew CHAY 				  struct rsc **rleft, struct rsc **rright);
548cc72361SWai Yew CHAY 
558cc72361SWai Yew CHAY 	int (*set_input_left)(struct ct_mixer *mixer,
568cc72361SWai Yew CHAY 			      enum MIXER_PORT_T type, struct rsc *rsc);
578cc72361SWai Yew CHAY 	int (*set_input_right)(struct ct_mixer *mixer,
588cc72361SWai Yew CHAY 			       enum MIXER_PORT_T type, struct rsc *rsc);
59*c7561cd8STakashi Iwai #ifdef CONFIG_PM_SLEEP
6029959a09SWai Yew CHAY 	int (*resume)(struct ct_mixer *mixer);
6129959a09SWai Yew CHAY #endif
628cc72361SWai Yew CHAY };
638cc72361SWai Yew CHAY 
648cc72361SWai Yew CHAY int ct_alsa_mix_create(struct ct_atc *atc,
658cc72361SWai Yew CHAY 		       enum CTALSADEVS device,
668cc72361SWai Yew CHAY 		       const char *device_name);
678cc72361SWai Yew CHAY int ct_mixer_create(struct ct_atc *atc, struct ct_mixer **rmixer);
688cc72361SWai Yew CHAY int ct_mixer_destroy(struct ct_mixer *mixer);
698cc72361SWai Yew CHAY 
708cc72361SWai Yew CHAY #endif /* CTMIXER_H */
71