Merge remote-tracking branches 'asoc/fix/ak4613', 'asoc/fix/arizona', 'asoc/fix/cx20442', 'asoc/fix/davinci', 'asoc/fix/fsl-ssi' and 'asoc/fix/hdmi' into asoc-linus

This commit is contained in:
Mark Brown 2016-07-01 18:05:31 +02:00
8 changed files with 68 additions and 17 deletions

View File

@ -483,9 +483,10 @@ config SND_SOC_DMIC
tristate tristate
config SND_SOC_HDMI_CODEC config SND_SOC_HDMI_CODEC
tristate tristate
select SND_PCM_ELD select SND_PCM_ELD
select SND_PCM_IEC958 select SND_PCM_IEC958
select HDMI
config SND_SOC_ES8328 config SND_SOC_ES8328
tristate "Everest Semi ES8328 CODEC" tristate "Everest Semi ES8328 CODEC"

View File

@ -146,6 +146,7 @@ static const struct regmap_config ak4613_regmap_cfg = {
.max_register = 0x16, .max_register = 0x16,
.reg_defaults = ak4613_reg, .reg_defaults = ak4613_reg,
.num_reg_defaults = ARRAY_SIZE(ak4613_reg), .num_reg_defaults = ARRAY_SIZE(ak4613_reg),
.cache_type = REGCACHE_RBTREE,
}; };
static const struct of_device_id ak4613_of_match[] = { static const struct of_device_id ak4613_of_match[] = {
@ -530,7 +531,6 @@ static int ak4613_i2c_remove(struct i2c_client *client)
static struct i2c_driver ak4613_i2c_driver = { static struct i2c_driver ak4613_i2c_driver = {
.driver = { .driver = {
.name = "ak4613-codec", .name = "ak4613-codec",
.owner = THIS_MODULE,
.of_match_table = ak4613_of_match, .of_match_table = ak4613_of_match,
}, },
.probe = ak4613_i2c_probe, .probe = ak4613_i2c_probe,

View File

@ -226,6 +226,7 @@ static int v253_open(struct tty_struct *tty)
if (!tty->disc_data) if (!tty->disc_data)
return -ENODEV; return -ENODEV;
tty->receive_room = 16;
if (tty->ops->write(tty, v253_init, len) != len) { if (tty->ops->write(tty, v253_init, len) != len) {
ret = -EIO; ret = -EIO;
goto err; goto err;

View File

@ -1872,7 +1872,7 @@ static struct snd_soc_dai_driver wm5102_dai[] = {
.capture = { .capture = {
.stream_name = "Audio Trace CPU", .stream_name = "Audio Trace CPU",
.channels_min = 1, .channels_min = 1,
.channels_max = 6, .channels_max = 4,
.rates = WM5102_RATES, .rates = WM5102_RATES,
.formats = WM5102_FORMATS, .formats = WM5102_FORMATS,
}, },

View File

@ -1723,6 +1723,7 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
{ "OUT2L", NULL, "SYSCLK" }, { "OUT2L", NULL, "SYSCLK" },
{ "OUT2R", NULL, "SYSCLK" }, { "OUT2R", NULL, "SYSCLK" },
{ "OUT3L", NULL, "SYSCLK" }, { "OUT3L", NULL, "SYSCLK" },
{ "OUT3R", NULL, "SYSCLK" },
{ "OUT4L", NULL, "SYSCLK" }, { "OUT4L", NULL, "SYSCLK" },
{ "OUT4R", NULL, "SYSCLK" }, { "OUT4R", NULL, "SYSCLK" },
{ "OUT5L", NULL, "SYSCLK" }, { "OUT5L", NULL, "SYSCLK" },

View File

@ -1513,8 +1513,9 @@ static struct davinci_mcasp_pdata am33xx_mcasp_pdata = {
}; };
static struct davinci_mcasp_pdata dra7_mcasp_pdata = { static struct davinci_mcasp_pdata dra7_mcasp_pdata = {
.tx_dma_offset = 0x200, /* The CFG port offset will be calculated if it is needed */
.rx_dma_offset = 0x284, .tx_dma_offset = 0,
.rx_dma_offset = 0,
.version = MCASP_VERSION_4, .version = MCASP_VERSION_4,
}; };
@ -1734,6 +1735,52 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp)
return PCM_EDMA; return PCM_EDMA;
} }
static u32 davinci_mcasp_txdma_offset(struct davinci_mcasp_pdata *pdata)
{
int i;
u32 offset = 0;
if (pdata->version != MCASP_VERSION_4)
return pdata->tx_dma_offset;
for (i = 0; i < pdata->num_serializer; i++) {
if (pdata->serial_dir[i] == TX_MODE) {
if (!offset) {
offset = DAVINCI_MCASP_TXBUF_REG(i);
} else {
pr_err("%s: Only one serializer allowed!\n",
__func__);
break;
}
}
}
return offset;
}
static u32 davinci_mcasp_rxdma_offset(struct davinci_mcasp_pdata *pdata)
{
int i;
u32 offset = 0;
if (pdata->version != MCASP_VERSION_4)
return pdata->rx_dma_offset;
for (i = 0; i < pdata->num_serializer; i++) {
if (pdata->serial_dir[i] == RX_MODE) {
if (!offset) {
offset = DAVINCI_MCASP_RXBUF_REG(i);
} else {
pr_err("%s: Only one serializer allowed!\n",
__func__);
break;
}
}
}
return offset;
}
static int davinci_mcasp_probe(struct platform_device *pdev) static int davinci_mcasp_probe(struct platform_device *pdev)
{ {
struct snd_dmaengine_dai_dma_data *dma_data; struct snd_dmaengine_dai_dma_data *dma_data;
@ -1862,7 +1909,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
if (dat) if (dat)
dma_data->addr = dat->start; dma_data->addr = dat->start;
else else
dma_data->addr = mem->start + pdata->tx_dma_offset; dma_data->addr = mem->start + davinci_mcasp_txdma_offset(pdata);
dma = &mcasp->dma_request[SNDRV_PCM_STREAM_PLAYBACK]; dma = &mcasp->dma_request[SNDRV_PCM_STREAM_PLAYBACK];
res = platform_get_resource(pdev, IORESOURCE_DMA, 0); res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
@ -1883,7 +1930,8 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
if (dat) if (dat)
dma_data->addr = dat->start; dma_data->addr = dat->start;
else else
dma_data->addr = mem->start + pdata->rx_dma_offset; dma_data->addr =
mem->start + davinci_mcasp_rxdma_offset(pdata);
dma = &mcasp->dma_request[SNDRV_PCM_STREAM_CAPTURE]; dma = &mcasp->dma_request[SNDRV_PCM_STREAM_CAPTURE];
res = platform_get_resource(pdev, IORESOURCE_DMA, 1); res = platform_get_resource(pdev, IORESOURCE_DMA, 1);

View File

@ -85,9 +85,9 @@
(n << 2)) (n << 2))
/* Transmit Buffer for Serializer n */ /* Transmit Buffer for Serializer n */
#define DAVINCI_MCASP_TXBUF_REG 0x200 #define DAVINCI_MCASP_TXBUF_REG(n) (0x200 + (n << 2))
/* Receive Buffer for Serializer n */ /* Receive Buffer for Serializer n */
#define DAVINCI_MCASP_RXBUF_REG 0x280 #define DAVINCI_MCASP_RXBUF_REG(n) (0x280 + (n << 2))
/* McASP FIFO Registers */ /* McASP FIFO Registers */
#define DAVINCI_MCASP_V2_AFIFO_BASE (0x1010) #define DAVINCI_MCASP_V2_AFIFO_BASE (0x1010)

View File

@ -952,16 +952,16 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
ssi_private->i2s_mode = CCSR_SSI_SCR_NET; ssi_private->i2s_mode = CCSR_SSI_SCR_NET;
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) { switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
case SND_SOC_DAIFMT_I2S: case SND_SOC_DAIFMT_I2S:
regmap_update_bits(regs, CCSR_SSI_STCCR,
CCSR_SSI_SxCCR_DC_MASK,
CCSR_SSI_SxCCR_DC(2));
regmap_update_bits(regs, CCSR_SSI_SRCCR,
CCSR_SSI_SxCCR_DC_MASK,
CCSR_SSI_SxCCR_DC(2));
switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) { switch (fmt & SND_SOC_DAIFMT_MASTER_MASK) {
case SND_SOC_DAIFMT_CBM_CFS: case SND_SOC_DAIFMT_CBM_CFS:
case SND_SOC_DAIFMT_CBS_CFS: case SND_SOC_DAIFMT_CBS_CFS:
ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_MASTER; ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_MASTER;
regmap_update_bits(regs, CCSR_SSI_STCCR,
CCSR_SSI_SxCCR_DC_MASK,
CCSR_SSI_SxCCR_DC(2));
regmap_update_bits(regs, CCSR_SSI_SRCCR,
CCSR_SSI_SxCCR_DC_MASK,
CCSR_SSI_SxCCR_DC(2));
break; break;
case SND_SOC_DAIFMT_CBM_CFM: case SND_SOC_DAIFMT_CBM_CFM:
ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE; ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE;