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
nexedi
linux
Commits
1aaff096
Commit
1aaff096
authored
Aug 19, 2014
by
Takashi Iwai
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'for-linus' into topic/hda-cleanup
Syncing the HD-audio updates for further cleanup works.
parents
7d1311b9
f475371a
Changes
13
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
67 additions
and
63 deletions
+67
-63
MAINTAINERS
MAINTAINERS
+3
-0
sound/pci/hda/patch_realtek.c
sound/pci/hda/patch_realtek.c
+21
-5
sound/soc/codecs/arizona.c
sound/soc/codecs/arizona.c
+4
-2
sound/soc/codecs/pcm512x.c
sound/soc/codecs/pcm512x.c
+2
-2
sound/soc/davinci/davinci-mcasp.c
sound/soc/davinci/davinci-mcasp.c
+11
-3
sound/soc/fsl/Kconfig
sound/soc/fsl/Kconfig
+0
-1
sound/soc/fsl/fsl_esai.c
sound/soc/fsl/fsl_esai.c
+0
-2
sound/soc/intel/sst-acpi.c
sound/soc/intel/sst-acpi.c
+2
-2
sound/soc/intel/sst-baytrail-ipc.c
sound/soc/intel/sst-baytrail-ipc.c
+1
-9
sound/soc/intel/sst-baytrail-ipc.h
sound/soc/intel/sst-baytrail-ipc.h
+0
-1
sound/soc/intel/sst-baytrail-pcm.c
sound/soc/intel/sst-baytrail-pcm.c
+15
-28
sound/soc/pxa/pxa-ssp.c
sound/soc/pxa/pxa-ssp.c
+1
-3
sound/soc/soc-dapm.c
sound/soc/soc-dapm.c
+7
-5
No files found.
MAINTAINERS
View file @
1aaff096
...
...
@@ -3843,10 +3843,13 @@ F: drivers/tty/serial/ucc_uart.c
FREESCALE SOC SOUND DRIVERS
M: Timur Tabi <timur@tabi.org>
M: Nicolin Chen <nicoleotsuka@gmail.com>
M: Xiubo Li <Li.Xiubo@freescale.com>
L: alsa-devel@alsa-project.org (moderated for non-subscribers)
L: linuxppc-dev@lists.ozlabs.org
S: Maintained
F: sound/soc/fsl/fsl*
F: sound/soc/fsl/imx*
F: sound/soc/fsl/mpc8610_hpcd.c
FREEVXFS FILESYSTEM
...
...
sound/pci/hda/patch_realtek.c
View file @
1aaff096
...
...
@@ -181,6 +181,8 @@ static void alc_fix_pll(struct hda_codec *codec)
spec
->
pll_coef_idx
);
val
=
snd_hda_codec_read
(
codec
,
spec
->
pll_nid
,
0
,
AC_VERB_GET_PROC_COEF
,
0
);
if
(
val
==
-
1
)
return
;
snd_hda_codec_write
(
codec
,
spec
->
pll_nid
,
0
,
AC_VERB_SET_COEF_INDEX
,
spec
->
pll_coef_idx
);
snd_hda_codec_write
(
codec
,
spec
->
pll_nid
,
0
,
AC_VERB_SET_PROC_COEF
,
...
...
@@ -2806,6 +2808,8 @@ static void alc286_shutup(struct hda_codec *codec)
static
void
alc269vb_toggle_power_output
(
struct
hda_codec
*
codec
,
int
power_up
)
{
int
val
=
alc_read_coef_idx
(
codec
,
0x04
);
if
(
val
==
-
1
)
return
;
if
(
power_up
)
val
|=
1
<<
11
;
else
...
...
@@ -3264,6 +3268,15 @@ static int alc269_resume(struct hda_codec *codec)
snd_hda_codec_resume_cache
(
codec
);
alc_inv_dmic_sync
(
codec
,
true
);
hda_call_check_power_status
(
codec
,
0x01
);
/* on some machine, the BIOS will clear the codec gpio data when enter
* suspend, and won't restore the data after resume, so we restore it
* in the driver.
*/
if
(
spec
->
gpio_led
)
snd_hda_codec_write
(
codec
,
codec
->
afg
,
0
,
AC_VERB_SET_GPIO_DATA
,
spec
->
gpio_led
);
if
(
spec
->
has_alc5505_dsp
)
alc5505_dsp_resume
(
codec
);
...
...
@@ -5311,27 +5324,30 @@ static void alc269_fill_coef(struct hda_codec *codec)
if
((
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x017
)
{
val
=
alc_read_coef_idx
(
codec
,
0x04
);
/* Power up output pin */
alc_write_coef_idx
(
codec
,
0x04
,
val
|
(
1
<<
11
));
if
(
val
!=
-
1
)
alc_write_coef_idx
(
codec
,
0x04
,
val
|
(
1
<<
11
));
}
if
((
alc_get_coef0
(
codec
)
&
0x00ff
)
==
0x018
)
{
val
=
alc_read_coef_idx
(
codec
,
0xd
);
if
((
val
&
0x0c00
)
>>
10
!=
0x1
)
{
if
(
val
!=
-
1
&&
(
val
&
0x0c00
)
>>
10
!=
0x1
)
{
/* Capless ramp up clock control */
alc_write_coef_idx
(
codec
,
0xd
,
val
|
(
1
<<
10
));
}
val
=
alc_read_coef_idx
(
codec
,
0x17
);
if
((
val
&
0x01c0
)
>>
6
!=
0x4
)
{
if
(
val
!=
-
1
&&
(
val
&
0x01c0
)
>>
6
!=
0x4
)
{
/* Class D power on reset */
alc_write_coef_idx
(
codec
,
0x17
,
val
|
(
1
<<
7
));
}
}
val
=
alc_read_coef_idx
(
codec
,
0xd
);
/* Class D */
alc_write_coef_idx
(
codec
,
0xd
,
val
|
(
1
<<
14
));
if
(
val
!=
-
1
)
alc_write_coef_idx
(
codec
,
0xd
,
val
|
(
1
<<
14
));
val
=
alc_read_coef_idx
(
codec
,
0x4
);
/* HP */
alc_write_coef_idx
(
codec
,
0x4
,
val
|
(
1
<<
11
));
if
(
val
!=
-
1
)
alc_write_coef_idx
(
codec
,
0x4
,
val
|
(
1
<<
11
));
}
/*
...
...
sound/soc/codecs/arizona.c
View file @
1aaff096
...
...
@@ -1278,6 +1278,8 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
else
rates
=
&
arizona_48k_bclk_rates
[
0
];
wl
=
snd_pcm_format_width
(
params_format
(
params
));
if
(
tdm_slots
)
{
arizona_aif_dbg
(
dai
,
"Configuring for %d %d bit TDM slots
\n
"
,
tdm_slots
,
tdm_width
);
...
...
@@ -1285,6 +1287,7 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
channels
=
tdm_slots
;
}
else
{
bclk_target
=
snd_soc_params_to_bclk
(
params
);
tdm_width
=
wl
;
}
if
(
chan_limit
&&
chan_limit
<
channels
)
{
...
...
@@ -1319,8 +1322,7 @@ static int arizona_hw_params(struct snd_pcm_substream *substream,
arizona_aif_dbg
(
dai
,
"BCLK %dHz LRCLK %dHz
\n
"
,
rates
[
bclk
],
rates
[
bclk
]
/
lrclk
);
wl
=
snd_pcm_format_width
(
params_format
(
params
));
frame
=
wl
<<
ARIZONA_AIF1TX_WL_SHIFT
|
wl
;
frame
=
wl
<<
ARIZONA_AIF1TX_WL_SHIFT
|
tdm_width
;
reconfig
=
arizona_aif_cfg_changed
(
codec
,
base
,
bclk
,
lrclk
,
frame
);
...
...
sound/soc/codecs/pcm512x.c
View file @
1aaff096
...
...
@@ -259,13 +259,13 @@ static const struct soc_enum pcm512x_veds =
pcm512x_ramp_step_text
);
static
const
struct
snd_kcontrol_new
pcm512x_controls
[]
=
{
SOC_DOUBLE_R_TLV
(
"
Playback Digital
Volume"
,
PCM512x_DIGITAL_VOLUME_2
,
SOC_DOUBLE_R_TLV
(
"
Digital Playback
Volume"
,
PCM512x_DIGITAL_VOLUME_2
,
PCM512x_DIGITAL_VOLUME_3
,
0
,
255
,
1
,
digital_tlv
),
SOC_DOUBLE_TLV
(
"Playback Volume"
,
PCM512x_ANALOG_GAIN_CTRL
,
PCM512x_LAGN_SHIFT
,
PCM512x_RAGN_SHIFT
,
1
,
1
,
analog_tlv
),
SOC_DOUBLE_TLV
(
"Playback Boost Volume"
,
PCM512x_ANALOG_GAIN_BOOST
,
PCM512x_AGBL_SHIFT
,
PCM512x_AGBR_SHIFT
,
1
,
0
,
boost_tlv
),
SOC_DOUBLE
(
"
Playback Digital
Switch"
,
PCM512x_MUTE
,
PCM512x_RQML_SHIFT
,
SOC_DOUBLE
(
"
Digital Playback
Switch"
,
PCM512x_MUTE
,
PCM512x_RQML_SHIFT
,
PCM512x_RQMR_SHIFT
,
1
,
1
),
SOC_SINGLE
(
"Deemphasis Switch"
,
PCM512x_DSP
,
PCM512x_DEMP_SHIFT
,
1
,
1
),
...
...
sound/soc/davinci/davinci-mcasp.c
View file @
1aaff096
...
...
@@ -403,7 +403,8 @@ static int davinci_mcasp_set_dai_fmt(struct snd_soc_dai *cpu_dai,
return
ret
;
}
static
int
davinci_mcasp_set_clkdiv
(
struct
snd_soc_dai
*
dai
,
int
div_id
,
int
div
)
static
int
__davinci_mcasp_set_clkdiv
(
struct
snd_soc_dai
*
dai
,
int
div_id
,
int
div
,
bool
explicit
)
{
struct
davinci_mcasp
*
mcasp
=
snd_soc_dai_get_drvdata
(
dai
);
...
...
@@ -420,7 +421,8 @@ static int davinci_mcasp_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div
ACLKXDIV
(
div
-
1
),
ACLKXDIV_MASK
);
mcasp_mod_bits
(
mcasp
,
DAVINCI_MCASP_ACLKRCTL_REG
,
ACLKRDIV
(
div
-
1
),
ACLKRDIV_MASK
);
mcasp
->
bclk_div
=
div
;
if
(
explicit
)
mcasp
->
bclk_div
=
div
;
break
;
case
2
:
/* BCLK/LRCLK ratio */
...
...
@@ -434,6 +436,12 @@ static int davinci_mcasp_set_clkdiv(struct snd_soc_dai *dai, int div_id, int div
return
0
;
}
static
int
davinci_mcasp_set_clkdiv
(
struct
snd_soc_dai
*
dai
,
int
div_id
,
int
div
)
{
return
__davinci_mcasp_set_clkdiv
(
dai
,
div_id
,
div
,
1
);
}
static
int
davinci_mcasp_set_sysclk
(
struct
snd_soc_dai
*
dai
,
int
clk_id
,
unsigned
int
freq
,
int
dir
)
{
...
...
@@ -738,7 +746,7 @@ static int davinci_mcasp_hw_params(struct snd_pcm_substream *substream,
"Inaccurate BCLK: %u Hz / %u != %u Hz
\n
"
,
mcasp
->
sysclk_freq
,
div
,
bclk_freq
);
}
davinci_mcasp_set_clkdiv
(
cpu_dai
,
1
,
div
);
__davinci_mcasp_set_clkdiv
(
cpu_dai
,
1
,
div
,
0
);
}
ret
=
mcasp_common_hw_param
(
mcasp
,
substream
->
stream
,
...
...
sound/soc/fsl/Kconfig
View file @
1aaff096
...
...
@@ -49,7 +49,6 @@ config SND_SOC_FSL_ESAI
tristate "Enhanced Serial Audio Interface (ESAI) module support"
select REGMAP_MMIO
select SND_SOC_IMX_PCM_DMA if SND_IMX_SOC != n
select SND_SOC_FSL_UTILS
help
Say Y if you want to add Enhanced Synchronous Audio Interface
(ESAI) support for the Freescale CPUs.
...
...
sound/soc/fsl/fsl_esai.c
View file @
1aaff096
...
...
@@ -18,7 +18,6 @@
#include "fsl_esai.h"
#include "imx-pcm.h"
#include "fsl_utils.h"
#define FSL_ESAI_RATES SNDRV_PCM_RATE_8000_192000
#define FSL_ESAI_FORMATS (SNDRV_PCM_FMTBIT_S8 | \
...
...
@@ -607,7 +606,6 @@ static struct snd_soc_dai_ops fsl_esai_dai_ops = {
.
hw_params
=
fsl_esai_hw_params
,
.
set_sysclk
=
fsl_esai_set_dai_sysclk
,
.
set_fmt
=
fsl_esai_set_dai_fmt
,
.
xlate_tdm_slot_mask
=
fsl_asoc_xlate_tdm_slot_mask
,
.
set_tdm_slot
=
fsl_esai_set_dai_tdm_slot
,
};
...
...
sound/soc/intel/sst-acpi.c
View file @
1aaff096
...
...
@@ -246,8 +246,8 @@ static struct sst_acpi_desc sst_acpi_broadwell_desc = {
};
static
struct
sst_acpi_mach
baytrail_machines
[]
=
{
{
"10EC5640"
,
"byt-rt5640"
,
"intel/fw_sst_0f28.bin-i2s_master"
},
{
"193C9890"
,
"byt-max98090"
,
"intel/fw_sst_0f28.bin-i2s_master"
},
{
"10EC5640"
,
"byt-rt5640"
,
"intel/fw_sst_0f28.bin-
48kHz_
i2s_master"
},
{
"193C9890"
,
"byt-max98090"
,
"intel/fw_sst_0f28.bin-
48kHz_
i2s_master"
},
{}
};
...
...
sound/soc/intel/sst-baytrail-ipc.c
View file @
1aaff096
...
...
@@ -817,7 +817,7 @@ static struct sst_dsp_device byt_dev = {
.
ops
=
&
sst_byt_ops
,
};
int
sst_byt_dsp_suspend_
noirq
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
)
int
sst_byt_dsp_suspend_
late
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
)
{
struct
sst_byt
*
byt
=
pdata
->
dsp
;
...
...
@@ -826,14 +826,6 @@ int sst_byt_dsp_suspend_noirq(struct device *dev, struct sst_pdata *pdata)
sst_byt_drop_all
(
byt
);
dev_dbg
(
byt
->
dev
,
"dsp in reset
\n
"
);
return
0
;
}
EXPORT_SYMBOL_GPL
(
sst_byt_dsp_suspend_noirq
);
int
sst_byt_dsp_suspend_late
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
)
{
struct
sst_byt
*
byt
=
pdata
->
dsp
;
dev_dbg
(
byt
->
dev
,
"free all blocks and unload fw
\n
"
);
sst_fw_unload
(
byt
->
fw
);
...
...
sound/soc/intel/sst-baytrail-ipc.h
View file @
1aaff096
...
...
@@ -66,7 +66,6 @@ int sst_byt_get_dsp_position(struct sst_byt *byt,
int
sst_byt_dsp_init
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
);
void
sst_byt_dsp_free
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
);
struct
sst_dsp
*
sst_byt_get_dsp
(
struct
sst_byt
*
byt
);
int
sst_byt_dsp_suspend_noirq
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
);
int
sst_byt_dsp_suspend_late
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
);
int
sst_byt_dsp_boot
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
);
int
sst_byt_dsp_wait_for_ready
(
struct
device
*
dev
,
struct
sst_pdata
*
pdata
);
...
...
sound/soc/intel/sst-baytrail-pcm.c
View file @
1aaff096
...
...
@@ -59,6 +59,9 @@ struct sst_byt_priv_data {
/* DAI data */
struct
sst_byt_pcm_data
pcm
[
BYT_PCM_COUNT
];
/* flag indicating is stream context restore needed after suspend */
bool
restore_stream
;
};
/* this may get called several times by oss emulation */
...
...
@@ -184,7 +187,10 @@ static int sst_byt_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
sst_byt_stream_start
(
byt
,
pcm_data
->
stream
,
0
);
break
;
case
SNDRV_PCM_TRIGGER_RESUME
:
schedule_work
(
&
pcm_data
->
work
);
if
(
pdata
->
restore_stream
==
true
)
schedule_work
(
&
pcm_data
->
work
);
else
sst_byt_stream_resume
(
byt
,
pcm_data
->
stream
);
break
;
case
SNDRV_PCM_TRIGGER_PAUSE_RELEASE
:
sst_byt_stream_resume
(
byt
,
pcm_data
->
stream
);
...
...
@@ -193,6 +199,7 @@ static int sst_byt_pcm_trigger(struct snd_pcm_substream *substream, int cmd)
sst_byt_stream_stop
(
byt
,
pcm_data
->
stream
);
break
;
case
SNDRV_PCM_TRIGGER_SUSPEND
:
pdata
->
restore_stream
=
false
;
case
SNDRV_PCM_TRIGGER_PAUSE_PUSH
:
sst_byt_stream_pause
(
byt
,
pcm_data
->
stream
);
break
;
...
...
@@ -404,26 +411,10 @@ static const struct snd_soc_component_driver byt_dai_component = {
};
#ifdef CONFIG_PM
static
int
sst_byt_pcm_dev_suspend_noirq
(
struct
device
*
dev
)
{
struct
sst_pdata
*
sst_pdata
=
dev_get_platdata
(
dev
);
int
ret
;
dev_dbg
(
dev
,
"suspending noirq
\n
"
);
/* at this point all streams will be stopped and context saved */
ret
=
sst_byt_dsp_suspend_noirq
(
dev
,
sst_pdata
);
if
(
ret
<
0
)
{
dev_err
(
dev
,
"failed to suspend %d
\n
"
,
ret
);
return
ret
;
}
return
ret
;
}
static
int
sst_byt_pcm_dev_suspend_late
(
struct
device
*
dev
)
{
struct
sst_pdata
*
sst_pdata
=
dev_get_platdata
(
dev
);
struct
sst_byt_priv_data
*
priv_data
=
dev_get_drvdata
(
dev
);
int
ret
;
dev_dbg
(
dev
,
"suspending late
\n
"
);
...
...
@@ -434,34 +425,30 @@ static int sst_byt_pcm_dev_suspend_late(struct device *dev)
return
ret
;
}
priv_data
->
restore_stream
=
true
;
return
ret
;
}
static
int
sst_byt_pcm_dev_resume_early
(
struct
device
*
dev
)
{
struct
sst_pdata
*
sst_pdata
=
dev_get_platdata
(
dev
);
int
ret
;
dev_dbg
(
dev
,
"resume early
\n
"
);
/* load fw and boot DSP */
return
sst_byt_dsp_boot
(
dev
,
sst_pdata
);
}
static
int
sst_byt_pcm_dev_resume
(
struct
device
*
dev
)
{
struct
sst_pdata
*
sst_pdata
=
dev_get_platdata
(
dev
);
dev_dbg
(
dev
,
"resume
\n
"
);
ret
=
sst_byt_dsp_boot
(
dev
,
sst_pdata
);
if
(
ret
)
return
ret
;
/* wait for FW to finish booting */
return
sst_byt_dsp_wait_for_ready
(
dev
,
sst_pdata
);
}
static
const
struct
dev_pm_ops
sst_byt_pm_ops
=
{
.
suspend_noirq
=
sst_byt_pcm_dev_suspend_noirq
,
.
suspend_late
=
sst_byt_pcm_dev_suspend_late
,
.
resume_early
=
sst_byt_pcm_dev_resume_early
,
.
resume
=
sst_byt_pcm_dev_resume
,
};
#define SST_BYT_PM_OPS (&sst_byt_pm_ops)
...
...
sound/soc/pxa/pxa-ssp.c
View file @
1aaff096
...
...
@@ -765,9 +765,7 @@ static int pxa_ssp_remove(struct snd_soc_dai *dai)
SNDRV_PCM_RATE_48000 | SNDRV_PCM_RATE_64000 | \
SNDRV_PCM_RATE_88200 | SNDRV_PCM_RATE_96000)
#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE |\
SNDRV_PCM_FMTBIT_S24_LE | \
SNDRV_PCM_FMTBIT_S32_LE)
#define PXA_SSP_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | SNDRV_PCM_FMTBIT_S32_LE)
static
const
struct
snd_soc_dai_ops
pxa_ssp_dai_ops
=
{
.
startup
=
pxa_ssp_startup
,
...
...
sound/soc/soc-dapm.c
View file @
1aaff096
...
...
@@ -2860,12 +2860,14 @@ int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
struct
snd_soc_dapm_context
*
dapm
=
snd_soc_dapm_kcontrol_dapm
(
kcontrol
);
struct
soc_enum
*
e
=
(
struct
soc_enum
*
)
kcontrol
->
private_value
;
unsigned
int
reg_val
,
val
;
int
ret
=
0
;
if
(
e
->
reg
!=
SND_SOC_NOPM
)
ret
=
soc_dapm_read
(
dapm
,
e
->
reg
,
&
reg_val
);
else
if
(
e
->
reg
!=
SND_SOC_NOPM
)
{
int
ret
=
soc_dapm_read
(
dapm
,
e
->
reg
,
&
reg_val
);
if
(
ret
)
return
ret
;
}
else
{
reg_val
=
dapm_kcontrol_get_value
(
kcontrol
);
}
val
=
(
reg_val
>>
e
->
shift_l
)
&
e
->
mask
;
ucontrol
->
value
.
enumerated
.
item
[
0
]
=
snd_soc_enum_val_to_item
(
e
,
val
);
...
...
@@ -2875,7 +2877,7 @@ int snd_soc_dapm_get_enum_double(struct snd_kcontrol *kcontrol,
ucontrol
->
value
.
enumerated
.
item
[
1
]
=
val
;
}
return
ret
;
return
0
;
}
EXPORT_SYMBOL_GPL
(
snd_soc_dapm_get_enum_double
);
...
...
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