Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
L
linux
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
linux
Commits
ce40a6d3
Commit
ce40a6d3
authored
Oct 30, 2014
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'topic/kerneldoc' into for-next
parents
eafe8404
95a962c3
Changes
10
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
469 additions
and
34 deletions
+469
-34
Documentation/DocBook/alsa-driver-api.tmpl
Documentation/DocBook/alsa-driver-api.tmpl
+2
-0
include/sound/jack.h
include/sound/jack.h
+15
-1
include/uapi/sound/compress_offload.h
include/uapi/sound/compress_offload.h
+9
-8
sound/pci/hda/hda_auto_parser.c
sound/pci/hda/hda_auto_parser.c
+64
-2
sound/pci/hda/hda_beep.c
sound/pci/hda/hda_beep.c
+38
-0
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+244
-18
sound/pci/hda/hda_eld.c
sound/pci/hda/hda_eld.c
+1
-1
sound/pci/hda/hda_jack.c
sound/pci/hda/hda_jack.c
+60
-0
sound/pci/hda/hda_jack.h
sound/pci/hda/hda_jack.h
+5
-0
sound/pci/hda/hda_sysfs.c
sound/pci/hda/hda_sysfs.c
+31
-4
No files found.
Documentation/DocBook/alsa-driver-api.tmpl
View file @
ce40a6d3
...
@@ -99,6 +99,8 @@
...
@@ -99,6 +99,8 @@
<chapter><title>
Compress Offload
</title>
<chapter><title>
Compress Offload
</title>
<sect1><title>
Compress Offload API
</title>
<sect1><title>
Compress Offload API
</title>
!Esound/core/compress_offload.c
!Esound/core/compress_offload.c
!Iinclude/uapi/sound/compress_offload.h
!Iinclude/uapi/sound/compress_params.h
!Iinclude/sound/compress_driver.h
!Iinclude/sound/compress_driver.h
</sect1>
</sect1>
</chapter>
</chapter>
...
...
include/sound/jack.h
View file @
ce40a6d3
...
@@ -28,7 +28,21 @@
...
@@ -28,7 +28,21 @@
struct
input_dev
;
struct
input_dev
;
/**
/**
* enum snd_jack_types: Jack types which can be reported
* enum snd_jack_types - Jack types which can be reported
* @SND_JACK_HEADPHONE: Headphone
* @SND_JACK_MICROPHONE: Microphone
* @SND_JACK_HEADSET: Headset
* @SND_JACK_LINEOUT: Line out
* @SND_JACK_MECHANICAL: Mechanical switch
* @SND_JACK_VIDEOOUT: Video out
* @SND_JACK_AVOUT: AV (Audio Video) out
* @SND_JACK_LINEIN: Line in
* @SND_JACK_BTN_0: Button 0
* @SND_JACK_BTN_1: Button 1
* @SND_JACK_BTN_2: Button 2
* @SND_JACK_BTN_3: Button 3
* @SND_JACK_BTN_4: Button 4
* @SND_JACK_BTN_5: Button 5
*
*
* These values are used as a bitmask.
* These values are used as a bitmask.
*
*
...
...
include/uapi/sound/compress_offload.h
View file @
ce40a6d3
...
@@ -32,7 +32,7 @@
...
@@ -32,7 +32,7 @@
#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2)
#define SNDRV_COMPRESS_VERSION SNDRV_PROTOCOL_VERSION(0, 1, 2)
/**
/**
* struct snd_compressed_buffer
:
compressed buffer
* struct snd_compressed_buffer
-
compressed buffer
* @fragment_size: size of buffer fragment in bytes
* @fragment_size: size of buffer fragment in bytes
* @fragments: number of such fragments
* @fragments: number of such fragments
*/
*/
...
@@ -42,7 +42,7 @@ struct snd_compressed_buffer {
...
@@ -42,7 +42,7 @@ struct snd_compressed_buffer {
}
__attribute__
((
packed
,
aligned
(
4
)));
}
__attribute__
((
packed
,
aligned
(
4
)));
/**
/**
* struct snd_compr_params
:
compressed stream params
* struct snd_compr_params
-
compressed stream params
* @buffer: buffer description
* @buffer: buffer description
* @codec: codec parameters
* @codec: codec parameters
* @no_wake_mode: dont wake on fragment elapsed
* @no_wake_mode: dont wake on fragment elapsed
...
@@ -54,7 +54,7 @@ struct snd_compr_params {
...
@@ -54,7 +54,7 @@ struct snd_compr_params {
}
__attribute__
((
packed
,
aligned
(
4
)));
}
__attribute__
((
packed
,
aligned
(
4
)));
/**
/**
* struct snd_compr_tstamp
:
timestamp descriptor
* struct snd_compr_tstamp
-
timestamp descriptor
* @byte_offset: Byte offset in ring buffer to DSP
* @byte_offset: Byte offset in ring buffer to DSP
* @copied_total: Total number of bytes copied from/to ring buffer to/by DSP
* @copied_total: Total number of bytes copied from/to ring buffer to/by DSP
* @pcm_frames: Frames decoded or encoded by DSP. This field will evolve by
* @pcm_frames: Frames decoded or encoded by DSP. This field will evolve by
...
@@ -73,7 +73,7 @@ struct snd_compr_tstamp {
...
@@ -73,7 +73,7 @@ struct snd_compr_tstamp {
}
__attribute__
((
packed
,
aligned
(
4
)));
}
__attribute__
((
packed
,
aligned
(
4
)));
/**
/**
* struct snd_compr_avail
:
avail descriptor
* struct snd_compr_avail
-
avail descriptor
* @avail: Number of bytes available in ring buffer for writing/reading
* @avail: Number of bytes available in ring buffer for writing/reading
* @tstamp: timestamp infomation
* @tstamp: timestamp infomation
*/
*/
...
@@ -88,7 +88,7 @@ enum snd_compr_direction {
...
@@ -88,7 +88,7 @@ enum snd_compr_direction {
};
};
/**
/**
* struct snd_compr_caps
:
caps descriptor
* struct snd_compr_caps
-
caps descriptor
* @codecs: pointer to array of codecs
* @codecs: pointer to array of codecs
* @direction: direction supported. Of type snd_compr_direction
* @direction: direction supported. Of type snd_compr_direction
* @min_fragment_size: minimum fragment supported by DSP
* @min_fragment_size: minimum fragment supported by DSP
...
@@ -110,7 +110,7 @@ struct snd_compr_caps {
...
@@ -110,7 +110,7 @@ struct snd_compr_caps {
}
__attribute__
((
packed
,
aligned
(
4
)));
}
__attribute__
((
packed
,
aligned
(
4
)));
/**
/**
* struct snd_compr_codec_caps
:
query capability of codec
* struct snd_compr_codec_caps
-
query capability of codec
* @codec: codec for which capability is queried
* @codec: codec for which capability is queried
* @num_descriptors: number of codec descriptors
* @num_descriptors: number of codec descriptors
* @descriptor: array of codec capability descriptor
* @descriptor: array of codec capability descriptor
...
@@ -122,18 +122,19 @@ struct snd_compr_codec_caps {
...
@@ -122,18 +122,19 @@ struct snd_compr_codec_caps {
}
__attribute__
((
packed
,
aligned
(
4
)));
}
__attribute__
((
packed
,
aligned
(
4
)));
/**
/**
* enum sndrv_compress_encoder
* @SNDRV_COMPRESS_ENCODER_PADDING: no of samples appended by the encoder at the
* @SNDRV_COMPRESS_ENCODER_PADDING: no of samples appended by the encoder at the
* end of the track
* end of the track
* @SNDRV_COMPRESS_ENCODER_DELAY: no of samples inserted by the encoder at the
* @SNDRV_COMPRESS_ENCODER_DELAY: no of samples inserted by the encoder at the
* beginning of the track
* beginning of the track
*/
*/
enum
{
enum
sndrv_compress_encoder
{
SNDRV_COMPRESS_ENCODER_PADDING
=
1
,
SNDRV_COMPRESS_ENCODER_PADDING
=
1
,
SNDRV_COMPRESS_ENCODER_DELAY
=
2
,
SNDRV_COMPRESS_ENCODER_DELAY
=
2
,
};
};
/**
/**
* struct snd_compr_metadata
:
compressed stream metadata
* struct snd_compr_metadata
-
compressed stream metadata
* @key: key id
* @key: key id
* @value: key value
* @value: key value
*/
*/
...
...
sound/pci/hda/hda_auto_parser.c
View file @
ce40a6d3
...
@@ -441,6 +441,13 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
...
@@ -441,6 +441,13 @@ int snd_hda_parse_pin_defcfg(struct hda_codec *codec,
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_parse_pin_defcfg
);
EXPORT_SYMBOL_GPL
(
snd_hda_parse_pin_defcfg
);
/**
* snd_hda_get_input_pin_attr - Get the input pin attribute from pin config
* @def_conf: pin configuration value
*
* Guess the input pin attribute (INPUT_PIN_ATTR_XXX) from the given
* default pin configuration value.
*/
int
snd_hda_get_input_pin_attr
(
unsigned
int
def_conf
)
int
snd_hda_get_input_pin_attr
(
unsigned
int
def_conf
)
{
{
unsigned
int
loc
=
get_defcfg_location
(
def_conf
);
unsigned
int
loc
=
get_defcfg_location
(
def_conf
);
...
@@ -464,12 +471,15 @@ EXPORT_SYMBOL_GPL(snd_hda_get_input_pin_attr);
...
@@ -464,12 +471,15 @@ EXPORT_SYMBOL_GPL(snd_hda_get_input_pin_attr);
/**
/**
* hda_get_input_pin_label - Give a label for the given input pin
* hda_get_input_pin_label - Give a label for the given input pin
* @codec: the HDA codec
* @item: ping config item to refer
* @pin: the pin NID
* @check_location: flag to add the jack location prefix
*
*
* When check_location is true, the function checks the pin location
* When
@
check_location is true, the function checks the pin location
* for mic and line-in pins, and set an appropriate prefix like "Front",
* for mic and line-in pins, and set an appropriate prefix like "Front",
* "Rear", "Internal".
* "Rear", "Internal".
*/
*/
static
const
char
*
hda_get_input_pin_label
(
struct
hda_codec
*
codec
,
static
const
char
*
hda_get_input_pin_label
(
struct
hda_codec
*
codec
,
const
struct
auto_pin_cfg_item
*
item
,
const
struct
auto_pin_cfg_item
*
item
,
hda_nid_t
pin
,
bool
check_location
)
hda_nid_t
pin
,
bool
check_location
)
...
@@ -550,6 +560,9 @@ static int check_mic_location_need(struct hda_codec *codec,
...
@@ -550,6 +560,9 @@ static int check_mic_location_need(struct hda_codec *codec,
/**
/**
* hda_get_autocfg_input_label - Get a label for the given input
* hda_get_autocfg_input_label - Get a label for the given input
* @codec: the HDA codec
* @cfg: the parsed pin configuration
* @input: the input index number
*
*
* Get a label for the given input pin defined by the autocfg item.
* Get a label for the given input pin defined by the autocfg item.
* Unlike hda_get_input_pin_label(), this function checks all inputs
* Unlike hda_get_input_pin_label(), this function checks all inputs
...
@@ -677,6 +690,12 @@ static int fill_audio_out_name(struct hda_codec *codec, hda_nid_t nid,
...
@@ -677,6 +690,12 @@ static int fill_audio_out_name(struct hda_codec *codec, hda_nid_t nid,
/**
/**
* snd_hda_get_pin_label - Get a label for the given I/O pin
* snd_hda_get_pin_label - Get a label for the given I/O pin
* @codec: the HDA codec
* @nid: pin NID
* @cfg: the parsed pin configuration
* @label: the string buffer to store
* @maxlen: the max length of string buffer (including termination)
* @indexp: the pointer to return the index number (for multiple ctls)
*
*
* Get a label for the given pin. This function works for both input and
* Get a label for the given pin. This function works for both input and
* output pins. When @cfg is given as non-NULL, the function tries to get
* output pins. When @cfg is given as non-NULL, the function tries to get
...
@@ -748,6 +767,14 @@ int snd_hda_get_pin_label(struct hda_codec *codec, hda_nid_t nid,
...
@@ -748,6 +767,14 @@ int snd_hda_get_pin_label(struct hda_codec *codec, hda_nid_t nid,
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_get_pin_label
);
EXPORT_SYMBOL_GPL
(
snd_hda_get_pin_label
);
/**
* snd_hda_add_verbs - Add verbs to the init list
* @codec: the HDA codec
* @list: zero-terminated verb list to add
*
* Append the given verb list to the execution list. The verbs will be
* performed at init and resume time via snd_hda_apply_verbs().
*/
int
snd_hda_add_verbs
(
struct
hda_codec
*
codec
,
int
snd_hda_add_verbs
(
struct
hda_codec
*
codec
,
const
struct
hda_verb
*
list
)
const
struct
hda_verb
*
list
)
{
{
...
@@ -760,6 +787,10 @@ int snd_hda_add_verbs(struct hda_codec *codec,
...
@@ -760,6 +787,10 @@ int snd_hda_add_verbs(struct hda_codec *codec,
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_add_verbs
);
EXPORT_SYMBOL_GPL
(
snd_hda_add_verbs
);
/**
* snd_hda_apply_verbs - Execute the init verb lists
* @codec: the HDA codec
*/
void
snd_hda_apply_verbs
(
struct
hda_codec
*
codec
)
void
snd_hda_apply_verbs
(
struct
hda_codec
*
codec
)
{
{
int
i
;
int
i
;
...
@@ -770,6 +801,11 @@ void snd_hda_apply_verbs(struct hda_codec *codec)
...
@@ -770,6 +801,11 @@ void snd_hda_apply_verbs(struct hda_codec *codec)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_apply_verbs
);
EXPORT_SYMBOL_GPL
(
snd_hda_apply_verbs
);
/**
* snd_hda_apply_pincfgs - Set each pin config in the given list
* @codec: the HDA codec
* @cfg: NULL-terminated pin config table
*/
void
snd_hda_apply_pincfgs
(
struct
hda_codec
*
codec
,
void
snd_hda_apply_pincfgs
(
struct
hda_codec
*
codec
,
const
struct
hda_pintbl
*
cfg
)
const
struct
hda_pintbl
*
cfg
)
{
{
...
@@ -837,6 +873,11 @@ static void apply_fixup(struct hda_codec *codec, int id, int action, int depth)
...
@@ -837,6 +873,11 @@ static void apply_fixup(struct hda_codec *codec, int id, int action, int depth)
}
}
}
}
/**
* snd_hda_apply_fixup - Apply the fixup chain with the given action
* @codec: the HDA codec
* @action: fixup action (HDA_FIXUP_ACT_XXX)
*/
void
snd_hda_apply_fixup
(
struct
hda_codec
*
codec
,
int
action
)
void
snd_hda_apply_fixup
(
struct
hda_codec
*
codec
,
int
action
)
{
{
if
(
codec
->
fixup_list
)
if
(
codec
->
fixup_list
)
...
@@ -855,6 +896,12 @@ static bool pin_config_match(struct hda_codec *codec,
...
@@ -855,6 +896,12 @@ static bool pin_config_match(struct hda_codec *codec,
return
true
;
return
true
;
}
}
/**
* snd_hda_pick_pin_fixup - Pick up a fixup matching with the pin quirk list
* @codec: the HDA codec
* @pin_quirk: zero-terminated pin quirk list
* @fixlist: the fixup list
*/
void
snd_hda_pick_pin_fixup
(
struct
hda_codec
*
codec
,
void
snd_hda_pick_pin_fixup
(
struct
hda_codec
*
codec
,
const
struct
snd_hda_pin_quirk
*
pin_quirk
,
const
struct
snd_hda_pin_quirk
*
pin_quirk
,
const
struct
hda_fixup
*
fixlist
)
const
struct
hda_fixup
*
fixlist
)
...
@@ -881,6 +928,21 @@ void snd_hda_pick_pin_fixup(struct hda_codec *codec,
...
@@ -881,6 +928,21 @@ void snd_hda_pick_pin_fixup(struct hda_codec *codec,
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_pick_pin_fixup
);
EXPORT_SYMBOL_GPL
(
snd_hda_pick_pin_fixup
);
/**
* snd_hda_pick_fixup - Pick up a fixup matching with PCI/codec SSID or model string
* @codec: the HDA codec
* @models: NULL-terminated model string list
* @quirk: zero-terminated PCI/codec SSID quirk list
* @fixlist: the fixup list
*
* Pick up a fixup entry matching with the given model string or SSID.
* If a fixup was already set beforehand, the function doesn't do anything.
* When a special model string "nofixup" is given, also no fixup is applied.
*
* The function tries to find the matching model name at first, if given.
* If nothing matched, try to look up the PCI SSID.
* If still nothing matched, try to look up the codec SSID.
*/
void
snd_hda_pick_fixup
(
struct
hda_codec
*
codec
,
void
snd_hda_pick_fixup
(
struct
hda_codec
*
codec
,
const
struct
hda_model_fixup
*
models
,
const
struct
hda_model_fixup
*
models
,
const
struct
snd_pci_quirk
*
quirk
,
const
struct
snd_pci_quirk
*
quirk
,
...
...
sound/pci/hda/hda_beep.c
View file @
ce40a6d3
...
@@ -175,6 +175,11 @@ static int snd_hda_do_attach(struct hda_beep *beep)
...
@@ -175,6 +175,11 @@ static int snd_hda_do_attach(struct hda_beep *beep)
return
0
;
return
0
;
}
}
/**
* snd_hda_enable_beep_device - Turn on/off beep sound
* @codec: the HDA codec
* @enable: flag to turn on/off
*/
int
snd_hda_enable_beep_device
(
struct
hda_codec
*
codec
,
int
enable
)
int
snd_hda_enable_beep_device
(
struct
hda_codec
*
codec
,
int
enable
)
{
{
struct
hda_beep
*
beep
=
codec
->
beep
;
struct
hda_beep
*
beep
=
codec
->
beep
;
...
@@ -191,6 +196,20 @@ int snd_hda_enable_beep_device(struct hda_codec *codec, int enable)
...
@@ -191,6 +196,20 @@ int snd_hda_enable_beep_device(struct hda_codec *codec, int enable)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_enable_beep_device
);
EXPORT_SYMBOL_GPL
(
snd_hda_enable_beep_device
);
/**
* snd_hda_attach_beep_device - Attach a beep input device
* @codec: the HDA codec
* @nid: beep NID
*
* Attach a beep object to the given widget. If beep hint is turned off
* explicitly or beep_mode of the codec is turned off, this doesn't nothing.
*
* The attached beep device has to be registered via
* snd_hda_register_beep_device() and released via snd_hda_detach_beep_device()
* appropriately.
*
* Currently, only one beep device is allowed to each codec.
*/
int
snd_hda_attach_beep_device
(
struct
hda_codec
*
codec
,
int
nid
)
int
snd_hda_attach_beep_device
(
struct
hda_codec
*
codec
,
int
nid
)
{
{
struct
hda_beep
*
beep
;
struct
hda_beep
*
beep
;
...
@@ -228,6 +247,10 @@ int snd_hda_attach_beep_device(struct hda_codec *codec, int nid)
...
@@ -228,6 +247,10 @@ int snd_hda_attach_beep_device(struct hda_codec *codec, int nid)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_attach_beep_device
);
EXPORT_SYMBOL_GPL
(
snd_hda_attach_beep_device
);
/**
* snd_hda_detach_beep_device - Detach the beep device
* @codec: the HDA codec
*/
void
snd_hda_detach_beep_device
(
struct
hda_codec
*
codec
)
void
snd_hda_detach_beep_device
(
struct
hda_codec
*
codec
)
{
{
struct
hda_beep
*
beep
=
codec
->
beep
;
struct
hda_beep
*
beep
=
codec
->
beep
;
...
@@ -240,6 +263,10 @@ void snd_hda_detach_beep_device(struct hda_codec *codec)
...
@@ -240,6 +263,10 @@ void snd_hda_detach_beep_device(struct hda_codec *codec)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_detach_beep_device
);
EXPORT_SYMBOL_GPL
(
snd_hda_detach_beep_device
);
/**
* snd_hda_register_beep_device - Register the beep device
* @codec: the HDA codec
*/
int
snd_hda_register_beep_device
(
struct
hda_codec
*
codec
)
int
snd_hda_register_beep_device
(
struct
hda_codec
*
codec
)
{
{
struct
hda_beep
*
beep
=
codec
->
beep
;
struct
hda_beep
*
beep
=
codec
->
beep
;
...
@@ -269,6 +296,12 @@ static bool ctl_has_mute(struct snd_kcontrol *kcontrol)
...
@@ -269,6 +296,12 @@ static bool ctl_has_mute(struct snd_kcontrol *kcontrol)
}
}
/* get/put callbacks for beep mute mixer switches */
/* get/put callbacks for beep mute mixer switches */
/**
* snd_hda_mixer_amp_switch_get_beep - Get callback for beep controls
* @kcontrol: ctl element
* @ucontrol: pointer to get/store the data
*/
int
snd_hda_mixer_amp_switch_get_beep
(
struct
snd_kcontrol
*
kcontrol
,
int
snd_hda_mixer_amp_switch_get_beep
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
struct
snd_ctl_elem_value
*
ucontrol
)
{
{
...
@@ -283,6 +316,11 @@ int snd_hda_mixer_amp_switch_get_beep(struct snd_kcontrol *kcontrol,
...
@@ -283,6 +316,11 @@ int snd_hda_mixer_amp_switch_get_beep(struct snd_kcontrol *kcontrol,
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_mixer_amp_switch_get_beep
);
EXPORT_SYMBOL_GPL
(
snd_hda_mixer_amp_switch_get_beep
);
/**
* snd_hda_mixer_amp_switch_put_beep - Put callback for beep controls
* @kcontrol: ctl element
* @ucontrol: pointer to get/store the data
*/
int
snd_hda_mixer_amp_switch_put_beep
(
struct
snd_kcontrol
*
kcontrol
,
int
snd_hda_mixer_amp_switch_put_beep
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
struct
snd_ctl_elem_value
*
ucontrol
)
{
{
...
...
sound/pci/hda/hda_codec.c
View file @
ce40a6d3
This diff is collapsed.
Click to expand it.
sound/pci/hda/hda_eld.c
View file @
ce40a6d3
...
@@ -371,7 +371,7 @@ int snd_hdmi_get_eld(struct hda_codec *codec, hda_nid_t nid,
...
@@ -371,7 +371,7 @@ int snd_hdmi_get_eld(struct hda_codec *codec, hda_nid_t nid,
return
ret
;
return
ret
;
}
}
/*
*
/*
* SNDRV_PCM_RATE_* and AC_PAR_PCM values don't match, print correct rates with
* SNDRV_PCM_RATE_* and AC_PAR_PCM values don't match, print correct rates with
* hdmi-specific routine.
* hdmi-specific routine.
*/
*/
...
...
sound/pci/hda/hda_jack.c
View file @
ce40a6d3
...
@@ -20,6 +20,16 @@
...
@@ -20,6 +20,16 @@
#include "hda_auto_parser.h"
#include "hda_auto_parser.h"
#include "hda_jack.h"
#include "hda_jack.h"
/**
* is_jack_detectable - Check whether the given pin is jack-detectable
* @codec: the HDA codec
* @nid: pin NID
*
* Check whether the given pin is capable to report the jack detection.
* The jack detection might not work by various reasons, e.g. the jack
* detection is prohibited in the codec level, the pin config has
* AC_DEFCFG_MISC_NO_PRESENCE bit, no unsol support, etc.
*/
bool
is_jack_detectable
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
bool
is_jack_detectable
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
{
if
(
codec
->
no_jack_detect
)
if
(
codec
->
no_jack_detect
)
...
@@ -57,6 +67,8 @@ static u32 read_pin_sense(struct hda_codec *codec, hda_nid_t nid)
...
@@ -57,6 +67,8 @@ static u32 read_pin_sense(struct hda_codec *codec, hda_nid_t nid)
/**
/**
* snd_hda_jack_tbl_get - query the jack-table entry for the given NID
* snd_hda_jack_tbl_get - query the jack-table entry for the given NID
* @codec: the HDA codec
* @nid: pin NID to refer to
*/
*/
struct
hda_jack_tbl
*
struct
hda_jack_tbl
*
snd_hda_jack_tbl_get
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
snd_hda_jack_tbl_get
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
...
@@ -75,6 +87,8 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_tbl_get);
...
@@ -75,6 +87,8 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_tbl_get);
/**
/**
* snd_hda_jack_tbl_get_from_tag - query the jack-table entry for the given tag
* snd_hda_jack_tbl_get_from_tag - query the jack-table entry for the given tag
* @codec: the HDA codec
* @tag: tag value to refer to
*/
*/
struct
hda_jack_tbl
*
struct
hda_jack_tbl
*
snd_hda_jack_tbl_get_from_tag
(
struct
hda_codec
*
codec
,
unsigned
char
tag
)
snd_hda_jack_tbl_get_from_tag
(
struct
hda_codec
*
codec
,
unsigned
char
tag
)
...
@@ -93,6 +107,8 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_tbl_get_from_tag);
...
@@ -93,6 +107,8 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_tbl_get_from_tag);
/**
/**
* snd_hda_jack_tbl_new - create a jack-table entry for the given NID
* snd_hda_jack_tbl_new - create a jack-table entry for the given NID
* @codec: the HDA codec
* @nid: pin NID to assign
*/
*/
static
struct
hda_jack_tbl
*
static
struct
hda_jack_tbl
*
snd_hda_jack_tbl_new
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
snd_hda_jack_tbl_new
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
...
@@ -162,6 +178,7 @@ static void jack_detect_update(struct hda_codec *codec,
...
@@ -162,6 +178,7 @@ static void jack_detect_update(struct hda_codec *codec,
/**
/**
* snd_hda_set_dirty_all - Mark all the cached as dirty
* snd_hda_set_dirty_all - Mark all the cached as dirty
* @codec: the HDA codec
*
*
* This function sets the dirty flag to all entries of jack table.
* This function sets the dirty flag to all entries of jack table.
* It's called from the resume path in hda_codec.c.
* It's called from the resume path in hda_codec.c.
...
@@ -218,6 +235,9 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_detect_state);
...
@@ -218,6 +235,9 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_detect_state);
/**
/**
* snd_hda_jack_detect_enable - enable the jack-detection
* snd_hda_jack_detect_enable - enable the jack-detection
* @codec: the HDA codec
* @nid: pin NID to enable
* @func: callback function to register
*
*
* In the case of error, the return value will be a pointer embedded with
* In the case of error, the return value will be a pointer embedded with
* errno. Check and handle the return value appropriately with standard
* errno. Check and handle the return value appropriately with standard
...
@@ -258,6 +278,14 @@ snd_hda_jack_detect_enable_callback(struct hda_codec *codec, hda_nid_t nid,
...
@@ -258,6 +278,14 @@ snd_hda_jack_detect_enable_callback(struct hda_codec *codec, hda_nid_t nid,
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_jack_detect_enable_callback
);
EXPORT_SYMBOL_GPL
(
snd_hda_jack_detect_enable_callback
);
/**
* snd_hda_jack_detect_enable - Enable the jack detection on the given pin
* @codec: the HDA codec
* @nid: pin NID to enable jack detection
*
* Enable the jack detection with the default callback. Returns zero if
* successful or a negative error code.
*/
int
snd_hda_jack_detect_enable
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
int
snd_hda_jack_detect_enable
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
{
return
PTR_ERR_OR_ZERO
(
snd_hda_jack_detect_enable_callback
(
codec
,
nid
,
NULL
));
return
PTR_ERR_OR_ZERO
(
snd_hda_jack_detect_enable_callback
(
codec
,
nid
,
NULL
));
...
@@ -266,6 +294,9 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_detect_enable);
...
@@ -266,6 +294,9 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_detect_enable);
/**
/**
* snd_hda_jack_set_gating_jack - Set gating jack.
* snd_hda_jack_set_gating_jack - Set gating jack.
* @codec: the HDA codec
* @gated_nid: gated pin NID
* @gating_nid: gating pin NID
*
*
* Indicates the gated jack is only valid when the gating jack is plugged.
* Indicates the gated jack is only valid when the gating jack is plugged.
*/
*/
...
@@ -287,6 +318,7 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_set_gating_jack);
...
@@ -287,6 +318,7 @@ EXPORT_SYMBOL_GPL(snd_hda_jack_set_gating_jack);
/**
/**
* snd_hda_jack_report_sync - sync the states of all jacks and report if changed
* snd_hda_jack_report_sync - sync the states of all jacks and report if changed
* @codec: the HDA codec
*/
*/
void
snd_hda_jack_report_sync
(
struct
hda_codec
*
codec
)
void
snd_hda_jack_report_sync
(
struct
hda_codec
*
codec
)
{
{
...
@@ -349,6 +381,11 @@ static void hda_free_jack_priv(struct snd_jack *jack)
...
@@ -349,6 +381,11 @@ static void hda_free_jack_priv(struct snd_jack *jack)
/**
/**
* snd_hda_jack_add_kctl - Add a kctl for the given pin
* snd_hda_jack_add_kctl - Add a kctl for the given pin
* @codec: the HDA codec
* @nid: pin NID to assign
* @name: string name for the jack
* @idx: index number for the jack
* @phantom_jack: flag to deal as a phantom jack
*
*
* This assigns a jack-detection kctl to the given pin. The kcontrol
* This assigns a jack-detection kctl to the given pin. The kcontrol
* will have the given name and index.
* will have the given name and index.
...
@@ -391,6 +428,15 @@ static int __snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid,
...
@@ -391,6 +428,15 @@ static int __snd_hda_jack_add_kctl(struct hda_codec *codec, hda_nid_t nid,
return
0
;
return
0
;
}
}
/**
* snd_hda_jack_add_kctl - Add a jack kctl for the given pin
* @codec: the HDA codec
* @nid: pin NID
* @name: the name string for the jack ctl
* @idx: the ctl index for the jack ctl
*
* This is a simple helper calling __snd_hda_jack_add_kctl().
*/
int
snd_hda_jack_add_kctl
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
snd_hda_jack_add_kctl
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
const
char
*
name
,
int
idx
)
const
char
*
name
,
int
idx
)
{
{
...
@@ -456,6 +502,8 @@ static int add_jack_kctl(struct hda_codec *codec, hda_nid_t nid,
...
@@ -456,6 +502,8 @@ static int add_jack_kctl(struct hda_codec *codec, hda_nid_t nid,
/**
/**
* snd_hda_jack_add_kctls - Add kctls for all pins included in the given pincfg
* snd_hda_jack_add_kctls - Add kctls for all pins included in the given pincfg
* @codec: the HDA codec
* @cfg: pin config table to parse
*/
*/
int
snd_hda_jack_add_kctls
(
struct
hda_codec
*
codec
,
int
snd_hda_jack_add_kctls
(
struct
hda_codec
*
codec
,
const
struct
auto_pin_cfg
*
cfg
)
const
struct
auto_pin_cfg
*
cfg
)
...
@@ -531,6 +579,11 @@ static void call_jack_callback(struct hda_codec *codec,
...
@@ -531,6 +579,11 @@ static void call_jack_callback(struct hda_codec *codec,
}
}
}
}
/**
* snd_hda_jack_unsol_event - Handle an unsolicited event
* @codec: the HDA codec
* @res: the unsolicited event data
*/
void
snd_hda_jack_unsol_event
(
struct
hda_codec
*
codec
,
unsigned
int
res
)
void
snd_hda_jack_unsol_event
(
struct
hda_codec
*
codec
,
unsigned
int
res
)
{
{
struct
hda_jack_tbl
*
event
;
struct
hda_jack_tbl
*
event
;
...
@@ -546,6 +599,13 @@ void snd_hda_jack_unsol_event(struct hda_codec *codec, unsigned int res)
...
@@ -546,6 +599,13 @@ void snd_hda_jack_unsol_event(struct hda_codec *codec, unsigned int res)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_jack_unsol_event
);
EXPORT_SYMBOL_GPL
(
snd_hda_jack_unsol_event
);
/**
* snd_hda_jack_poll_all - Poll all jacks
* @codec: the HDA codec
*
* Poll all detectable jacks with dirty flag, update the status, call
* callbacks and call snd_hda_jack_report_sync() if any changes are found.
*/
void
snd_hda_jack_poll_all
(
struct
hda_codec
*
codec
)
void
snd_hda_jack_poll_all
(
struct
hda_codec
*
codec
)
{
{
struct
hda_jack_tbl
*
jack
=
codec
->
jacktbl
.
list
;
struct
hda_jack_tbl
*
jack
=
codec
->
jacktbl
.
list
;
...
...
sound/pci/hda/hda_jack.h
View file @
ce40a6d3
...
@@ -72,6 +72,11 @@ enum {
...
@@ -72,6 +72,11 @@ enum {
int
snd_hda_jack_detect_state
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
);
int
snd_hda_jack_detect_state
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
);
/**
* snd_hda_jack_detect - Detect the jack
* @codec: the HDA codec
* @nid: pin NID to check jack detection
*/
static
inline
bool
snd_hda_jack_detect
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
static
inline
bool
snd_hda_jack_detect
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
{
return
snd_hda_jack_detect_state
(
codec
,
nid
)
!=
HDA_JACK_NOT_PRESENT
;
return
snd_hda_jack_detect_state
(
codec
,
nid
)
!=
HDA_JACK_NOT_PRESENT
;
...
...
sound/pci/hda/hda_sysfs.c
View file @
ce40a6d3
...
@@ -417,8 +417,13 @@ static DEVICE_ATTR_RW(user_pin_configs);
...
@@ -417,8 +417,13 @@ static DEVICE_ATTR_RW(user_pin_configs);
static
DEVICE_ATTR_WO
(
reconfig
);
static
DEVICE_ATTR_WO
(
reconfig
);
static
DEVICE_ATTR_WO
(
clear
);
static
DEVICE_ATTR_WO
(
clear
);
/*
/**
* Look for hint string
* snd_hda_get_hint - Look for hint string
* @codec: the HDA codec
* @key: the hint key string
*
* Look for a hint key/value pair matching with the given key string
* and returns the value string. If nothing found, returns NULL.
*/
*/
const
char
*
snd_hda_get_hint
(
struct
hda_codec
*
codec
,
const
char
*
key
)
const
char
*
snd_hda_get_hint
(
struct
hda_codec
*
codec
,
const
char
*
key
)
{
{
...
@@ -427,6 +432,15 @@ const char *snd_hda_get_hint(struct hda_codec *codec, const char *key)
...
@@ -427,6 +432,15 @@ const char *snd_hda_get_hint(struct hda_codec *codec, const char *key)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_get_hint
);
EXPORT_SYMBOL_GPL
(
snd_hda_get_hint
);
/**
* snd_hda_get_bool_hint - Get a boolean hint value
* @codec: the HDA codec
* @key: the hint key string
*
* Look for a hint key/value pair matching with the given key string
* and returns a boolean value parsed from the value. If no matching
* key is found, return a negative value.
*/
int
snd_hda_get_bool_hint
(
struct
hda_codec
*
codec
,
const
char
*
key
)
int
snd_hda_get_bool_hint
(
struct
hda_codec
*
codec
,
const
char
*
key
)
{
{
const
char
*
p
;
const
char
*
p
;
...
@@ -453,6 +467,16 @@ int snd_hda_get_bool_hint(struct hda_codec *codec, const char *key)
...
@@ -453,6 +467,16 @@ int snd_hda_get_bool_hint(struct hda_codec *codec, const char *key)
}
}
EXPORT_SYMBOL_GPL
(
snd_hda_get_bool_hint
);
EXPORT_SYMBOL_GPL
(
snd_hda_get_bool_hint
);
/**
* snd_hda_get_bool_hint - Get a boolean hint value
* @codec: the HDA codec
* @key: the hint key string
* @valp: pointer to store a value
*
* Look for a hint key/value pair matching with the given key string
* and stores the integer value to @valp. If no matching key is found,
* return a negative error code. Otherwise it returns zero.
*/
int
snd_hda_get_int_hint
(
struct
hda_codec
*
codec
,
const
char
*
key
,
int
*
valp
)
int
snd_hda_get_int_hint
(
struct
hda_codec
*
codec
,
const
char
*
key
,
int
*
valp
)
{
{
const
char
*
p
;
const
char
*
p
;
...
@@ -690,8 +714,11 @@ static int get_line_from_fw(char *buf, int size, size_t *fw_size_p,
...
@@ -690,8 +714,11 @@ static int get_line_from_fw(char *buf, int size, size_t *fw_size_p,
return
1
;
return
1
;
}
}
/*
/**
* load a "patch" firmware file and parse it
* snd_hda_load_patch - load a "patch" firmware file and parse it
* @bus: HD-audio bus
* @fw_size: the firmware byte size
* @fw_buf: the firmware data
*/
*/
int
snd_hda_load_patch
(
struct
hda_bus
*
bus
,
size_t
fw_size
,
const
void
*
fw_buf
)
int
snd_hda_load_patch
(
struct
hda_bus
*
bus
,
size_t
fw_size
,
const
void
*
fw_buf
)
{
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment