ASoC: Fixes for v6.19
A small pile of fixes that came in during the merge window, it's all fairly standard device specific stuff. -----BEGIN PGP SIGNATURE----- iQEzBAABCgAdFiEEreZoqmdXGLWf4p/qJNaLcl1Uh9AFAmk6EpEACgkQJNaLcl1U h9B19wf+Lf0D4e7+57nnZSWFitwEFwdHFPULFr0xlq37yQ7UzfR3bdyo2Lck2J9g ZjnkyG4lVCLjHdqWvuke8mqU672HC9kKLpO4GldqpkeJrlryUaKDiYyMFNxBZUS5 4nW6fNONwNvwMvRZcXN2v1XDuQP97pYC8kadUpPvIb1LN2LdfVLn7dtnYReOeEnA fAbQj7STdLwzj9mtkD8QpMTClYJLB3+tV8zCYCAElTgdSxxJ6jjA7WgNB5tPL9+N PNxXdDty11g2U26FGhqEafWs0Uzr28h7DvTtQEccguIXU6uTyi5WK0ca/z7Wra6A cdrb1WYL8t6eYJqdIOezSL9uyvn6sA== =rQ0I -----END PGP SIGNATURE----- Merge tag 'asoc-fix-v6.19-merge-window' of https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound into for-linus ASoC: Fixes for v6.19 A small pile of fixes that came in during the merge window, it's all fairly standard device specific stuff.master
commit
b13efb5359
|
|
@ -9,6 +9,9 @@ title: Cirrus Logic CS42448/CS42888 audio CODEC
|
|||
maintainers:
|
||||
- patches@opensource.cirrus.com
|
||||
|
||||
allOf:
|
||||
- $ref: dai-common.yaml#
|
||||
|
||||
properties:
|
||||
compatible:
|
||||
enum:
|
||||
|
|
@ -63,7 +66,7 @@ then:
|
|||
- VLC-supply
|
||||
- VLS-supply
|
||||
|
||||
additionalProperties: false
|
||||
unevaluatedProperties: false
|
||||
|
||||
examples:
|
||||
- |
|
||||
|
|
|
|||
|
|
@ -157,6 +157,8 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
|
|||
|
||||
spin_lock_irq(&chip->acp_lock);
|
||||
list_for_each_entry(stream, &chip->stream_list, list) {
|
||||
if (dai->id != stream->dai_id)
|
||||
continue;
|
||||
switch (chip->acp_rev) {
|
||||
case ACP_RN_PCI_ID:
|
||||
case ACP_RMB_PCI_ID:
|
||||
|
|
|
|||
|
|
@ -219,7 +219,10 @@ static int set_acp_i2s_dma_fifo(struct snd_pcm_substream *substream,
|
|||
SP_PB_FIFO_ADDR_OFFSET;
|
||||
reg_fifo_addr = ACP_I2S_TX_FIFOADDR(chip);
|
||||
reg_fifo_size = ACP_I2S_TX_FIFOSIZE(chip);
|
||||
phy_addr = I2S_SP_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_SP_TX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_SP_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
writel(phy_addr, chip->base + ACP_I2S_TX_RINGBUFADDR(chip));
|
||||
} else {
|
||||
reg_dma_size = ACP_I2S_RX_DMA_SIZE(chip);
|
||||
|
|
@ -227,7 +230,10 @@ static int set_acp_i2s_dma_fifo(struct snd_pcm_substream *substream,
|
|||
SP_CAPT_FIFO_ADDR_OFFSET;
|
||||
reg_fifo_addr = ACP_I2S_RX_FIFOADDR(chip);
|
||||
reg_fifo_size = ACP_I2S_RX_FIFOSIZE(chip);
|
||||
phy_addr = I2S_SP_RX_MEM_WINDOW_START + stream->reg_offset;
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_SP_RX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_SP_RX_MEM_WINDOW_START + stream->reg_offset;
|
||||
writel(phy_addr, chip->base + ACP_I2S_RX_RINGBUFADDR(chip));
|
||||
}
|
||||
break;
|
||||
|
|
@ -238,7 +244,10 @@ static int set_acp_i2s_dma_fifo(struct snd_pcm_substream *substream,
|
|||
BT_PB_FIFO_ADDR_OFFSET;
|
||||
reg_fifo_addr = ACP_BT_TX_FIFOADDR(chip);
|
||||
reg_fifo_size = ACP_BT_TX_FIFOSIZE(chip);
|
||||
phy_addr = I2S_BT_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_BT_TX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_BT_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
writel(phy_addr, chip->base + ACP_BT_TX_RINGBUFADDR(chip));
|
||||
} else {
|
||||
reg_dma_size = ACP_BT_RX_DMA_SIZE(chip);
|
||||
|
|
@ -246,7 +255,10 @@ static int set_acp_i2s_dma_fifo(struct snd_pcm_substream *substream,
|
|||
BT_CAPT_FIFO_ADDR_OFFSET;
|
||||
reg_fifo_addr = ACP_BT_RX_FIFOADDR(chip);
|
||||
reg_fifo_size = ACP_BT_RX_FIFOSIZE(chip);
|
||||
phy_addr = I2S_BT_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_BT_RX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_BT_RX_MEM_WINDOW_START + stream->reg_offset;
|
||||
writel(phy_addr, chip->base + ACP_BT_RX_RINGBUFADDR(chip));
|
||||
}
|
||||
break;
|
||||
|
|
@ -257,7 +269,10 @@ static int set_acp_i2s_dma_fifo(struct snd_pcm_substream *substream,
|
|||
HS_PB_FIFO_ADDR_OFFSET;
|
||||
reg_fifo_addr = ACP_HS_TX_FIFOADDR;
|
||||
reg_fifo_size = ACP_HS_TX_FIFOSIZE;
|
||||
phy_addr = I2S_HS_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_HS_TX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_HS_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
writel(phy_addr, chip->base + ACP_HS_TX_RINGBUFADDR);
|
||||
} else {
|
||||
reg_dma_size = ACP_HS_RX_DMA_SIZE;
|
||||
|
|
@ -265,7 +280,10 @@ static int set_acp_i2s_dma_fifo(struct snd_pcm_substream *substream,
|
|||
HS_CAPT_FIFO_ADDR_OFFSET;
|
||||
reg_fifo_addr = ACP_HS_RX_FIFOADDR;
|
||||
reg_fifo_size = ACP_HS_RX_FIFOSIZE;
|
||||
phy_addr = I2S_HS_RX_MEM_WINDOW_START + stream->reg_offset;
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_HS_RX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_HS_RX_MEM_WINDOW_START + stream->reg_offset;
|
||||
writel(phy_addr, chip->base + ACP_HS_RX_RINGBUFADDR);
|
||||
}
|
||||
break;
|
||||
|
|
|
|||
|
|
@ -358,7 +358,9 @@ static int bcm63xx_soc_pcm_new(struct snd_soc_component *component,
|
|||
|
||||
i2s_priv = dev_get_drvdata(snd_soc_rtd_to_cpu(rtd, 0)->dev);
|
||||
|
||||
of_dma_configure(pcm->card->dev, pcm->card->dev->of_node, 1);
|
||||
ret = of_dma_configure(pcm->card->dev, pcm->card->dev->of_node, 1);
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
ret = dma_coerce_mask_and_coherent(pcm->card->dev, DMA_BIT_MASK(32));
|
||||
if (ret)
|
||||
|
|
|
|||
|
|
@ -777,7 +777,6 @@ config SND_SOC_CQ0093VC
|
|||
config SND_SOC_CROS_EC_CODEC
|
||||
tristate "codec driver for ChromeOS EC"
|
||||
depends on CROS_EC
|
||||
select CRYPTO
|
||||
select CRYPTO_LIB_SHA256
|
||||
help
|
||||
If you say yes here you will get support for the
|
||||
|
|
@ -918,7 +917,7 @@ config SND_SOC_CS35L56_CAL_DEBUGFS
|
|||
config SND_SOC_CS35L56_CAL_SET_CTRL
|
||||
bool "CS35L56 ALSA control to restore factory calibration"
|
||||
default N
|
||||
select SND_SOC_CS35L56_CAL_SYSFS_COMMON
|
||||
select SND_SOC_CS35L56_CAL_DEBUGFS_COMMON
|
||||
help
|
||||
Allow restoring factory calibration data through an ALSA
|
||||
control. This is only needed on platforms without UEFI or
|
||||
|
|
|
|||
|
|
@ -671,7 +671,15 @@ static int ak4458_runtime_resume(struct device *dev)
|
|||
regcache_cache_only(ak4458->regmap, false);
|
||||
regcache_mark_dirty(ak4458->regmap);
|
||||
|
||||
return regcache_sync(ak4458->regmap);
|
||||
ret = regcache_sync(ak4458->regmap);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
return 0;
|
||||
err:
|
||||
regcache_cache_only(ak4458->regmap, true);
|
||||
regulator_bulk_disable(ARRAY_SIZE(ak4458->supplies), ak4458->supplies);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct snd_soc_component_driver soc_codec_dev_ak4458 = {
|
||||
|
|
|
|||
|
|
@ -372,7 +372,15 @@ static int ak5558_runtime_resume(struct device *dev)
|
|||
regcache_cache_only(ak5558->regmap, false);
|
||||
regcache_mark_dirty(ak5558->regmap);
|
||||
|
||||
return regcache_sync(ak5558->regmap);
|
||||
ret = regcache_sync(ak5558->regmap);
|
||||
if (ret)
|
||||
goto err;
|
||||
|
||||
return 0;
|
||||
err:
|
||||
regcache_cache_only(ak5558->regmap, true);
|
||||
regulator_bulk_disable(ARRAY_SIZE(ak5558->supplies), ak5558->supplies);
|
||||
return ret;
|
||||
}
|
||||
|
||||
static const struct dev_pm_ops ak5558_pm = {
|
||||
|
|
|
|||
|
|
@ -7,7 +7,6 @@
|
|||
|
||||
#include <asm/byteorder.h>
|
||||
#include <kunit/static_stub.h>
|
||||
#include <linux/cleanup.h>
|
||||
#include <linux/debugfs.h>
|
||||
#include <linux/dev_printk.h>
|
||||
#include <linux/efi.h>
|
||||
|
|
@ -310,8 +309,9 @@ static struct cirrus_amp_efi_data *cs_amp_get_cal_efi_buffer(struct device *dev,
|
|||
efi_guid_t **guid,
|
||||
u32 *attr)
|
||||
{
|
||||
struct cirrus_amp_efi_data *efi_data __free(kfree) = NULL;
|
||||
struct cirrus_amp_efi_data *efi_data;
|
||||
unsigned long data_size = 0;
|
||||
u8 *data;
|
||||
efi_status_t status;
|
||||
int i, ret;
|
||||
|
||||
|
|
@ -339,18 +339,19 @@ static struct cirrus_amp_efi_data *cs_amp_get_cal_efi_buffer(struct device *dev,
|
|||
}
|
||||
|
||||
/* Get variable contents into buffer */
|
||||
efi_data = kmalloc(data_size, GFP_KERNEL);
|
||||
if (!efi_data)
|
||||
data = kmalloc(data_size, GFP_KERNEL);
|
||||
if (!data)
|
||||
return ERR_PTR(-ENOMEM);
|
||||
|
||||
status = cs_amp_get_efi_variable(cs_amp_lib_cal_efivars[i].name,
|
||||
cs_amp_lib_cal_efivars[i].guid,
|
||||
attr, &data_size, efi_data);
|
||||
attr, &data_size, data);
|
||||
if (status != EFI_SUCCESS) {
|
||||
ret = -EINVAL;
|
||||
goto err;
|
||||
}
|
||||
|
||||
efi_data = (struct cirrus_amp_efi_data *)data;
|
||||
dev_dbg(dev, "Calibration: Size=%d, Amp Count=%d\n", efi_data->size, efi_data->count);
|
||||
|
||||
if ((efi_data->count > 128) ||
|
||||
|
|
@ -364,9 +365,10 @@ static struct cirrus_amp_efi_data *cs_amp_get_cal_efi_buffer(struct device *dev,
|
|||
if (efi_data->size == 0)
|
||||
efi_data->size = data_size;
|
||||
|
||||
return_ptr(efi_data);
|
||||
return efi_data;
|
||||
|
||||
err:
|
||||
kfree(data);
|
||||
dev_err(dev, "Failed to read calibration data from EFI: %d\n", ret);
|
||||
|
||||
return ERR_PTR(ret);
|
||||
|
|
@ -389,9 +391,9 @@ static int cs_amp_set_cal_efi_buffer(struct device *dev,
|
|||
static int _cs_amp_get_efi_calibration_data(struct device *dev, u64 target_uid, int amp_index,
|
||||
struct cirrus_amp_cal_data *out_data)
|
||||
{
|
||||
struct cirrus_amp_efi_data *efi_data __free(kfree) = NULL;
|
||||
struct cirrus_amp_efi_data *efi_data;
|
||||
struct cirrus_amp_cal_data *cal = NULL;
|
||||
int i;
|
||||
int i, ret;
|
||||
|
||||
efi_data = cs_amp_get_cal_efi_buffer(dev, NULL, NULL, NULL);
|
||||
if (IS_ERR(efi_data))
|
||||
|
|
@ -432,14 +434,17 @@ static int _cs_amp_get_efi_calibration_data(struct device *dev, u64 target_uid,
|
|||
dev_warn(dev, "Calibration entry %d does not match silicon ID", amp_index);
|
||||
}
|
||||
|
||||
if (!cal) {
|
||||
if (cal) {
|
||||
memcpy(out_data, cal, sizeof(*out_data));
|
||||
ret = 0;
|
||||
} else {
|
||||
dev_warn(dev, "No calibration for silicon ID %#llx\n", target_uid);
|
||||
return -ENOENT;
|
||||
ret = -ENOENT;
|
||||
}
|
||||
|
||||
memcpy(out_data, cal, sizeof(*out_data));
|
||||
kfree(efi_data);
|
||||
|
||||
return 0;
|
||||
return ret;
|
||||
}
|
||||
|
||||
static int _cs_amp_set_efi_calibration_data(struct device *dev, int amp_index, int num_amps,
|
||||
|
|
|
|||
|
|
@ -1188,13 +1188,14 @@ static int cs35l41_get_system_name(struct cs35l41_private *cs35l41)
|
|||
}
|
||||
}
|
||||
|
||||
err:
|
||||
if (sub) {
|
||||
cs35l41->dsp.system_name = sub;
|
||||
dev_info(cs35l41->dev, "Subsystem ID: %s\n", cs35l41->dsp.system_name);
|
||||
} else
|
||||
dev_warn(cs35l41->dev, "Subsystem ID not found\n");
|
||||
return 0;
|
||||
}
|
||||
|
||||
err:
|
||||
dev_warn(cs35l41->dev, "Subsystem ID not found\n");
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -386,7 +386,8 @@ static int nau8325_clksrc_choose(struct nau8325 *nau8325,
|
|||
const struct nau8325_srate_attr **srate_table,
|
||||
int *n1_sel, int *mult_sel, int *n2_sel)
|
||||
{
|
||||
int i, j, mclk, mclk_max, ratio, ratio_sel, n2_max;
|
||||
int i, j, mclk, ratio;
|
||||
int mclk_max = 0, ratio_sel = 0, n2_max = 0;
|
||||
|
||||
if (!nau8325->mclk || !nau8325->fs)
|
||||
goto proc_err;
|
||||
|
|
@ -408,7 +409,6 @@ static int nau8325_clksrc_choose(struct nau8325 *nau8325,
|
|||
}
|
||||
|
||||
/* Get MCLK_SRC through 1/N, Multiplier, and then 1/N2. */
|
||||
mclk_max = 0;
|
||||
for (i = 0; i < ARRAY_SIZE(mclk_n1_div); i++) {
|
||||
for (j = 0; j < ARRAY_SIZE(mclk_n3_mult); j++) {
|
||||
mclk = nau8325->mclk << mclk_n3_mult[j].param;
|
||||
|
|
|
|||
|
|
@ -2866,7 +2866,7 @@ static int wcd937x_add_slave_components(struct wcd937x_priv *wcd937x,
|
|||
dev_err(dev, "Couldn't parse phandle to qcom,rx-device!\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
of_node_get(wcd937x->rxnode);
|
||||
|
||||
component_match_add_release(dev, matchptr, component_release_of,
|
||||
component_compare_of, wcd937x->rxnode);
|
||||
|
||||
|
|
@ -2875,7 +2875,7 @@ static int wcd937x_add_slave_components(struct wcd937x_priv *wcd937x,
|
|||
dev_err(dev, "Couldn't parse phandle to qcom,tx-device\n");
|
||||
return -ENODEV;
|
||||
}
|
||||
of_node_get(wcd937x->txnode);
|
||||
|
||||
component_match_add_release(dev, matchptr, component_release_of,
|
||||
component_compare_of, wcd937x->txnode);
|
||||
|
||||
|
|
|
|||
|
|
@ -3464,7 +3464,6 @@ static int wcd938x_add_slave_components(struct wcd938x_priv *wcd938x,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
of_node_get(wcd938x->rxnode);
|
||||
component_match_add_release(dev, matchptr, component_release_of,
|
||||
component_compare_of, wcd938x->rxnode);
|
||||
|
||||
|
|
@ -3473,7 +3472,7 @@ static int wcd938x_add_slave_components(struct wcd938x_priv *wcd938x,
|
|||
dev_err(dev, "%s: Tx-device node not defined\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
of_node_get(wcd938x->txnode);
|
||||
|
||||
component_match_add_release(dev, matchptr, component_release_of,
|
||||
component_compare_of, wcd938x->txnode);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -3526,7 +3526,6 @@ static int wcd939x_add_slave_components(struct wcd939x_priv *wcd939x,
|
|||
return -ENODEV;
|
||||
}
|
||||
|
||||
of_node_get(wcd939x->rxnode);
|
||||
component_match_add_release(dev, matchptr, component_release_of,
|
||||
component_compare_of, wcd939x->rxnode);
|
||||
|
||||
|
|
@ -3535,7 +3534,7 @@ static int wcd939x_add_slave_components(struct wcd939x_priv *wcd939x,
|
|||
dev_err(dev, "%s: Tx-device node not defined\n", __func__);
|
||||
return -ENODEV;
|
||||
}
|
||||
of_node_get(wcd939x->txnode);
|
||||
|
||||
component_match_add_release(dev, matchptr, component_release_of,
|
||||
component_compare_of, wcd939x->txnode);
|
||||
return 0;
|
||||
|
|
|
|||
|
|
@ -947,7 +947,7 @@ static struct q6afe_port *q6afe_find_port(struct q6afe *afe, int token)
|
|||
struct q6afe_port *p;
|
||||
struct q6afe_port *ret = NULL;
|
||||
|
||||
guard(spinlock)(&afe->port_list_lock);
|
||||
guard(spinlock_irqsave)(&afe->port_list_lock);
|
||||
list_for_each_entry(p, &afe->port_list, node)
|
||||
if (p->token == token) {
|
||||
ret = p;
|
||||
|
|
@ -1807,7 +1807,7 @@ struct q6afe_port *q6afe_port_get_from_id(struct device *dev, int id)
|
|||
port->cfg_type = cfg_type;
|
||||
kref_init(&port->refcount);
|
||||
|
||||
guard(spinlock)(&afe->port_list_lock);
|
||||
guard(spinlock_irqsave)(&afe->port_list_lock);
|
||||
list_add_tail(&port->node, &afe->port_list);
|
||||
|
||||
return port;
|
||||
|
|
|
|||
|
|
@ -580,7 +580,7 @@ static int rockchip_pdm_probe(struct platform_device *pdev)
|
|||
if (!pdm)
|
||||
return -ENOMEM;
|
||||
|
||||
pdm->version = (enum rk_pdm_version)device_get_match_data(&pdev->dev);
|
||||
pdm->version = (unsigned long)device_get_match_data(&pdev->dev);
|
||||
if (pdm->version == RK_PDM_RK3308) {
|
||||
pdm->reset = devm_reset_control_get(&pdev->dev, "pdm-m");
|
||||
if (IS_ERR(pdm->reset))
|
||||
|
|
|
|||
Loading…
Reference in New Issue