Refactored part of the code, added routines and minimal galaxys2 support
[yamaha-mc1n2-audio.git] / include / yamaha-mc1n2-audio.h
1 /*
2  * Copyright (C) 2012 Paul Kocialkowski <contact@paulk.fr>
3  *
4  * This program is free software: you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation, either version 3 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12  * GNU General Public License for more details.
13  *
14  * You should have received a copy of the GNU General Public License
15  * along with this program.  If not, see <http://www.gnu.org/licenses/>.
16  */
17
18 #ifndef YAMAHA_MC1N2_AUDIO_H
19 #define YAMAHA_MC1N2_AUDIO_H
20
21 #include "mc1n2.h"
22
23 struct yamaha_mc1n2_audio_routine_init {
24         MCDRV_DAC_INFO dac_info;
25         MCDRV_ADC_INFO adc_info;
26         MCDRV_SP_INFO sp_info;
27         MCDRV_PDM_INFO pdm_info;
28         MCDRV_DNG_INFO dng_info;
29         MCDRV_SYSEQ_INFO syseq_info;
30 };
31
32 struct yamaha_mc1n2_audio_routine_route_init {
33         MCDRV_PATH_INFO path_info;
34         MCDRV_DAC_INFO dac_info;
35 };
36
37 struct yamaha_mc1n2_audio_routine {
38         struct yamaha_mc1n2_audio_routine_init *init;
39         struct yamaha_mc1n2_audio_routine_route_init *route_init;
40 };
41
42 struct yamaha_mc1n2_audio_device_ops {
43         char *hw_node;
44         struct yamaha_mc1n2_audio_routine routine;
45 };
46
47 struct yamaha_mc1n2_audio_pdata {
48         char *name;
49         struct yamaha_mc1n2_audio_device_ops *ops;
50 };
51
52 /*
53  * Platforms
54  */
55
56 extern struct yamaha_mc1n2_audio_pdata galaxys2_pdata;
57
58 /*
59  * Functions
60  */
61
62 // IOCTL
63 int yamaha_mc1n2_audio_ioctl(struct yamaha_mc1n2_audio_pdata *pdata,
64         int command, struct mc1n2_ctrl_args *hw_ctrl);
65 int yamaha_mc1n2_audio_ioctl_set_ctrl(struct yamaha_mc1n2_audio_pdata *pdata,
66         unsigned long command, void *data, unsigned long update_info);
67 int yamaha_mc1n2_audio_ioctl_notify(struct yamaha_mc1n2_audio_pdata *pdata,
68         unsigned long command);
69
70 // Routines
71 int yamaha_mc1n2_audio_routine_init(struct yamaha_mc1n2_audio_pdata *pdata);
72 int yamaha_mc1n2_audio_routine_route_init(struct yamaha_mc1n2_audio_pdata *pdata);
73
74 // Values configuration
75 char *yamaha_mc1n2_audio_get_hw_node(struct yamaha_mc1n2_audio_pdata *pdata);
76
77 // Init/Deinit
78 int yamaha_mc1n2_audio_start(struct yamaha_mc1n2_audio_pdata **pdata_p,
79         char *device_name);
80 int yamaha_mc1n2_audio_stop(struct yamaha_mc1n2_audio_pdata *pdata);
81
82 #endif