Skip to content

Commit 2c0ae8e

Browse files
vijendarmukundavinodkoul
authored andcommitted
soundwire: amd: add support for ACP7.0 & ACP7.1 platforms
Add SoundWire support for ACP7.0 and ACP7.1 platforms. Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com> Link: https://lore.kernel.org/r/20250207065841.4718-4-Vijendar.Mukunda@amd.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
1 parent 19427c0 commit 2c0ae8e

File tree

3 files changed

+41
-0
lines changed

3 files changed

+41
-0
lines changed

drivers/soundwire/amd_manager.c

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -446,6 +446,10 @@ static int amd_sdw_port_params(struct sdw_bus *bus, struct sdw_port_params *p_pa
446446
return -EINVAL;
447447
}
448448
break;
449+
case ACP70_PCI_REV_ID:
450+
case ACP71_PCI_REV_ID:
451+
frame_fmt_reg = acp70_sdw_dp_reg[p_params->num].frame_fmt_reg;
452+
break;
449453
default:
450454
return -EINVAL;
451455
}
@@ -494,6 +498,14 @@ static int amd_sdw_transport_params(struct sdw_bus *bus,
494498
return -EINVAL;
495499
}
496500
break;
501+
case ACP70_PCI_REV_ID:
502+
case ACP71_PCI_REV_ID:
503+
frame_fmt_reg = acp70_sdw_dp_reg[params->port_num].frame_fmt_reg;
504+
sample_int_reg = acp70_sdw_dp_reg[params->port_num].sample_int_reg;
505+
hctrl_dp0_reg = acp70_sdw_dp_reg[params->port_num].hctrl_dp0_reg;
506+
offset_reg = acp70_sdw_dp_reg[params->port_num].offset_reg;
507+
lane_ctrl_ch_en_reg = acp70_sdw_dp_reg[params->port_num].lane_ctrl_ch_en_reg;
508+
break;
497509
default:
498510
return -EINVAL;
499511
}
@@ -549,6 +561,10 @@ static int amd_sdw_port_enable(struct sdw_bus *bus,
549561
return -EINVAL;
550562
}
551563
break;
564+
case ACP70_PCI_REV_ID:
565+
case ACP71_PCI_REV_ID:
566+
lane_ctrl_ch_en_reg = acp70_sdw_dp_reg[enable_ch->port_num].lane_ctrl_ch_en_reg;
567+
break;
552568
default:
553569
return -EINVAL;
554570
}
@@ -966,6 +982,11 @@ static int amd_sdw_manager_probe(struct platform_device *pdev)
966982
return -EINVAL;
967983
}
968984
break;
985+
case ACP70_PCI_REV_ID:
986+
case ACP71_PCI_REV_ID:
987+
amd_manager->num_dout_ports = AMD_ACP70_SDW_MAX_TX_PORTS;
988+
amd_manager->num_din_ports = AMD_ACP70_SDW_MAX_RX_PORTS;
989+
break;
969990
default:
970991
return -EINVAL;
971992
}

drivers/soundwire/amd_manager.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,11 @@
159159
#define AMD_ACP63_SDW0_MAX_RX_PORTS 3
160160
#define AMD_ACP63_SDW1_MAX_TX_PORTS 1
161161
#define AMD_ACP63_SDW1_MAX_RX_PORTS 1
162+
#define AMD_ACP70_SDW_MAX_TX_PORTS 3
163+
#define AMD_ACP70_SDW_MAX_RX_PORTS 3
162164
#define AMD_ACP63_SDW0_MAX_DAI 6
163165
#define AMD_ACP63_SDW1_MAX_DAI 2
166+
#define AMD_ACP70_SDW_MAX_DAI 6
164167
#define AMD_SDW_SLAVE_0_ATTACHED 5
165168
#define AMD_SDW_SSP_COUNTER_VAL 3
166169

@@ -244,6 +247,21 @@ static struct sdw_manager_dp_reg acp63_sdw1_dp_reg[AMD_ACP63_SDW1_MAX_DAI] = {
244247
ACP_SW_AUDIO1_RX_OFFSET, ACP_SW_AUDIO1_RX_CHANNEL_ENABLE_DP0}
245248
};
246249

250+
static struct sdw_manager_dp_reg acp70_sdw_dp_reg[AMD_ACP70_SDW_MAX_DAI] = {
251+
{ACP_SW_AUDIO0_TX_FRAME_FORMAT, ACP_SW_AUDIO0_TX_SAMPLEINTERVAL, ACP_SW_AUDIO0_TX_HCTRL_DP0,
252+
ACP_SW_AUDIO0_TX_OFFSET_DP0, ACP_SW_AUDIO0_TX_CHANNEL_ENABLE_DP0},
253+
{ACP_SW_AUDIO1_TX_FRAME_FORMAT, ACP_SW_AUDIO1_TX_SAMPLEINTERVAL, ACP_SW_AUDIO1_TX_HCTRL,
254+
ACP_SW_AUDIO1_TX_OFFSET, ACP_SW_AUDIO1_TX_CHANNEL_ENABLE_DP0},
255+
{ACP_SW_AUDIO2_TX_FRAME_FORMAT, ACP_SW_AUDIO2_TX_SAMPLEINTERVAL, ACP_SW_AUDIO2_TX_HCTRL,
256+
ACP_SW_AUDIO2_TX_OFFSET, ACP_SW_AUDIO2_TX_CHANNEL_ENABLE_DP0},
257+
{ACP_SW_AUDIO0_RX_FRAME_FORMAT, ACP_SW_AUDIO0_RX_SAMPLEINTERVAL, ACP_SW_AUDIO0_RX_HCTRL_DP0,
258+
ACP_SW_AUDIO0_RX_OFFSET_DP0, ACP_SW_AUDIO0_RX_CHANNEL_ENABLE_DP0},
259+
{ACP_SW_AUDIO1_RX_FRAME_FORMAT, ACP_SW_AUDIO1_RX_SAMPLEINTERVAL, ACP_SW_AUDIO1_RX_HCTRL,
260+
ACP_SW_AUDIO1_RX_OFFSET, ACP_SW_AUDIO1_RX_CHANNEL_ENABLE_DP0},
261+
{ACP_SW_AUDIO2_RX_FRAME_FORMAT, ACP_SW_AUDIO2_RX_SAMPLEINTERVAL, ACP_SW_AUDIO2_RX_HCTRL,
262+
ACP_SW_AUDIO2_RX_OFFSET, ACP_SW_AUDIO2_RX_CHANNEL_ENABLE_DP0},
263+
};
264+
247265
static u32 sdw_manager_reg_mask_array[AMD_SDW_MAX_MANAGER_COUNT] = {
248266
AMD_SDW0_EXT_INTR_MASK,
249267
AMD_SDW1_EXT_INTR_MASK

include/linux/soundwire/sdw_amd.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,8 @@
2828
#define ACP_SDW1 1
2929
#define AMD_SDW_MAX_MANAGER_COUNT 2
3030
#define ACP63_PCI_REV_ID 0x63
31+
#define ACP70_PCI_REV_ID 0x70
32+
#define ACP71_PCI_REV_ID 0x71
3133

3234
struct acp_sdw_pdata {
3335
u16 instance;

0 commit comments

Comments
 (0)