mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/stable/linux.git
synced 2024-12-28 16:56:26 +00:00
soundwire: amd: refactor existing code for acp 6.3 platform
Refactor existing code by adding acp pci revision id coditional checks for ACP 6.3 platform. Rename the macros and structure names with ACP63 tag. Signed-off-by: Vijendar Mukunda <Vijendar.Mukunda@amd.com> Link: https://lore.kernel.org/r/20240924081846.1834612-3-Vijendar.Mukunda@amd.com Signed-off-by: Vinod Koul <vkoul@kernel.org>
This commit is contained in:
parent
ced20ea315
commit
7b54323dde
@ -433,12 +433,18 @@ static int amd_sdw_port_params(struct sdw_bus *bus, struct sdw_port_params *p_pa
|
||||
u32 frame_fmt_reg, dpn_frame_fmt;
|
||||
|
||||
dev_dbg(amd_manager->dev, "p_params->num:0x%x\n", p_params->num);
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
frame_fmt_reg = sdw0_manager_dp_reg[p_params->num].frame_fmt_reg;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
frame_fmt_reg = sdw1_manager_dp_reg[p_params->num].frame_fmt_reg;
|
||||
switch (amd_manager->acp_rev) {
|
||||
case ACP63_PCI_REV_ID:
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
frame_fmt_reg = acp63_sdw0_dp_reg[p_params->num].frame_fmt_reg;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
frame_fmt_reg = acp63_sdw1_dp_reg[p_params->num].frame_fmt_reg;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@ -465,20 +471,28 @@ static int amd_sdw_transport_params(struct sdw_bus *bus,
|
||||
u32 frame_fmt_reg, sample_int_reg, hctrl_dp0_reg;
|
||||
u32 offset_reg, lane_ctrl_ch_en_reg;
|
||||
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
frame_fmt_reg = sdw0_manager_dp_reg[params->port_num].frame_fmt_reg;
|
||||
sample_int_reg = sdw0_manager_dp_reg[params->port_num].sample_int_reg;
|
||||
hctrl_dp0_reg = sdw0_manager_dp_reg[params->port_num].hctrl_dp0_reg;
|
||||
offset_reg = sdw0_manager_dp_reg[params->port_num].offset_reg;
|
||||
lane_ctrl_ch_en_reg = sdw0_manager_dp_reg[params->port_num].lane_ctrl_ch_en_reg;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
frame_fmt_reg = sdw1_manager_dp_reg[params->port_num].frame_fmt_reg;
|
||||
sample_int_reg = sdw1_manager_dp_reg[params->port_num].sample_int_reg;
|
||||
hctrl_dp0_reg = sdw1_manager_dp_reg[params->port_num].hctrl_dp0_reg;
|
||||
offset_reg = sdw1_manager_dp_reg[params->port_num].offset_reg;
|
||||
lane_ctrl_ch_en_reg = sdw1_manager_dp_reg[params->port_num].lane_ctrl_ch_en_reg;
|
||||
switch (amd_manager->acp_rev) {
|
||||
case ACP63_PCI_REV_ID:
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
frame_fmt_reg = acp63_sdw0_dp_reg[params->port_num].frame_fmt_reg;
|
||||
sample_int_reg = acp63_sdw0_dp_reg[params->port_num].sample_int_reg;
|
||||
hctrl_dp0_reg = acp63_sdw0_dp_reg[params->port_num].hctrl_dp0_reg;
|
||||
offset_reg = acp63_sdw0_dp_reg[params->port_num].offset_reg;
|
||||
lane_ctrl_ch_en_reg =
|
||||
acp63_sdw0_dp_reg[params->port_num].lane_ctrl_ch_en_reg;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
frame_fmt_reg = acp63_sdw1_dp_reg[params->port_num].frame_fmt_reg;
|
||||
sample_int_reg = acp63_sdw1_dp_reg[params->port_num].sample_int_reg;
|
||||
hctrl_dp0_reg = acp63_sdw1_dp_reg[params->port_num].hctrl_dp0_reg;
|
||||
offset_reg = acp63_sdw1_dp_reg[params->port_num].offset_reg;
|
||||
lane_ctrl_ch_en_reg =
|
||||
acp63_sdw1_dp_reg[params->port_num].lane_ctrl_ch_en_reg;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@ -520,12 +534,20 @@ static int amd_sdw_port_enable(struct sdw_bus *bus,
|
||||
u32 dpn_ch_enable;
|
||||
u32 lane_ctrl_ch_en_reg;
|
||||
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
lane_ctrl_ch_en_reg = sdw0_manager_dp_reg[enable_ch->port_num].lane_ctrl_ch_en_reg;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
lane_ctrl_ch_en_reg = sdw1_manager_dp_reg[enable_ch->port_num].lane_ctrl_ch_en_reg;
|
||||
switch (amd_manager->acp_rev) {
|
||||
case ACP63_PCI_REV_ID:
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
lane_ctrl_ch_en_reg =
|
||||
acp63_sdw0_dp_reg[enable_ch->port_num].lane_ctrl_ch_en_reg;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
lane_ctrl_ch_en_reg =
|
||||
acp63_sdw1_dp_reg[enable_ch->port_num].lane_ctrl_ch_en_reg;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
@ -927,15 +949,21 @@ static int amd_sdw_manager_probe(struct platform_device *pdev)
|
||||
* information.
|
||||
*/
|
||||
amd_manager->bus.controller_id = 0;
|
||||
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
amd_manager->num_dout_ports = AMD_SDW0_MAX_TX_PORTS;
|
||||
amd_manager->num_din_ports = AMD_SDW0_MAX_RX_PORTS;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
amd_manager->num_dout_ports = AMD_SDW1_MAX_TX_PORTS;
|
||||
amd_manager->num_din_ports = AMD_SDW1_MAX_RX_PORTS;
|
||||
dev_dbg(dev, "acp_rev:0x%x\n", amd_manager->acp_rev);
|
||||
switch (amd_manager->acp_rev) {
|
||||
case ACP63_PCI_REV_ID:
|
||||
switch (amd_manager->instance) {
|
||||
case ACP_SDW0:
|
||||
amd_manager->num_dout_ports = AMD_ACP63_SDW0_MAX_TX_PORTS;
|
||||
amd_manager->num_din_ports = AMD_ACP63_SDW0_MAX_RX_PORTS;
|
||||
break;
|
||||
case ACP_SDW1:
|
||||
amd_manager->num_dout_ports = AMD_ACP63_SDW1_MAX_TX_PORTS;
|
||||
amd_manager->num_din_ports = AMD_ACP63_SDW1_MAX_RX_PORTS;
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return -EINVAL;
|
||||
|
@ -155,12 +155,12 @@
|
||||
#define AMD_SDW_IRQ_MASK_8TO11 0x000c7777
|
||||
#define AMD_SDW_IRQ_ERROR_MASK 0xff
|
||||
#define AMD_SDW_MAX_FREQ_NUM 1
|
||||
#define AMD_SDW0_MAX_TX_PORTS 3
|
||||
#define AMD_SDW0_MAX_RX_PORTS 3
|
||||
#define AMD_SDW1_MAX_TX_PORTS 1
|
||||
#define AMD_SDW1_MAX_RX_PORTS 1
|
||||
#define AMD_SDW0_MAX_DAI 6
|
||||
#define AMD_SDW1_MAX_DAI 2
|
||||
#define AMD_ACP63_SDW0_MAX_TX_PORTS 3
|
||||
#define AMD_ACP63_SDW0_MAX_RX_PORTS 3
|
||||
#define AMD_ACP63_SDW1_MAX_TX_PORTS 1
|
||||
#define AMD_ACP63_SDW1_MAX_RX_PORTS 1
|
||||
#define AMD_ACP63_SDW0_MAX_DAI 6
|
||||
#define AMD_ACP63_SDW1_MAX_DAI 2
|
||||
#define AMD_SDW_SLAVE_0_ATTACHED 5
|
||||
#define AMD_SDW_SSP_COUNTER_VAL 3
|
||||
|
||||
@ -222,7 +222,7 @@ struct sdw_manager_dp_reg {
|
||||
* in SoundWire DMA driver.
|
||||
*/
|
||||
|
||||
static struct sdw_manager_dp_reg sdw0_manager_dp_reg[AMD_SDW0_MAX_DAI] = {
|
||||
static struct sdw_manager_dp_reg acp63_sdw0_dp_reg[AMD_ACP63_SDW0_MAX_DAI] = {
|
||||
{ACP_SW_AUDIO0_TX_FRAME_FORMAT, ACP_SW_AUDIO0_TX_SAMPLEINTERVAL, ACP_SW_AUDIO0_TX_HCTRL_DP0,
|
||||
ACP_SW_AUDIO0_TX_OFFSET_DP0, ACP_SW_AUDIO0_TX_CHANNEL_ENABLE_DP0},
|
||||
{ACP_SW_AUDIO1_TX_FRAME_FORMAT, ACP_SW_AUDIO1_TX_SAMPLEINTERVAL, ACP_SW_AUDIO1_TX_HCTRL,
|
||||
@ -237,7 +237,7 @@ static struct sdw_manager_dp_reg sdw0_manager_dp_reg[AMD_SDW0_MAX_DAI] = {
|
||||
ACP_SW_AUDIO2_RX_OFFSET, ACP_SW_AUDIO2_RX_CHANNEL_ENABLE_DP0},
|
||||
};
|
||||
|
||||
static struct sdw_manager_dp_reg sdw1_manager_dp_reg[AMD_SDW1_MAX_DAI] = {
|
||||
static struct sdw_manager_dp_reg acp63_sdw1_dp_reg[AMD_ACP63_SDW1_MAX_DAI] = {
|
||||
{ACP_SW_AUDIO1_TX_FRAME_FORMAT, ACP_SW_AUDIO1_TX_SAMPLEINTERVAL, ACP_SW_AUDIO1_TX_HCTRL,
|
||||
ACP_SW_AUDIO1_TX_OFFSET, ACP_SW_AUDIO1_TX_CHANNEL_ENABLE_DP0},
|
||||
{ACP_SW_AUDIO1_RX_FRAME_FORMAT, ACP_SW_AUDIO1_RX_SAMPLEINTERVAL, ACP_SW_AUDIO1_RX_HCTRL,
|
||||
|
@ -27,6 +27,7 @@
|
||||
#define ACP_SDW0 0
|
||||
#define ACP_SDW1 1
|
||||
#define AMD_SDW_MAX_MANAGER_COUNT 2
|
||||
#define ACP63_PCI_REV_ID 0x63
|
||||
|
||||
struct acp_sdw_pdata {
|
||||
u16 instance;
|
||||
|
Loading…
Reference in New Issue
Block a user