1 /* SPDX-License-Identifier: GPL-2.0-only */ 2 /* 3 * Copyright (C) 2008, Creative Technology Ltd. All Rights Reserved. 4 * 5 * @File ctmixer.h 6 * 7 * @Brief 8 * This file contains the definition of the mixer device functions. 9 * 10 * @Author Liu Chun 11 * @Date Mar 28 2008 12 */ 13 14 #ifndef CTMIXER_H 15 #define CTMIXER_H 16 17 #include "ctatc.h" 18 #include "ctresource.h" 19 20 #define INIT_VOL 0x1c00 21 22 enum MIXER_PORT_T { 23 MIX_WAVE_FRONT, 24 MIX_WAVE_REAR, 25 MIX_WAVE_CENTLFE, 26 MIX_WAVE_SURROUND, 27 MIX_SPDIF_OUT, 28 MIX_PCMO_FRONT, 29 MIX_MIC_IN, 30 MIX_LINE_IN, 31 MIX_SPDIF_IN, 32 MIX_PCMI_FRONT, 33 MIX_PCMI_REAR, 34 MIX_PCMI_CENTLFE, 35 MIX_PCMI_SURROUND, 36 37 NUM_MIX_PORTS 38 }; 39 40 /* alsa mixer descriptor */ 41 struct ct_mixer { 42 struct ct_atc *atc; 43 44 void **amixers; /* amixer resources for volume control */ 45 void **sums; /* sum resources for signal collection */ 46 unsigned int switch_state; /* A bit-map to indicate state of switches */ 47 48 int (*get_output_ports)(struct ct_mixer *mixer, enum MIXER_PORT_T type, 49 struct rsc **rleft, struct rsc **rright); 50 51 int (*set_input_left)(struct ct_mixer *mixer, 52 enum MIXER_PORT_T type, struct rsc *rsc); 53 int (*set_input_right)(struct ct_mixer *mixer, 54 enum MIXER_PORT_T type, struct rsc *rsc); 55 #ifdef CONFIG_PM_SLEEP 56 int (*resume)(struct ct_mixer *mixer); 57 #endif 58 }; 59 60 int ct_alsa_mix_create(struct ct_atc *atc, 61 enum CTALSADEVS device, 62 const char *device_name); 63 int ct_mixer_create(struct ct_atc *atc, struct ct_mixer **rmixer); 64 int ct_mixer_destroy(struct ct_mixer *mixer); 65 66 #endif /* CTMIXER_H */ 67