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 | |