Merge remote-tracking branches 'asoc/fix/davinci', 'asoc/fix/doc', 'asoc/fix/fsl-card', 'asoc/fix/fsl-ssi', 'asoc/fix/intel' and 'asoc/fix/maintainers' into asoc-linus
This commit is contained in:
commit
312e0bce7f
@ -11239,7 +11239,6 @@ VOLTAGE AND CURRENT REGULATOR FRAMEWORK
|
||||
M: Liam Girdwood <lgirdwood@gmail.com>
|
||||
M: Mark Brown <broonie@kernel.org>
|
||||
L: linux-kernel@vger.kernel.org
|
||||
W: http://opensource.wolfsonmicro.com/node/15
|
||||
W: http://www.slimlogic.co.uk/?p=48
|
||||
T: git git://git.kernel.org/pub/scm/linux/kernel/git/broonie/regulator.git
|
||||
S: Supported
|
||||
@ -11368,17 +11367,15 @@ WM97XX TOUCHSCREEN DRIVERS
|
||||
M: Mark Brown <broonie@kernel.org>
|
||||
M: Liam Girdwood <lrg@slimlogic.co.uk>
|
||||
L: linux-input@vger.kernel.org
|
||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-touch
|
||||
W: http://opensource.wolfsonmicro.com/node/7
|
||||
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
||||
S: Supported
|
||||
F: drivers/input/touchscreen/*wm97*
|
||||
F: include/linux/wm97xx.h
|
||||
|
||||
WOLFSON MICROELECTRONICS DRIVERS
|
||||
L: patches@opensource.wolfsonmicro.com
|
||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-asoc
|
||||
T: git git://opensource.wolfsonmicro.com/linux-2.6-audioplus
|
||||
W: http://opensource.wolfsonmicro.com/content/linux-drivers-wolfson-devices
|
||||
T: git https://github.com/CirrusLogic/linux-drivers.git
|
||||
W: https://github.com/CirrusLogic/linux-drivers/wiki
|
||||
S: Supported
|
||||
F: Documentation/hwmon/wm83??
|
||||
F: arch/arm/mach-s3c64xx/mach-crag6410*
|
||||
|
@ -663,7 +663,7 @@ static int mcasp_common_hw_param(struct davinci_mcasp *mcasp, int stream,
|
||||
u8 rx_ser = 0;
|
||||
u8 slots = mcasp->tdm_slots;
|
||||
u8 max_active_serializers = (channels + slots - 1) / slots;
|
||||
int active_serializers, numevt, n;
|
||||
int active_serializers, numevt;
|
||||
u32 reg;
|
||||
/* Default configuration */
|
||||
if (mcasp->version < MCASP_VERSION_3)
|
||||
@ -745,9 +745,8 @@ static int mcasp_common_hw_param(struct davinci_mcasp *mcasp, int stream,
|
||||
* The number of words for numevt need to be in steps of active
|
||||
* serializers.
|
||||
*/
|
||||
n = numevt % active_serializers;
|
||||
if (n)
|
||||
numevt += (active_serializers - n);
|
||||
numevt = (numevt / active_serializers) * active_serializers;
|
||||
|
||||
while (period_words % numevt && numevt > 0)
|
||||
numevt -= active_serializers;
|
||||
if (numevt <= 0)
|
||||
@ -1299,6 +1298,7 @@ static struct snd_soc_dai_driver davinci_mcasp_dai[] = {
|
||||
.ops = &davinci_mcasp_dai_ops,
|
||||
|
||||
.symmetric_samplebits = 1,
|
||||
.symmetric_rates = 1,
|
||||
},
|
||||
{
|
||||
.name = "davinci-mcasp.1",
|
||||
@ -1685,7 +1685,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
|
||||
|
||||
irq = platform_get_irq_byname(pdev, "common");
|
||||
if (irq >= 0) {
|
||||
irq_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_common\n",
|
||||
irq_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_common",
|
||||
dev_name(&pdev->dev));
|
||||
ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
|
||||
davinci_mcasp_common_irq_handler,
|
||||
@ -1702,7 +1702,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
|
||||
|
||||
irq = platform_get_irq_byname(pdev, "rx");
|
||||
if (irq >= 0) {
|
||||
irq_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_rx\n",
|
||||
irq_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_rx",
|
||||
dev_name(&pdev->dev));
|
||||
ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
|
||||
davinci_mcasp_rx_irq_handler,
|
||||
@ -1717,7 +1717,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
|
||||
|
||||
irq = platform_get_irq_byname(pdev, "tx");
|
||||
if (irq >= 0) {
|
||||
irq_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_tx\n",
|
||||
irq_name = devm_kasprintf(&pdev->dev, GFP_KERNEL, "%s_tx",
|
||||
dev_name(&pdev->dev));
|
||||
ret = devm_request_threaded_irq(&pdev->dev, irq, NULL,
|
||||
davinci_mcasp_tx_irq_handler,
|
||||
|
@ -488,7 +488,8 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)
|
||||
priv->dai_fmt |= SND_SOC_DAIFMT_CBM_CFM;
|
||||
} else {
|
||||
dev_err(&pdev->dev, "unknown Device Tree compatible\n");
|
||||
return -EINVAL;
|
||||
ret = -EINVAL;
|
||||
goto asrc_fail;
|
||||
}
|
||||
|
||||
/* Common settings for corresponding Freescale CPU DAI driver */
|
||||
|
@ -249,7 +249,8 @@ MODULE_DEVICE_TABLE(of, fsl_ssi_ids);
|
||||
|
||||
static bool fsl_ssi_is_ac97(struct fsl_ssi_private *ssi_private)
|
||||
{
|
||||
return !!(ssi_private->dai_fmt & SND_SOC_DAIFMT_AC97);
|
||||
return (ssi_private->dai_fmt & SND_SOC_DAIFMT_FORMAT_MASK) ==
|
||||
SND_SOC_DAIFMT_AC97;
|
||||
}
|
||||
|
||||
static bool fsl_ssi_is_i2s_master(struct fsl_ssi_private *ssi_private)
|
||||
@ -947,7 +948,7 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
|
||||
CCSR_SSI_SCR_TCH_EN);
|
||||
}
|
||||
|
||||
if (fmt & SND_SOC_DAIFMT_AC97)
|
||||
if ((fmt & SND_SOC_DAIFMT_FORMAT_MASK) == SND_SOC_DAIFMT_AC97)
|
||||
fsl_ssi_setup_ac97(ssi_private);
|
||||
|
||||
return 0;
|
||||
|
@ -302,6 +302,10 @@ struct sst_hsw {
|
||||
struct sst_hsw_ipc_dx_reply dx;
|
||||
void *dx_context;
|
||||
dma_addr_t dx_context_paddr;
|
||||
enum sst_hsw_device_id dx_dev;
|
||||
enum sst_hsw_device_mclk dx_mclk;
|
||||
enum sst_hsw_device_mode dx_mode;
|
||||
u32 dx_clock_divider;
|
||||
|
||||
/* boot */
|
||||
wait_queue_head_t boot_wait;
|
||||
@ -1400,10 +1404,10 @@ int sst_hsw_device_set_config(struct sst_hsw *hsw,
|
||||
|
||||
trace_ipc_request("set device config", dev);
|
||||
|
||||
config.ssp_interface = dev;
|
||||
config.clock_frequency = mclk;
|
||||
config.mode = mode;
|
||||
config.clock_divider = clock_divider;
|
||||
hsw->dx_dev = config.ssp_interface = dev;
|
||||
hsw->dx_mclk = config.clock_frequency = mclk;
|
||||
hsw->dx_mode = config.mode = mode;
|
||||
hsw->dx_clock_divider = config.clock_divider = clock_divider;
|
||||
if (mode == SST_HSW_DEVICE_TDM_CLOCK_MASTER)
|
||||
config.channels = 4;
|
||||
else
|
||||
@ -1704,10 +1708,10 @@ int sst_hsw_dsp_runtime_resume(struct sst_hsw *hsw)
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
/* Set ADSP SSP port settings */
|
||||
ret = sst_hsw_device_set_config(hsw, SST_HSW_DEVICE_SSP_0,
|
||||
SST_HSW_DEVICE_MCLK_FREQ_24_MHZ,
|
||||
SST_HSW_DEVICE_CLOCK_MASTER, 9);
|
||||
/* Set ADSP SSP port settings - sadly the FW does not store SSP port
|
||||
settings as part of the PM context. */
|
||||
ret = sst_hsw_device_set_config(hsw, hsw->dx_dev, hsw->dx_mclk,
|
||||
hsw->dx_mode, hsw->dx_clock_divider);
|
||||
if (ret < 0)
|
||||
dev_err(dev, "error: SSP re-initialization failed\n");
|
||||
|
||||
|
@ -101,6 +101,15 @@ static struct snd_soc_codec_driver dummy_codec;
|
||||
SNDRV_PCM_FMTBIT_S32_LE | \
|
||||
SNDRV_PCM_FMTBIT_U32_LE | \
|
||||
SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE)
|
||||
/*
|
||||
* The dummy CODEC is only meant to be used in situations where there is no
|
||||
* actual hardware.
|
||||
*
|
||||
* If there is actual hardware even if it does not have a control bus
|
||||
* the hardware will still have constraints like supported samplerates, etc.
|
||||
* which should be modelled. And the data flow graph also should be modelled
|
||||
* using DAPM.
|
||||
*/
|
||||
static struct snd_soc_dai_driver dummy_dai = {
|
||||
.name = "snd-soc-dummy-dai",
|
||||
.playback = {
|
||||
|
Loading…
x
Reference in New Issue
Block a user