mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-05-04 00:15:49 -04:00
ASoC: amd: acp: use acp pci revision id for platform differntiation
Store acp pci revision id value in 'acp_rev' variable. Use common ACP PCI revision id macros throughout the code for acp_rev check and remove unused macros for platform differentiation from common header file for acp platform driver. Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com> Link: https://patch.msgid.link/20240924061821.1127054-4-Vijendar.Mukunda@amd.com Signed-off-by: Mark Brown <broonie@kernel.org>
This commit is contained in:
committed by
Mark Brown
parent
fca471b5d0
commit
5dbf8a19fe
@@ -59,9 +59,9 @@ static inline void acp_set_i2s_clk(struct acp_dev_data *adata, int dai_id)
|
||||
val |= BIT(1);
|
||||
|
||||
switch (chip->acp_rev) {
|
||||
case ACP63_DEV:
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP63_PCI_ID:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
val |= FIELD_PREP(ACP63_LRCLK_DIV_FIELD, adata->lrclk_div);
|
||||
val |= FIELD_PREP(ACP63_BCLK_DIV_FIELD, adata->bclk_div);
|
||||
break;
|
||||
@@ -121,8 +121,8 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
|
||||
}
|
||||
|
||||
switch (chip->acp_rev) {
|
||||
case ACP3X_DEV:
|
||||
case ACP6X_DEV:
|
||||
case ACP_RN_PCI_ID:
|
||||
case ACP_RMB_PCI_ID:
|
||||
switch (slots) {
|
||||
case 1 ... 7:
|
||||
no_of_slots = slots;
|
||||
@@ -135,9 +135,9 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
case ACP63_DEV:
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP63_PCI_ID:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
switch (slots) {
|
||||
case 1 ... 31:
|
||||
no_of_slots = slots;
|
||||
@@ -160,8 +160,8 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
|
||||
spin_lock_irq(&adata->acp_lock);
|
||||
list_for_each_entry(stream, &adata->stream_list, list) {
|
||||
switch (chip->acp_rev) {
|
||||
case ACP3X_DEV:
|
||||
case ACP6X_DEV:
|
||||
case ACP_RN_PCI_ID:
|
||||
case ACP_RMB_PCI_ID:
|
||||
if (tx_mask && stream->dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
adata->tdm_tx_fmt[stream->dai_id - 1] =
|
||||
FRM_LEN | (slots << 15) | (slot_len << 18);
|
||||
@@ -169,9 +169,9 @@ static int acp_i2s_set_tdm_slot(struct snd_soc_dai *dai, u32 tx_mask, u32 rx_mas
|
||||
adata->tdm_rx_fmt[stream->dai_id - 1] =
|
||||
FRM_LEN | (slots << 15) | (slot_len << 18);
|
||||
break;
|
||||
case ACP63_DEV:
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP63_PCI_ID:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
if (tx_mask && stream->dir == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
adata->tdm_tx_fmt[stream->dai_id - 1] =
|
||||
FRM_LEN | (slots << 13) | (slot_len << 18);
|
||||
@@ -534,7 +534,7 @@ static int acp_i2s_prepare(struct snd_pcm_substream *substream, struct snd_soc_d
|
||||
reg_fifo_addr = ACP_I2S_TX_FIFOADDR(adata);
|
||||
reg_fifo_size = ACP_I2S_TX_FIFOSIZE(adata);
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
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;
|
||||
@@ -546,7 +546,7 @@ static int acp_i2s_prepare(struct snd_pcm_substream *substream, struct snd_soc_d
|
||||
reg_fifo_addr = ACP_I2S_RX_FIFOADDR(adata);
|
||||
reg_fifo_size = ACP_I2S_RX_FIFOSIZE(adata);
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
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;
|
||||
@@ -561,7 +561,7 @@ static int acp_i2s_prepare(struct snd_pcm_substream *substream, struct snd_soc_d
|
||||
reg_fifo_addr = ACP_BT_TX_FIFOADDR(adata);
|
||||
reg_fifo_size = ACP_BT_TX_FIFOSIZE(adata);
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
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;
|
||||
@@ -573,7 +573,7 @@ static int acp_i2s_prepare(struct snd_pcm_substream *substream, struct snd_soc_d
|
||||
reg_fifo_addr = ACP_BT_RX_FIFOADDR(adata);
|
||||
reg_fifo_size = ACP_BT_RX_FIFOSIZE(adata);
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
phy_addr = ACP7x_I2S_BT_RX_MEM_WINDOW_START;
|
||||
else
|
||||
phy_addr = I2S_BT_TX_MEM_WINDOW_START + stream->reg_offset;
|
||||
@@ -588,7 +588,7 @@ static int acp_i2s_prepare(struct snd_pcm_substream *substream, struct snd_soc_d
|
||||
reg_fifo_addr = ACP_HS_TX_FIFOADDR;
|
||||
reg_fifo_size = ACP_HS_TX_FIFOSIZE;
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
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;
|
||||
@@ -600,7 +600,7 @@ static int acp_i2s_prepare(struct snd_pcm_substream *substream, struct snd_soc_d
|
||||
reg_fifo_addr = ACP_HS_RX_FIFOADDR;
|
||||
reg_fifo_size = ACP_HS_RX_FIFOSIZE;
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
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;
|
||||
|
||||
@@ -257,20 +257,20 @@ static int acp_power_on(struct acp_chip_info *chip)
|
||||
|
||||
base = chip->base;
|
||||
switch (chip->acp_rev) {
|
||||
case ACP3X_DEV:
|
||||
case ACP_RN_PCI_ID:
|
||||
acp_pgfsm_stat_reg = ACP_PGFSM_STATUS;
|
||||
acp_pgfsm_ctrl_reg = ACP_PGFSM_CONTROL;
|
||||
break;
|
||||
case ACP6X_DEV:
|
||||
case ACP_RMB_PCI_ID:
|
||||
acp_pgfsm_stat_reg = ACP6X_PGFSM_STATUS;
|
||||
acp_pgfsm_ctrl_reg = ACP6X_PGFSM_CONTROL;
|
||||
break;
|
||||
case ACP63_DEV:
|
||||
case ACP63_PCI_ID:
|
||||
acp_pgfsm_stat_reg = ACP63_PGFSM_STATUS;
|
||||
acp_pgfsm_ctrl_reg = ACP63_PGFSM_CONTROL;
|
||||
break;
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
acp_pgfsm_stat_reg = ACP70_PGFSM_STATUS;
|
||||
acp_pgfsm_ctrl_reg = ACP70_PGFSM_CONTROL;
|
||||
break;
|
||||
@@ -322,7 +322,7 @@ int acp_init(struct acp_chip_info *chip)
|
||||
pr_err("ACP reset failed\n");
|
||||
return ret;
|
||||
}
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
writel(0, chip->base + ACP_ZSC_DSP_CTRL);
|
||||
return 0;
|
||||
}
|
||||
@@ -337,7 +337,7 @@ int acp_deinit(struct acp_chip_info *chip)
|
||||
if (ret)
|
||||
return ret;
|
||||
|
||||
if (chip->acp_rev < ACP70_DEV)
|
||||
if (chip->acp_rev < ACP70_PCI_ID)
|
||||
writel(0, chip->base + ACP_CONTROL);
|
||||
else
|
||||
writel(0x01, chip->base + ACP_ZSC_DSP_CTRL);
|
||||
@@ -448,20 +448,20 @@ void check_acp_config(struct pci_dev *pci, struct acp_chip_info *chip)
|
||||
u32 pdm_addr;
|
||||
|
||||
switch (chip->acp_rev) {
|
||||
case ACP3X_DEV:
|
||||
case ACP_RN_PCI_ID:
|
||||
pdm_addr = ACP_RENOIR_PDM_ADDR;
|
||||
check_acp3x_config(chip);
|
||||
break;
|
||||
case ACP6X_DEV:
|
||||
case ACP_RMB_PCI_ID:
|
||||
pdm_addr = ACP_REMBRANDT_PDM_ADDR;
|
||||
check_acp6x_config(chip);
|
||||
break;
|
||||
case ACP63_DEV:
|
||||
case ACP63_PCI_ID:
|
||||
pdm_addr = ACP63_PDM_ADDR;
|
||||
check_acp6x_config(chip);
|
||||
break;
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
pdm_addr = ACP70_PDM_ADDR;
|
||||
check_acp70_config(chip);
|
||||
break;
|
||||
|
||||
@@ -77,27 +77,22 @@ static int acp_pci_probe(struct pci_dev *pci, const struct pci_device_id *pci_id
|
||||
|
||||
res_acp = acp_res;
|
||||
num_res = ARRAY_SIZE(acp_res);
|
||||
|
||||
chip->acp_rev = pci->revision;
|
||||
switch (pci->revision) {
|
||||
case 0x01:
|
||||
chip->name = "acp_asoc_renoir";
|
||||
chip->acp_rev = ACP3X_DEV;
|
||||
break;
|
||||
case 0x6f:
|
||||
chip->name = "acp_asoc_rembrandt";
|
||||
chip->acp_rev = ACP6X_DEV;
|
||||
break;
|
||||
case 0x63:
|
||||
chip->name = "acp_asoc_acp63";
|
||||
chip->acp_rev = ACP63_DEV;
|
||||
break;
|
||||
case 0x70:
|
||||
chip->name = "acp_asoc_acp70";
|
||||
chip->acp_rev = ACP70_DEV;
|
||||
break;
|
||||
case 0x71:
|
||||
chip->name = "acp_asoc_acp70";
|
||||
chip->acp_rev = ACP71_DEV;
|
||||
break;
|
||||
default:
|
||||
dev_err(dev, "Unsupported device revision:0x%x\n", pci->revision);
|
||||
|
||||
@@ -47,7 +47,7 @@ static int acp_dmic_prepare(struct snd_pcm_substream *substream,
|
||||
size_dmic = frames_to_bytes(substream->runtime,
|
||||
substream->runtime->buffer_size);
|
||||
|
||||
if (chip->acp_rev >= ACP70_DEV)
|
||||
if (chip->acp_rev >= ACP70_PCI_ID)
|
||||
physical_addr = ACP7x_DMIC_MEM_WINDOW_START;
|
||||
else
|
||||
physical_addr = stream->reg_offset + MEM_WINDOW_START;
|
||||
|
||||
@@ -270,9 +270,9 @@ static int acp_dma_open(struct snd_soc_component *component, struct snd_pcm_subs
|
||||
stream->substream = substream;
|
||||
chip = dev_get_platdata(dev);
|
||||
switch (chip->acp_rev) {
|
||||
case ACP63_DEV:
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP63_PCI_ID:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK)
|
||||
runtime->hw = acp6x_pcm_hardware_playback;
|
||||
else
|
||||
|
||||
@@ -197,7 +197,7 @@ static int rembrandt_audio_probe(struct platform_device *pdev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (chip->acp_rev != ACP6X_DEV) {
|
||||
if (chip->acp_rev != ACP_RMB_PCI_ID) {
|
||||
dev_err(&pdev->dev, "Un-supported ACP Revision %d\n", chip->acp_rev);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -157,7 +157,7 @@ static int renoir_audio_probe(struct platform_device *pdev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (chip->acp_rev != ACP3X_DEV) {
|
||||
if (chip->acp_rev != ACP_RN_PCI_ID) {
|
||||
dev_err(&pdev->dev, "Un-supported ACP Revision %d\n", chip->acp_rev);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -207,7 +207,7 @@ static int acp63_audio_probe(struct platform_device *pdev)
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
if (chip->acp_rev != ACP63_DEV) {
|
||||
if (chip->acp_rev != ACP63_PCI_ID) {
|
||||
dev_err(&pdev->dev, "Un-supported ACP Revision %d\n", chip->acp_rev);
|
||||
return -ENODEV;
|
||||
}
|
||||
|
||||
@@ -175,8 +175,8 @@ static int acp_acp70_audio_probe(struct platform_device *pdev)
|
||||
}
|
||||
|
||||
switch (chip->acp_rev) {
|
||||
case ACP70_DEV:
|
||||
case ACP71_DEV:
|
||||
case ACP70_PCI_ID:
|
||||
case ACP71_PCI_ID:
|
||||
break;
|
||||
default:
|
||||
dev_err(&pdev->dev, "Un-supported ACP Revision %d\n", chip->acp_rev);
|
||||
@@ -209,7 +209,7 @@ static int acp_acp70_audio_probe(struct platform_device *pdev)
|
||||
adata->num_dai = ARRAY_SIZE(acp70_dai);
|
||||
adata->rsrc = &rsrc;
|
||||
adata->machines = snd_soc_acpi_amd_acp70_acp_machines;
|
||||
if (chip->acp_rev == ACP70_DEV)
|
||||
if (chip->acp_rev == ACP70_PCI_ID)
|
||||
adata->platform = ACP70;
|
||||
else
|
||||
adata->platform = ACP71;
|
||||
|
||||
@@ -16,14 +16,9 @@
|
||||
#include <sound/soc-acpi.h>
|
||||
#include <sound/soc-dai.h>
|
||||
|
||||
#include "acp_common.h"
|
||||
#include "chip_offset_byte.h"
|
||||
|
||||
#define ACP3X_DEV 3
|
||||
#define ACP6X_DEV 6
|
||||
#define ACP63_DEV 0x63
|
||||
#define ACP70_DEV 0x70
|
||||
#define ACP71_DEV 0x71
|
||||
|
||||
#define DMIC_INSTANCE 0x00
|
||||
#define I2S_SP_INSTANCE 0x01
|
||||
#define I2S_BT_INSTANCE 0x02
|
||||
|
||||
Reference in New Issue
Block a user