Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in
Toggle navigation
L
linux-davinci
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Redmine
Redmine
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Operations
Operations
Metrics
Environments
Analytics
Analytics
CI / CD
Repository
Value Stream
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
linux
linux-davinci
Commits
d5191e50
Commit
d5191e50
authored
Nov 16, 2009
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
ALSA: hda - Update / add kerneldoc comments to exported functions
Signed-off-by:
Takashi Iwai
<
tiwai@suse.de
>
parent
85dd662f
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
391 additions
and
41 deletions
+391
-41
sound/pci/hda/hda_codec.c
sound/pci/hda/hda_codec.c
+391
-41
No files found.
sound/pci/hda/hda_codec.c
View file @
d5191e50
...
...
@@ -94,6 +94,13 @@ static void hda_keep_power_on(struct hda_codec *codec);
static
inline
void
hda_keep_power_on
(
struct
hda_codec
*
codec
)
{}
#endif
/**
* snd_hda_get_jack_location - Give a location string of the jack
* @cfg: pin default config value
*
* Parse the pin default config value and returns the string of the
* jack location, e.g. "Rear", "Front", etc.
*/
const
char
*
snd_hda_get_jack_location
(
u32
cfg
)
{
static
char
*
bases
[
7
]
=
{
...
...
@@ -121,6 +128,13 @@ const char *snd_hda_get_jack_location(u32 cfg)
}
EXPORT_SYMBOL_HDA
(
snd_hda_get_jack_location
);
/**
* snd_hda_get_jack_connectivity - Give a connectivity string of the jack
* @cfg: pin default config value
*
* Parse the pin default config value and returns the string of the
* jack connectivity, i.e. external or internal connection.
*/
const
char
*
snd_hda_get_jack_connectivity
(
u32
cfg
)
{
static
char
*
jack_locations
[
4
]
=
{
"Ext"
,
"Int"
,
"Sep"
,
"Oth"
};
...
...
@@ -129,6 +143,13 @@ const char *snd_hda_get_jack_connectivity(u32 cfg)
}
EXPORT_SYMBOL_HDA
(
snd_hda_get_jack_connectivity
);
/**
* snd_hda_get_jack_type - Give a type string of the jack
* @cfg: pin default config value
*
* Parse the pin default config value and returns the string of the
* jack type, i.e. the purpose of the jack, such as Line-Out or CD.
*/
const
char
*
snd_hda_get_jack_type
(
u32
cfg
)
{
static
char
*
jack_types
[
16
]
=
{
...
...
@@ -822,6 +843,16 @@ int snd_hda_add_pincfg(struct hda_codec *codec, struct snd_array *list,
return
0
;
}
/**
* snd_hda_codec_set_pincfg - Override a pin default configuration
* @codec: the HDA codec
* @nid: NID to set the pin config
* @cfg: the pin default config value
*
* Override a pin default configuration value in the cache.
* This value can be read by snd_hda_codec_get_pincfg() in a higher
* priority than the real hardware value.
*/
int
snd_hda_codec_set_pincfg
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
unsigned
int
cfg
)
{
...
...
@@ -829,7 +860,15 @@ int snd_hda_codec_set_pincfg(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_codec_set_pincfg
);
/* get the current pin config value of the given pin NID */
/**
* snd_hda_codec_get_pincfg - Obtain a pin-default configuration
* @codec: the HDA codec
* @nid: NID to get the pin config
*
* Get the current pin config value of the given pin NID.
* If the pincfg value is cached or overridden via sysfs or driver,
* returns the cached value.
*/
unsigned
int
snd_hda_codec_get_pincfg
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
struct
hda_pincfg
*
pin
;
...
...
@@ -1028,6 +1067,15 @@ int /*__devinit*/ snd_hda_codec_new(struct hda_bus *bus, unsigned int codec_addr
}
EXPORT_SYMBOL_HDA
(
snd_hda_codec_new
);
/**
* snd_hda_codec_configure - (Re-)configure the HD-audio codec
* @codec: the HDA codec
*
* Start parsing of the given codec tree and (re-)initialize the whole
* patch instance.
*
* Returns 0 if successful or a negative error code.
*/
int
snd_hda_codec_configure
(
struct
hda_codec
*
codec
)
{
int
err
;
...
...
@@ -1090,6 +1138,11 @@ void snd_hda_codec_setup_stream(struct hda_codec *codec, hda_nid_t nid,
}
EXPORT_SYMBOL_HDA
(
snd_hda_codec_setup_stream
);
/**
* snd_hda_codec_cleanup_stream - clean up the codec for closing
* @codec: the CODEC to clean up
* @nid: the NID to clean up
*/
void
snd_hda_codec_cleanup_stream
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
if
(
!
nid
)
...
...
@@ -1165,8 +1218,17 @@ get_alloc_amp_hash(struct hda_codec *codec, u32 key)
return
(
struct
hda_amp_info
*
)
get_alloc_hash
(
&
codec
->
amp_cache
,
key
);
}
/*
* query AMP capabilities for the given widget and direction
/**
* query_amp_caps - query AMP capabilities
* @codec: the HD-auio codec
* @nid: the NID to query
* @direction: either #HDA_INPUT or #HDA_OUTPUT
*
* Query AMP capabilities for the given widget and direction.
* Returns the obtained capability bits.
*
* When cap bits have been already read, this doesn't read again but
* returns the cached value.
*/
u32
query_amp_caps
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
direction
)
{
...
...
@@ -1189,6 +1251,19 @@ u32 query_amp_caps(struct hda_codec *codec, hda_nid_t nid, int direction)
}
EXPORT_SYMBOL_HDA
(
query_amp_caps
);
/**
* snd_hda_override_amp_caps - Override the AMP capabilities
* @codec: the CODEC to clean up
* @nid: the NID to clean up
* @direction: either #HDA_INPUT or #HDA_OUTPUT
* @caps: the capability bits to set
*
* Override the cached AMP caps bits value by the given one.
* This function is useful if the driver needs to adjust the AMP ranges,
* e.g. limit to 0dB, etc.
*
* Returns zero if successful or a negative error code.
*/
int
snd_hda_override_amp_caps
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
dir
,
unsigned
int
caps
)
{
...
...
@@ -1224,6 +1299,17 @@ static unsigned int read_pin_cap(struct hda_codec *codec, hda_nid_t nid)
return
snd_hda_param_read
(
codec
,
nid
,
AC_PAR_PIN_CAP
);
}
/**
* snd_hda_query_pin_caps - Query PIN capabilities
* @codec: the HD-auio codec
* @nid: the NID to query
*
* Query PIN capabilities for the given widget.
* Returns the obtained capability bits.
*
* When cap bits have been already read, this doesn't read again but
* returns the cached value.
*/
u32
snd_hda_query_pin_caps
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
)
{
return
query_caps_hash
(
codec
,
nid
,
HDA_HASH_PINCAP_KEY
(
nid
),
...
...
@@ -1271,8 +1357,15 @@ static void put_vol_mute(struct hda_codec *codec, struct hda_amp_info *info,
info
->
vol
[
ch
]
=
val
;
}
/*
* read AMP value. The volume is between 0 to 0x7f, 0x80 = mute bit.
/**
* snd_hda_codec_amp_read - Read AMP value
* @codec: HD-audio codec
* @nid: NID to read the AMP value
* @ch: channel (left=0 or right=1)
* @direction: #HDA_INPUT or #HDA_OUTPUT
* @index: the index value (only for input direction)
*
* Read AMP value. The volume is between 0 to 0x7f, 0x80 = mute bit.
*/
int
snd_hda_codec_amp_read
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
ch
,
int
direction
,
int
index
)
...
...
@@ -1285,8 +1378,18 @@ int snd_hda_codec_amp_read(struct hda_codec *codec, hda_nid_t nid, int ch,
}
EXPORT_SYMBOL_HDA
(
snd_hda_codec_amp_read
);
/*
* update the AMP value, mask = bit mask to set, val = the value
/**
* snd_hda_codec_amp_update - update the AMP value
* @codec: HD-audio codec
* @nid: NID to read the AMP value
* @ch: channel (left=0 or right=1)
* @direction: #HDA_INPUT or #HDA_OUTPUT
* @idx: the index value (only for input direction)
* @mask: bit mask to set
* @val: the bits value to set
*
* Update the AMP value with a bit mask.
* Returns 0 if the value is unchanged, 1 if changed.
*/
int
snd_hda_codec_amp_update
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
ch
,
int
direction
,
int
idx
,
int
mask
,
int
val
)
...
...
@@ -1305,8 +1408,17 @@ int snd_hda_codec_amp_update(struct hda_codec *codec, hda_nid_t nid, int ch,
}
EXPORT_SYMBOL_HDA
(
snd_hda_codec_amp_update
);
/*
* update the AMP stereo with the same mask and value
/**
* snd_hda_codec_amp_stereo - update the AMP stereo values
* @codec: HD-audio codec
* @nid: NID to read the AMP value
* @direction: #HDA_INPUT or #HDA_OUTPUT
* @idx: the index value (only for input direction)
* @mask: bit mask to set
* @val: the bits value to set
*
* Update the AMP values like snd_hda_codec_amp_update(), but for a
* stereo widget with the same mask and value.
*/
int
snd_hda_codec_amp_stereo
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
direction
,
int
idx
,
int
mask
,
int
val
)
...
...
@@ -1320,7 +1432,12 @@ int snd_hda_codec_amp_stereo(struct hda_codec *codec, hda_nid_t nid,
EXPORT_SYMBOL_HDA
(
snd_hda_codec_amp_stereo
);
#ifdef SND_HDA_NEEDS_RESUME
/* resume the all amp commands from the cache */
/**
* snd_hda_codec_resume_amp - Resume all AMP commands from the cache
* @codec: HD-audio codec
*
* Resume the all amp commands from the cache.
*/
void
snd_hda_codec_resume_amp
(
struct
hda_codec
*
codec
)
{
struct
hda_amp_info
*
buffer
=
codec
->
amp_cache
.
buf
.
list
;
...
...
@@ -1346,7 +1463,12 @@ void snd_hda_codec_resume_amp(struct hda_codec *codec)
EXPORT_SYMBOL_HDA
(
snd_hda_codec_resume_amp
);
#endif
/* SND_HDA_NEEDS_RESUME */
/* volume */
/**
* snd_hda_mixer_amp_volume_info - Info callback for a standard AMP mixer
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_volume_info
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_info
*
uinfo
)
{
...
...
@@ -1402,6 +1524,12 @@ update_amp_value(struct hda_codec *codec, hda_nid_t nid,
HDA_AMP_VOLMASK
,
val
);
}
/**
* snd_hda_mixer_amp_volume_get - Get callback for a standard AMP mixer volume
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_volume_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1421,6 +1549,12 @@ int snd_hda_mixer_amp_volume_get(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_amp_volume_get
);
/**
* snd_hda_mixer_amp_volume_put - Put callback for a standard AMP mixer volume
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_volume_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1445,6 +1579,12 @@ int snd_hda_mixer_amp_volume_put(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_amp_volume_put
);
/**
* snd_hda_mixer_amp_volume_put - TLV callback for a standard AMP mixer volume
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_tlv
(
struct
snd_kcontrol
*
kcontrol
,
int
op_flag
,
unsigned
int
size
,
unsigned
int
__user
*
_tlv
)
{
...
...
@@ -1474,8 +1614,16 @@ int snd_hda_mixer_amp_tlv(struct snd_kcontrol *kcontrol, int op_flag,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_amp_tlv
);
/*
* set (static) TLV for virtual master volume; recalculated as max 0dB
/**
* snd_hda_set_vmaster_tlv - Set TLV for a virtual master control
* @codec: HD-audio codec
* @nid: NID of a reference widget
* @dir: #HDA_INPUT or #HDA_OUTPUT
* @tlv: TLV data to be stored, at least 4 elements
*
* Set (static) TLV data for a virtual master volume using the AMP caps
* obtained from the reference NID.
* The volume range is recalculated as if the max volume is 0dB.
*/
void
snd_hda_set_vmaster_tlv
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
int
dir
,
unsigned
int
*
tlv
)
...
...
@@ -1509,6 +1657,13 @@ _snd_hda_find_mixer_ctl(struct hda_codec *codec,
return
snd_ctl_find_id
(
codec
->
bus
->
card
,
&
id
);
}
/**
* snd_hda_find_mixer_ctl - Find a mixer control element with the given name
* @codec: HD-audio codec
* @name: ctl id name string
*
* Get the control element with the given id string and IFACE_MIXER.
*/
struct
snd_kcontrol
*
snd_hda_find_mixer_ctl
(
struct
hda_codec
*
codec
,
const
char
*
name
)
{
...
...
@@ -1516,7 +1671,24 @@ struct snd_kcontrol *snd_hda_find_mixer_ctl(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_find_mixer_ctl
);
/* Add a control element and assign to the codec */
/**
* snd_hda_ctl-add - Add a control element and assign to the codec
* @codec: HD-audio codec
* @nid: corresponding NID (optional)
* @kctl: the control element to assign
*
* Add the given control element to an array inside the codec instance.
* All control elements belonging to a codec are supposed to be added
* by this function so that a proper clean-up works at the free or
* reconfiguration time.
*
* If non-zero @nid is passed, the NID is assigned to the control element.
* The assignment is shown in the codec proc file.
*
* snd_hda_ctl_add() checks the control subdev id field whether
* #HDA_SUBDEV_NID_FLAG bit is set. If set (and @nid is zero), the lower
* bits value is taken as the NID to assign.
*/
int
snd_hda_ctl_add
(
struct
hda_codec
*
codec
,
hda_nid_t
nid
,
struct
snd_kcontrol
*
kctl
)
{
...
...
@@ -1540,7 +1712,10 @@ int snd_hda_ctl_add(struct hda_codec *codec, hda_nid_t nid,
}
EXPORT_SYMBOL_HDA
(
snd_hda_ctl_add
);
/* Clear all controls assigned to the given codec */
/**
* snd_hda_ctls_clear - Clear all controls assigned to the given codec
* @codec: HD-audio codec
*/
void
snd_hda_ctls_clear
(
struct
hda_codec
*
codec
)
{
int
i
;
...
...
@@ -1572,6 +1747,16 @@ static void hda_unlock_devices(struct snd_card *card)
spin_unlock
(
&
card
->
files_lock
);
}
/**
* snd_hda_codec_reset - Clear all objects assigned to the codec
* @codec: HD-audio codec
*
* This frees the all PCM and control elements assigned to the codec, and
* clears the caches and restores the pin default configurations.
*
* When a device is being used, it returns -EBSY. If successfully freed,
* returns zero.
*/
int
snd_hda_codec_reset
(
struct
hda_codec
*
codec
)
{
struct
snd_card
*
card
=
codec
->
bus
->
card
;
...
...
@@ -1635,7 +1820,22 @@ int snd_hda_codec_reset(struct hda_codec *codec)
return
0
;
}
/* create a virtual master control and add slaves */
/**
* snd_hda_add_vmaster - create a virtual master control and add slaves
* @codec: HD-audio codec
* @name: vmaster control name
* @tlv: TLV data (optional)
* @slaves: slave control names (optional)
*
* Create a virtual master control with the given name. The TLV data
* must be either NULL or a valid data.
*
* @slaves is a NULL-terminated array of strings, each of which is a
* slave control name. All controls with these names are assigned to
* the new virtual master control.
*
* This function returns zero if successful or a negative error code.
*/
int
snd_hda_add_vmaster
(
struct
hda_codec
*
codec
,
char
*
name
,
unsigned
int
*
tlv
,
const
char
**
slaves
)
{
...
...
@@ -1677,7 +1877,12 @@ int snd_hda_add_vmaster(struct hda_codec *codec, char *name,
}
EXPORT_SYMBOL_HDA
(
snd_hda_add_vmaster
);
/* switch */
/**
* snd_hda_mixer_amp_switch_info - Info callback for a standard AMP mixer switch
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_switch_info
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_info
*
uinfo
)
{
...
...
@@ -1691,6 +1896,12 @@ int snd_hda_mixer_amp_switch_info(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_amp_switch_info
);
/**
* snd_hda_mixer_amp_switch_get - Get callback for a standard AMP mixer switch
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_switch_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1711,6 +1922,12 @@ int snd_hda_mixer_amp_switch_get(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_amp_switch_get
);
/**
* snd_hda_mixer_amp_switch_put - Put callback for a standard AMP mixer switch
*
* The control element is supposed to have the private_value field
* set up via HDA_COMPOSE_AMP_VAL*() or related macros.
*/
int
snd_hda_mixer_amp_switch_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1742,6 +1959,12 @@ int snd_hda_mixer_amp_switch_put(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_amp_switch_put
);
/**
* snd_hda_mixer_amp_switch_put_beep - Put callback for a beep AMP switch
*
* This function calls snd_hda_enable_beep_device(), which behaves differently
* depending on beep_mode option.
*/
int
snd_hda_mixer_amp_switch_put_beep
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1762,6 +1985,12 @@ EXPORT_SYMBOL_HDA(snd_hda_mixer_amp_switch_put_beep);
#define AMP_VAL_IDX_SHIFT 19
#define AMP_VAL_IDX_MASK (0x0f<<19)
/**
* snd_hda_mixer_bind_switch_get - Get callback for a bound volume control
*
* The control element is supposed to have the private_value field
* set up via HDA_BIND_MUTE*() macros.
*/
int
snd_hda_mixer_bind_switch_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1779,6 +2008,12 @@ int snd_hda_mixer_bind_switch_get(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_bind_switch_get
);
/**
* snd_hda_mixer_bind_switch_put - Put callback for a bound volume control
*
* The control element is supposed to have the private_value field
* set up via HDA_BIND_MUTE*() macros.
*/
int
snd_hda_mixer_bind_switch_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1803,8 +2038,11 @@ int snd_hda_mixer_bind_switch_put(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_bind_switch_put
);
/*
* generic bound volume/swtich controls
/**
* snd_hda_mixer_bind_ctls_info - Info callback for a generic bound control
*
* The control element is supposed to have the private_value field
* set up via HDA_BIND_VOL() or HDA_BIND_SW() macros.
*/
int
snd_hda_mixer_bind_ctls_info
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_info
*
uinfo
)
...
...
@@ -1823,6 +2061,12 @@ int snd_hda_mixer_bind_ctls_info(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_bind_ctls_info
);
/**
* snd_hda_mixer_bind_ctls_get - Get callback for a generic bound control
*
* The control element is supposed to have the private_value field
* set up via HDA_BIND_VOL() or HDA_BIND_SW() macros.
*/
int
snd_hda_mixer_bind_ctls_get
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1840,6 +2084,12 @@ int snd_hda_mixer_bind_ctls_get(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_bind_ctls_get
);
/**
* snd_hda_mixer_bind_ctls_put - Put callback for a generic bound control
*
* The control element is supposed to have the private_value field
* set up via HDA_BIND_VOL() or HDA_BIND_SW() macros.
*/
int
snd_hda_mixer_bind_ctls_put
(
struct
snd_kcontrol
*
kcontrol
,
struct
snd_ctl_elem_value
*
ucontrol
)
{
...
...
@@ -1863,6 +2113,12 @@ int snd_hda_mixer_bind_ctls_put(struct snd_kcontrol *kcontrol,
}
EXPORT_SYMBOL_HDA
(
snd_hda_mixer_bind_ctls_put
);
/**
* snd_hda_mixer_bind_tlv - TLV callback for a generic bound control
*
* The control element is supposed to have the private_value field
* set up via HDA_BIND_VOL() macro.
*/
int
snd_hda_mixer_bind_tlv
(
struct
snd_kcontrol
*
kcontrol
,
int
op_flag
,
unsigned
int
size
,
unsigned
int
__user
*
tlv
)
{
...
...
@@ -2185,6 +2441,11 @@ static struct snd_kcontrol_new spdif_share_sw = {
.
put
=
spdif_share_sw_put
,
};
/**
* snd_hda_create_spdif_share_sw - create Default PCM switch
* @codec: the HDA codec
* @mout: multi-out instance
*/
int
snd_hda_create_spdif_share_sw
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
{
...
...
@@ -2352,7 +2613,12 @@ int snd_hda_codec_write_cache(struct hda_codec *codec, hda_nid_t nid,
}
EXPORT_SYMBOL_HDA
(
snd_hda_codec_write_cache
);
/* resume the all commands from the cache */
/**
* snd_hda_codec_resume_cache - Resume the all commands from the cache
* @codec: HD-audio codec
*
* Execute all verbs recorded in the command caches to resume.
*/
void
snd_hda_codec_resume_cache
(
struct
hda_codec
*
codec
)
{
struct
hda_cache_head
*
buffer
=
codec
->
cmd_cache
.
buf
.
list
;
...
...
@@ -2778,8 +3044,12 @@ static int snd_hda_query_supported_pcm(struct hda_codec *codec, hda_nid_t nid,
}
/**
* snd_hda_is_supported_format - check whether the given node supports
* the format val
* snd_hda_is_supported_format - Check the validity of the format
* @codec: HD-audio codec
* @nid: NID to check
* @format: the HD-audio format value to check
*
* Check whether the given node supports the format value.
*
* Returns 1 if supported, 0 if not.
*/
...
...
@@ -2899,6 +3169,7 @@ static int set_pcm_default_values(struct hda_codec *codec,
return
0
;
}
/* global */
const
char
*
snd_hda_pcm_type_name
[
HDA_PCM_NTYPES
]
=
{
"Audio"
,
"SPDIF"
,
"HDMI"
,
"Modem"
};
...
...
@@ -3216,6 +3487,7 @@ static void hda_keep_power_on(struct hda_codec *codec)
codec
->
power_jiffies
=
jiffies
;
}
/* update the power on/off account with the current jiffies */
void
snd_hda_update_power_acct
(
struct
hda_codec
*
codec
)
{
unsigned
long
delta
=
jiffies
-
codec
->
power_jiffies
;
...
...
@@ -3226,6 +3498,13 @@ void snd_hda_update_power_acct(struct hda_codec *codec)
codec
->
power_jiffies
+=
delta
;
}
/**
* snd_hda_power_up - Power-up the codec
* @codec: HD-audio codec
*
* Increment the power-up counter and power up the hardware really when
* not turned on yet.
*/
void
snd_hda_power_up
(
struct
hda_codec
*
codec
)
{
struct
hda_bus
*
bus
=
codec
->
bus
;
...
...
@@ -3248,9 +3527,13 @@ EXPORT_SYMBOL_HDA(snd_hda_power_up);
#define power_save(codec) \
((codec)->bus->power_save ? *(codec)->bus->power_save : 0)
#define power_save(codec) \
((codec)->bus->power_save ? *(codec)->bus->power_save : 0)
/**
* snd_hda_power_down - Power-down the codec
* @codec: HD-audio codec
*
* Decrement the power-up counter and schedules the power-off work if
* the counter rearches to zero.
*/
void
snd_hda_power_down
(
struct
hda_codec
*
codec
)
{
--
codec
->
power_count
;
...
...
@@ -3264,6 +3547,19 @@ void snd_hda_power_down(struct hda_codec *codec)
}
EXPORT_SYMBOL_HDA
(
snd_hda_power_down
);
/**
* snd_hda_check_amp_list_power - Check the amp list and update the power
* @codec: HD-audio codec
* @check: the object containing an AMP list and the status
* @nid: NID to check / update
*
* Check whether the given NID is in the amp list. If it's in the list,
* check the current AMP status, and update the the power-status according
* to the mute status.
*
* This function is supposed to be set or called from the check_power_status
* patch ops.
*/
int
snd_hda_check_amp_list_power
(
struct
hda_codec
*
codec
,
struct
hda_loopback_check
*
check
,
hda_nid_t
nid
)
...
...
@@ -3305,6 +3601,10 @@ EXPORT_SYMBOL_HDA(snd_hda_check_amp_list_power);
/*
* Channel mode helper
*/
/**
* snd_hda_ch_mode_info - Info callback helper for the channel mode enum
*/
int
snd_hda_ch_mode_info
(
struct
hda_codec
*
codec
,
struct
snd_ctl_elem_info
*
uinfo
,
const
struct
hda_channel_mode
*
chmode
,
...
...
@@ -3321,6 +3621,9 @@ int snd_hda_ch_mode_info(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_ch_mode_info
);
/**
* snd_hda_ch_mode_get - Get callback helper for the channel mode enum
*/
int
snd_hda_ch_mode_get
(
struct
hda_codec
*
codec
,
struct
snd_ctl_elem_value
*
ucontrol
,
const
struct
hda_channel_mode
*
chmode
,
...
...
@@ -3339,6 +3642,9 @@ int snd_hda_ch_mode_get(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_ch_mode_get
);
/**
* snd_hda_ch_mode_put - Put callback helper for the channel mode enum
*/
int
snd_hda_ch_mode_put
(
struct
hda_codec
*
codec
,
struct
snd_ctl_elem_value
*
ucontrol
,
const
struct
hda_channel_mode
*
chmode
,
...
...
@@ -3363,6 +3669,10 @@ EXPORT_SYMBOL_HDA(snd_hda_ch_mode_put);
/*
* input MUX helper
*/
/**
* snd_hda_input_mux_info_info - Info callback helper for the input-mux enum
*/
int
snd_hda_input_mux_info
(
const
struct
hda_input_mux
*
imux
,
struct
snd_ctl_elem_info
*
uinfo
)
{
...
...
@@ -3381,6 +3691,9 @@ int snd_hda_input_mux_info(const struct hda_input_mux *imux,
}
EXPORT_SYMBOL_HDA
(
snd_hda_input_mux_info
);
/**
* snd_hda_input_mux_info_put - Put callback helper for the input-mux enum
*/
int
snd_hda_input_mux_put
(
struct
hda_codec
*
codec
,
const
struct
hda_input_mux
*
imux
,
struct
snd_ctl_elem_value
*
ucontrol
,
...
...
@@ -3440,7 +3753,10 @@ static void cleanup_dig_out_stream(struct hda_codec *codec, hda_nid_t nid)
}
}
/* call each reboot notifier */
/**
* snd_hda_bus_reboot_notify - call the reboot notifier of each codec
* @bus: HD-audio bus
*/
void
snd_hda_bus_reboot_notify
(
struct
hda_bus
*
bus
)
{
struct
hda_codec
*
codec
;
...
...
@@ -3458,8 +3774,8 @@ void snd_hda_bus_reboot_notify(struct hda_bus *bus)
}
EXPORT_SYMBOL_HDA
(
snd_hda_bus_reboot_notify
);
/*
* open the digital out in the exclusive mode
/*
*
*
snd_hda_multi_out_dig_open -
open the digital out in the exclusive mode
*/
int
snd_hda_multi_out_dig_open
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
...
...
@@ -3474,6 +3790,9 @@ int snd_hda_multi_out_dig_open(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_dig_open
);
/**
* snd_hda_multi_out_dig_prepare - prepare the digital out stream
*/
int
snd_hda_multi_out_dig_prepare
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
,
unsigned
int
stream_tag
,
...
...
@@ -3487,6 +3806,9 @@ int snd_hda_multi_out_dig_prepare(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_dig_prepare
);
/**
* snd_hda_multi_out_dig_cleanup - clean-up the digital out stream
*/
int
snd_hda_multi_out_dig_cleanup
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
{
...
...
@@ -3497,8 +3819,8 @@ int snd_hda_multi_out_dig_cleanup(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_dig_cleanup
);
/*
*
release the digital out
/*
*
*
snd_hda_multi_out_dig_close - release the digital out stream
*/
int
snd_hda_multi_out_dig_close
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
...
...
@@ -3510,8 +3832,12 @@ int snd_hda_multi_out_dig_close(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_dig_close
);
/*
* set up more restrictions for analog out
/**
* snd_hda_multi_out_analog_open - open analog outputs
*
* Open analog outputs and set up the hw-constraints.
* If the digital outputs can be opened as slave, open the digital
* outputs, too.
*/
int
snd_hda_multi_out_analog_open
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
,
...
...
@@ -3556,9 +3882,11 @@ int snd_hda_multi_out_analog_open(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_analog_open
);
/*
* set up the i/o for analog out
* when the digital out is available, copy the front out to digital out, too.
/**
* snd_hda_multi_out_analog_prepare - Preapre the analog outputs.
*
* Set up the i/o for analog out.
* When the digital out is available, copy the front out to digital out, too.
*/
int
snd_hda_multi_out_analog_prepare
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
,
...
...
@@ -3615,8 +3943,8 @@ int snd_hda_multi_out_analog_prepare(struct hda_codec *codec,
}
EXPORT_SYMBOL_HDA
(
snd_hda_multi_out_analog_prepare
);
/*
* clean up the setting for analog out
/*
*
*
snd_hda_multi_out_analog_cleanup -
clean up the setting for analog out
*/
int
snd_hda_multi_out_analog_cleanup
(
struct
hda_codec
*
codec
,
struct
hda_multi_out
*
mout
)
...
...
@@ -4002,8 +4330,14 @@ EXPORT_SYMBOL_HDA(snd_hda_resume);
* generic arrays
*/
/* get a new element from the given array
* if it exceeds the pre-allocated array size, re-allocate the array
/**
* snd_array_new - get a new element from the given array
* @array: the array object
*
* Get a new element from the given array. If it exceeds the
* pre-allocated array size, re-allocate the array.
*
* Returns NULL if allocation failed.
*/
void
*
snd_array_new
(
struct
snd_array
*
array
)
{
...
...
@@ -4027,7 +4361,10 @@ void *snd_array_new(struct snd_array *array)
}
EXPORT_SYMBOL_HDA
(
snd_array_new
);
/* free the given array elements */
/**
* snd_array_free - free the given array elements
* @array: the array object
*/
void
snd_array_free
(
struct
snd_array
*
array
)
{
kfree
(
array
->
list
);
...
...
@@ -4037,7 +4374,12 @@ void snd_array_free(struct snd_array *array)
}
EXPORT_SYMBOL_HDA
(
snd_array_free
);
/*
/**
* snd_print_pcm_rates - Print the supported PCM rates to the string buffer
* @pcm: PCM caps bits
* @buf: the string buffer to write
* @buflen: the max buffer length
*
* used by hda_proc.c and hda_eld.c
*/
void
snd_print_pcm_rates
(
int
pcm
,
char
*
buf
,
int
buflen
)
...
...
@@ -4056,6 +4398,14 @@ void snd_print_pcm_rates(int pcm, char *buf, int buflen)
}
EXPORT_SYMBOL_HDA
(
snd_print_pcm_rates
);
/**
* snd_print_pcm_bits - Print the supported PCM fmt bits to the string buffer
* @pcm: PCM caps bits
* @buf: the string buffer to write
* @buflen: the max buffer length
*
* used by hda_proc.c and hda_eld.c
*/
void
snd_print_pcm_bits
(
int
pcm
,
char
*
buf
,
int
buflen
)
{
static
unsigned
int
bits
[]
=
{
8
,
16
,
20
,
24
,
32
};
...
...
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