sound fixes for 4.7-rc7
Here are a collection of small fixes: at this time, we've got a slightly high amount, but all small and trivial fixes, and nothing scary can be seen there. -----BEGIN PGP SIGNATURE----- Version: GnuPG v2 iQIcBAABCAAGBQJXe+McAAoJEGwxgFQ9KSmkKx8QALm5AuHci2vtfGo4omz1irxw CEGvAmSeP8PbfvyBo0duGByTQqUgZaVp50yb9WZaeHskzJukv2VBHeJwE/TgsNI4 tsJUFF0sp9uYrn6Y/DLBFFeS4qWk4EWr5tusWlCZIzlRxweqIh1WukVU79WgoT9O DYdz3O9Sf/Wqkp9el+fjvdl3CuiZMNdp+8AOffx1sF3bUBOxOAMbnG1holYp9aqR MbGMpsaKBzKrblhjlKkEHKPK2+ZDM5Fn6x17fQ4Zqy3eZA060m75nE+subVoKrVW MvG+WZk01ploDYS1/qflv/RxQFUc7GSrBVnGFkr+KGyTSxuGLqllQl34pcBTJd8M xW8sVCTmtVN9eikwqjZbf7anwlfhcqiyBaCqp9muJTJpgROGxPOmxlDvKiHpjRT4 4PJXBnveWFSG+sgj51d2oPrPf3oXO/8znpamx5caqwUzy3pynlpD1TjX+L6kO/YW +bUnOM4TsNmpZ2RExArFs09rTmqxFe/npW/rcEdKryTlDNiJrxfPMagAViIl1Ejd l1FONwGbFpWAVyvpaTskDp/nOsURpVbtVsEieOJThUPZVbYq0SQOjhc7V7YkBCLn Oa+/oItJ4vPP+C3upi4rYyX6NY3t0si9XnokSzUMF69XpcdHmUkXBnxXI/z3XAr5 pC86QGz7UlQrqCsvgpZW =8ER4 -----END PGP SIGNATURE----- Merge tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound Pull sound fixes from Takashi Iwai: "Here are a collection of small fixes: at this time, we've got a slightly high amount, but all small and trivial fixes, and nothing scary can be seen there" * tag 'sound-4.7-rc7' of git://git.kernel.org/pub/scm/linux/kernel/git/tiwai/sound: (21 commits) ALSA: hda/realtek: Add Lenovo L460 to docking unit fixup ALSA: timer: Fix negative queue usage by racy accesses ASoC: rt5645: fix reg-2f default value. ASoC: fsl_ssi: Fix number of words per frame for I2S-slave mode ALSA: au88x0: Fix calculation in vortex_wtdma_bufshift() ALSA: hda - Add PCI ID for Kabylake-H ALSA: echoaudio: Fix memory allocation ASoC: Intel: atom: fix missing breaks that would cause the wrong operation to execute ALSA: hda - fix read before array start ASoC: cx20442: set tty->receiver_room in v253_open ASoC: ak4613: Enable cache usage to fix crashes on resume ASoC: wm8940: Enable cache usage to fix crashes on resume ASoC: Intel: Skylake: Initialize module list for Broxton ASoC: wm5102: Correct supported channels on trace compressed DAI ASoC: wm5110: Add missing route from OUT3R to SYSCLK ASoC: rt5670: fix HP Playback Volume control ASoC: hdmi-codec: select CONFIG_HDMI ASoC: davinci-mcasp: Fix dra7 DMA offset when using CFG port ASoC: hdac_hdmi: Fix potential NULL dereference ASoC: ak4613: Remove owner assignment from platform_driver ...
This commit is contained in:
commit
4cdbbbd11f
@ -1955,6 +1955,7 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
|
||||
|
||||
qhead = tu->qhead++;
|
||||
tu->qhead %= tu->queue_size;
|
||||
tu->qused--;
|
||||
spin_unlock_irq(&tu->qlock);
|
||||
|
||||
if (tu->tread) {
|
||||
@ -1968,7 +1969,6 @@ static ssize_t snd_timer_user_read(struct file *file, char __user *buffer,
|
||||
}
|
||||
|
||||
spin_lock_irq(&tu->qlock);
|
||||
tu->qused--;
|
||||
if (err < 0)
|
||||
goto _error;
|
||||
result += unit;
|
||||
|
@ -1444,9 +1444,8 @@ static int vortex_wtdma_bufshift(vortex_t * vortex, int wtdma)
|
||||
int page, p, pp, delta, i;
|
||||
|
||||
page =
|
||||
(hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2)) &
|
||||
WT_SUBBUF_MASK)
|
||||
>> WT_SUBBUF_SHIFT;
|
||||
(hwread(vortex->mmio, VORTEX_WTDMA_STAT + (wtdma << 2))
|
||||
>> WT_SUBBUF_SHIFT) & WT_SUBBUF_MASK;
|
||||
if (dma->nr_periods >= 4)
|
||||
delta = (page - dma->period_real) & 3;
|
||||
else {
|
||||
|
@ -2200,11 +2200,11 @@ static int snd_echo_resume(struct device *dev)
|
||||
u32 pipe_alloc_mask;
|
||||
int err;
|
||||
|
||||
commpage_bak = kmalloc(sizeof(struct echoaudio), GFP_KERNEL);
|
||||
commpage_bak = kmalloc(sizeof(*commpage), GFP_KERNEL);
|
||||
if (commpage_bak == NULL)
|
||||
return -ENOMEM;
|
||||
commpage = chip->comm_page;
|
||||
memcpy(commpage_bak, commpage, sizeof(struct comm_page));
|
||||
memcpy(commpage_bak, commpage, sizeof(*commpage));
|
||||
|
||||
err = init_hw(chip, chip->pci->device, chip->pci->subsystem_device);
|
||||
if (err < 0) {
|
||||
|
@ -3977,6 +3977,8 @@ static hda_nid_t set_path_power(struct hda_codec *codec, hda_nid_t nid,
|
||||
|
||||
for (n = 0; n < spec->paths.used; n++) {
|
||||
path = snd_array_elem(&spec->paths, n);
|
||||
if (!path->depth)
|
||||
continue;
|
||||
if (path->path[0] == nid ||
|
||||
path->path[path->depth - 1] == nid) {
|
||||
bool pin_old = path->pin_enabled;
|
||||
|
@ -367,9 +367,10 @@ enum {
|
||||
#define IS_SKL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d70)
|
||||
#define IS_KBL(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa171)
|
||||
#define IS_KBL_LP(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x9d71)
|
||||
#define IS_KBL_H(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0xa2f0)
|
||||
#define IS_BXT(pci) ((pci)->vendor == 0x8086 && (pci)->device == 0x5a98)
|
||||
#define IS_SKL_PLUS(pci) (IS_SKL(pci) || IS_SKL_LP(pci) || IS_BXT(pci)) || \
|
||||
IS_KBL(pci) || IS_KBL_LP(pci)
|
||||
IS_KBL(pci) || IS_KBL_LP(pci) || IS_KBL_H(pci)
|
||||
|
||||
static char *driver_short_names[] = {
|
||||
[AZX_DRIVER_ICH] = "HDA Intel",
|
||||
@ -2190,6 +2191,9 @@ static const struct pci_device_id azx_ids[] = {
|
||||
/* Kabylake-LP */
|
||||
{ PCI_DEVICE(0x8086, 0x9d71),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE },
|
||||
/* Kabylake-H */
|
||||
{ PCI_DEVICE(0x8086, 0xa2f0),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_SKYLAKE },
|
||||
/* Broxton-P(Apollolake) */
|
||||
{ PCI_DEVICE(0x8086, 0x5a98),
|
||||
.driver_data = AZX_DRIVER_PCH | AZX_DCAPS_INTEL_BROXTON },
|
||||
|
@ -5651,6 +5651,7 @@ static const struct snd_pci_quirk alc269_fixup_tbl[] = {
|
||||
SND_PCI_QUIRK(0x17aa, 0x504a, "ThinkPad X260", ALC292_FIXUP_TPT440_DOCK),
|
||||
SND_PCI_QUIRK(0x17aa, 0x504b, "Thinkpad", ALC293_FIXUP_LENOVO_SPK_NOISE),
|
||||
SND_PCI_QUIRK(0x17aa, 0x5050, "Thinkpad T560p", ALC292_FIXUP_TPT460),
|
||||
SND_PCI_QUIRK(0x17aa, 0x5051, "Thinkpad L460", ALC292_FIXUP_TPT460),
|
||||
SND_PCI_QUIRK(0x17aa, 0x5053, "Thinkpad T460", ALC292_FIXUP_TPT460),
|
||||
SND_PCI_QUIRK(0x17aa, 0x5109, "Thinkpad", ALC269_FIXUP_LIMIT_INT_MIC_BOOST),
|
||||
SND_PCI_QUIRK(0x17aa, 0x3bf8, "Quanta FL1", ALC269_FIXUP_PCM_44K),
|
||||
|
@ -483,9 +483,10 @@ config SND_SOC_DMIC
|
||||
tristate
|
||||
|
||||
config SND_SOC_HDMI_CODEC
|
||||
tristate
|
||||
select SND_PCM_ELD
|
||||
select SND_PCM_IEC958
|
||||
tristate
|
||||
select SND_PCM_ELD
|
||||
select SND_PCM_IEC958
|
||||
select HDMI
|
||||
|
||||
config SND_SOC_ES8328
|
||||
tristate "Everest Semi ES8328 CODEC"
|
||||
|
@ -146,6 +146,7 @@ static const struct regmap_config ak4613_regmap_cfg = {
|
||||
.max_register = 0x16,
|
||||
.reg_defaults = ak4613_reg,
|
||||
.num_reg_defaults = ARRAY_SIZE(ak4613_reg),
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
};
|
||||
|
||||
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 = {
|
||||
.driver = {
|
||||
.name = "ak4613-codec",
|
||||
.owner = THIS_MODULE,
|
||||
.of_match_table = ak4613_of_match,
|
||||
},
|
||||
.probe = ak4613_i2c_probe,
|
||||
|
@ -226,6 +226,7 @@ static int v253_open(struct tty_struct *tty)
|
||||
if (!tty->disc_data)
|
||||
return -ENODEV;
|
||||
|
||||
tty->receive_room = 16;
|
||||
if (tty->ops->write(tty, v253_init, len) != len) {
|
||||
ret = -EIO;
|
||||
goto err;
|
||||
|
@ -1474,6 +1474,11 @@ static int hdmi_codec_probe(struct snd_soc_codec *codec)
|
||||
* exit, we call pm_runtime_suspend() so that will do for us
|
||||
*/
|
||||
hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev));
|
||||
if (!hlink) {
|
||||
dev_err(&edev->hdac.dev, "hdac link not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
snd_hdac_ext_bus_link_get(edev->ebus, hlink);
|
||||
|
||||
ret = create_fill_widget_route_map(dapm);
|
||||
@ -1634,6 +1639,11 @@ static int hdac_hdmi_dev_probe(struct hdac_ext_device *edev)
|
||||
|
||||
/* hold the ref while we probe */
|
||||
hlink = snd_hdac_ext_bus_get_link(edev->ebus, dev_name(&edev->hdac.dev));
|
||||
if (!hlink) {
|
||||
dev_err(&edev->hdac.dev, "hdac link not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
snd_hdac_ext_bus_link_get(edev->ebus, hlink);
|
||||
|
||||
hdmi_priv = devm_kzalloc(&codec->dev, sizeof(*hdmi_priv), GFP_KERNEL);
|
||||
@ -1744,6 +1754,11 @@ static int hdac_hdmi_runtime_suspend(struct device *dev)
|
||||
}
|
||||
|
||||
hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev));
|
||||
if (!hlink) {
|
||||
dev_err(dev, "hdac link not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
snd_hdac_ext_bus_link_put(ebus, hlink);
|
||||
|
||||
return 0;
|
||||
@ -1765,6 +1780,11 @@ static int hdac_hdmi_runtime_resume(struct device *dev)
|
||||
return 0;
|
||||
|
||||
hlink = snd_hdac_ext_bus_get_link(ebus, dev_name(dev));
|
||||
if (!hlink) {
|
||||
dev_err(dev, "hdac link not found\n");
|
||||
return -EIO;
|
||||
}
|
||||
|
||||
snd_hdac_ext_bus_link_get(ebus, hlink);
|
||||
|
||||
err = snd_hdac_display_power(bus, true);
|
||||
|
@ -253,7 +253,7 @@ static const struct reg_default rt5650_reg[] = {
|
||||
{ 0x2b, 0x5454 },
|
||||
{ 0x2c, 0xaaa0 },
|
||||
{ 0x2d, 0x0000 },
|
||||
{ 0x2f, 0x1002 },
|
||||
{ 0x2f, 0x5002 },
|
||||
{ 0x31, 0x5000 },
|
||||
{ 0x32, 0x0000 },
|
||||
{ 0x33, 0x0000 },
|
||||
|
@ -619,7 +619,7 @@ static const struct snd_kcontrol_new rt5670_snd_controls[] = {
|
||||
RT5670_L_MUTE_SFT, RT5670_R_MUTE_SFT, 1, 1),
|
||||
SOC_DOUBLE_TLV("HP Playback Volume", RT5670_HP_VOL,
|
||||
RT5670_L_VOL_SFT, RT5670_R_VOL_SFT,
|
||||
39, 0, out_vol_tlv),
|
||||
39, 1, out_vol_tlv),
|
||||
/* OUTPUT Control */
|
||||
SOC_DOUBLE("OUT Channel Switch", RT5670_LOUT1,
|
||||
RT5670_VOL_L_SFT, RT5670_VOL_R_SFT, 1, 1),
|
||||
|
@ -1872,7 +1872,7 @@ static struct snd_soc_dai_driver wm5102_dai[] = {
|
||||
.capture = {
|
||||
.stream_name = "Audio Trace CPU",
|
||||
.channels_min = 1,
|
||||
.channels_max = 6,
|
||||
.channels_max = 4,
|
||||
.rates = WM5102_RATES,
|
||||
.formats = WM5102_FORMATS,
|
||||
},
|
||||
|
@ -1723,6 +1723,7 @@ static const struct snd_soc_dapm_route wm5110_dapm_routes[] = {
|
||||
{ "OUT2L", NULL, "SYSCLK" },
|
||||
{ "OUT2R", NULL, "SYSCLK" },
|
||||
{ "OUT3L", NULL, "SYSCLK" },
|
||||
{ "OUT3R", NULL, "SYSCLK" },
|
||||
{ "OUT4L", NULL, "SYSCLK" },
|
||||
{ "OUT4R", NULL, "SYSCLK" },
|
||||
{ "OUT5L", NULL, "SYSCLK" },
|
||||
|
@ -743,6 +743,7 @@ static const struct regmap_config wm8940_regmap = {
|
||||
.max_register = WM8940_MONOMIX,
|
||||
.reg_defaults = wm8940_reg_defaults,
|
||||
.num_reg_defaults = ARRAY_SIZE(wm8940_reg_defaults),
|
||||
.cache_type = REGCACHE_RBTREE,
|
||||
|
||||
.readable_reg = wm8940_readable_register,
|
||||
.volatile_reg = wm8940_volatile_register,
|
||||
|
@ -1513,8 +1513,9 @@ static struct davinci_mcasp_pdata am33xx_mcasp_pdata = {
|
||||
};
|
||||
|
||||
static struct davinci_mcasp_pdata dra7_mcasp_pdata = {
|
||||
.tx_dma_offset = 0x200,
|
||||
.rx_dma_offset = 0x284,
|
||||
/* The CFG port offset will be calculated if it is needed */
|
||||
.tx_dma_offset = 0,
|
||||
.rx_dma_offset = 0,
|
||||
.version = MCASP_VERSION_4,
|
||||
};
|
||||
|
||||
@ -1734,6 +1735,52 @@ static int davinci_mcasp_get_dma_type(struct davinci_mcasp *mcasp)
|
||||
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)
|
||||
{
|
||||
struct snd_dmaengine_dai_dma_data *dma_data;
|
||||
@ -1862,7 +1909,7 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
|
||||
if (dat)
|
||||
dma_data->addr = dat->start;
|
||||
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];
|
||||
res = platform_get_resource(pdev, IORESOURCE_DMA, 0);
|
||||
@ -1883,7 +1930,8 @@ static int davinci_mcasp_probe(struct platform_device *pdev)
|
||||
if (dat)
|
||||
dma_data->addr = dat->start;
|
||||
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];
|
||||
res = platform_get_resource(pdev, IORESOURCE_DMA, 1);
|
||||
|
@ -85,9 +85,9 @@
|
||||
(n << 2))
|
||||
|
||||
/* 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 */
|
||||
#define DAVINCI_MCASP_RXBUF_REG 0x280
|
||||
#define DAVINCI_MCASP_RXBUF_REG(n) (0x280 + (n << 2))
|
||||
|
||||
/* McASP FIFO Registers */
|
||||
#define DAVINCI_MCASP_V2_AFIFO_BASE (0x1010)
|
||||
|
@ -952,16 +952,16 @@ static int _fsl_ssi_set_dai_fmt(struct device *dev,
|
||||
ssi_private->i2s_mode = CCSR_SSI_SCR_NET;
|
||||
switch (fmt & SND_SOC_DAIFMT_FORMAT_MASK) {
|
||||
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) {
|
||||
case SND_SOC_DAIFMT_CBM_CFS:
|
||||
case SND_SOC_DAIFMT_CBS_CFS:
|
||||
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;
|
||||
case SND_SOC_DAIFMT_CBM_CFM:
|
||||
ssi_private->i2s_mode |= CCSR_SSI_SCR_I2S_MODE_SLAVE;
|
||||
|
@ -182,24 +182,29 @@ static int sst_platform_compr_trigger(struct snd_compr_stream *cstream, int cmd)
|
||||
case SNDRV_PCM_TRIGGER_START:
|
||||
if (stream->compr_ops->stream_start)
|
||||
return stream->compr_ops->stream_start(sst->dev, stream->id);
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_STOP:
|
||||
if (stream->compr_ops->stream_drop)
|
||||
return stream->compr_ops->stream_drop(sst->dev, stream->id);
|
||||
break;
|
||||
case SND_COMPR_TRIGGER_DRAIN:
|
||||
if (stream->compr_ops->stream_drain)
|
||||
return stream->compr_ops->stream_drain(sst->dev, stream->id);
|
||||
break;
|
||||
case SND_COMPR_TRIGGER_PARTIAL_DRAIN:
|
||||
if (stream->compr_ops->stream_partial_drain)
|
||||
return stream->compr_ops->stream_partial_drain(sst->dev, stream->id);
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_PUSH:
|
||||
if (stream->compr_ops->stream_pause)
|
||||
return stream->compr_ops->stream_pause(sst->dev, stream->id);
|
||||
break;
|
||||
case SNDRV_PCM_TRIGGER_PAUSE_RELEASE:
|
||||
if (stream->compr_ops->stream_pause_release)
|
||||
return stream->compr_ops->stream_pause_release(sst->dev, stream->id);
|
||||
default:
|
||||
return -EINVAL;
|
||||
break;
|
||||
}
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
static int sst_platform_compr_pointer(struct snd_compr_stream *cstream,
|
||||
|
@ -291,6 +291,7 @@ int bxt_sst_dsp_init(struct device *dev, void __iomem *mmio_base, int irq,
|
||||
sst_dsp_mailbox_init(sst, (BXT_ADSP_SRAM0_BASE + SKL_ADSP_W0_STAT_SZ),
|
||||
SKL_ADSP_W0_UP_SZ, BXT_ADSP_SRAM1_BASE, SKL_ADSP_W1_SZ);
|
||||
|
||||
INIT_LIST_HEAD(&sst->module_list);
|
||||
ret = skl_ipc_init(dev, skl);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
@ -518,7 +518,7 @@ static void rsnd_adg_get_clkout(struct rsnd_priv *priv,
|
||||
}
|
||||
}
|
||||
|
||||
rsnd_mod_bset(adg_mod, SSICKR, 0x00FF0000, ckr);
|
||||
rsnd_mod_bset(adg_mod, SSICKR, 0x80FF0000, ckr);
|
||||
rsnd_mod_write(adg_mod, BRRA, rbga);
|
||||
rsnd_mod_write(adg_mod, BRRB, rbgb);
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user