Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
awilliam
GitHub Repository: awilliam/linux-vfio
Path: blob/master/include/sound/jack.h
10820 views
1
#ifndef __SOUND_JACK_H
2
#define __SOUND_JACK_H
3
4
/*
5
* Jack abstraction layer
6
*
7
* Copyright 2008 Wolfson Microelectronics plc
8
*
9
*
10
* This program is free software; you can redistribute it and/or modify
11
* it under the terms of the GNU General Public License as published by
12
* the Free Software Foundation; either version 2 of the License, or
13
* (at your option) any later version.
14
*
15
* This program is distributed in the hope that it will be useful,
16
* but WITHOUT ANY WARRANTY; without even the implied warranty of
17
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18
* GNU General Public License for more details.
19
*
20
* You should have received a copy of the GNU General Public License
21
* along with this program; if not, write to the Free Software
22
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23
*
24
*/
25
26
#include <sound/core.h>
27
28
struct input_dev;
29
30
/**
31
* Jack types which can be reported. These values are used as a
32
* bitmask.
33
*
34
* Note that this must be kept in sync with the lookup table in
35
* sound/core/jack.c.
36
*/
37
enum snd_jack_types {
38
SND_JACK_HEADPHONE = 0x0001,
39
SND_JACK_MICROPHONE = 0x0002,
40
SND_JACK_HEADSET = SND_JACK_HEADPHONE | SND_JACK_MICROPHONE,
41
SND_JACK_LINEOUT = 0x0004,
42
SND_JACK_MECHANICAL = 0x0008, /* If detected separately */
43
SND_JACK_VIDEOOUT = 0x0010,
44
SND_JACK_AVOUT = SND_JACK_LINEOUT | SND_JACK_VIDEOOUT,
45
46
/* Kept separate from switches to facilitate implementation */
47
SND_JACK_BTN_0 = 0x4000,
48
SND_JACK_BTN_1 = 0x2000,
49
SND_JACK_BTN_2 = 0x1000,
50
SND_JACK_BTN_3 = 0x0800,
51
SND_JACK_BTN_4 = 0x0400,
52
SND_JACK_BTN_5 = 0x0200,
53
};
54
55
struct snd_jack {
56
struct input_dev *input_dev;
57
int registered;
58
int type;
59
const char *id;
60
char name[100];
61
unsigned int key[6]; /* Keep in sync with definitions above */
62
void *private_data;
63
void (*private_free)(struct snd_jack *);
64
};
65
66
#ifdef CONFIG_SND_JACK
67
68
int snd_jack_new(struct snd_card *card, const char *id, int type,
69
struct snd_jack **jack);
70
void snd_jack_set_parent(struct snd_jack *jack, struct device *parent);
71
int snd_jack_set_key(struct snd_jack *jack, enum snd_jack_types type,
72
int keytype);
73
74
void snd_jack_report(struct snd_jack *jack, int status);
75
76
#else
77
78
static inline int snd_jack_new(struct snd_card *card, const char *id, int type,
79
struct snd_jack **jack)
80
{
81
return 0;
82
}
83
84
static inline void snd_jack_set_parent(struct snd_jack *jack,
85
struct device *parent)
86
{
87
}
88
89
static inline void snd_jack_report(struct snd_jack *jack, int status)
90
{
91
}
92
93
#endif
94
95
#endif
96
97