Loading sound/soc/sof/amd/acp-dsp-offset.h +2 −0 Original line number Diff line number Diff line Loading @@ -46,12 +46,14 @@ #define ACPAXI2AXI_ATU_BASE_ADDR_GRP_8 0xC3C #define ACPAXI2AXI_ATU_CTRL 0xC40 #define ACP_SOFT_RESET 0x1000 #define ACP_CONTROL 0x1004 #define ACP_I2S_PIN_CONFIG 0x1400 /* Registers from ACP_PGFSM block */ #define ACP_PGFSM_CONTROL 0x141C #define ACP_PGFSM_STATUS 0x1420 #define ACP_CLKMUX_SEL 0x1424 /* Registers from ACP_INTR block */ #define ACP_EXTERNAL_INTR_ENB 0x1800 Loading sound/soc/sof/amd/acp.c +36 −0 Original line number Diff line number Diff line Loading @@ -413,10 +413,46 @@ static int acp_init(struct snd_sof_dev *sdev) dev_err(sdev->dev, "ACP power on failed\n"); return ret; } snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CONTROL, 0x01); /* Reset */ return acp_reset(sdev); } int amd_sof_acp_suspend(struct snd_sof_dev *sdev, u32 target_state) { int ret; ret = acp_reset(sdev); if (ret) { dev_err(sdev->dev, "ACP Reset failed\n"); return ret; } snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CONTROL, 0x00); return 0; } EXPORT_SYMBOL_NS(amd_sof_acp_suspend, SND_SOC_SOF_AMD_COMMON); int amd_sof_acp_resume(struct snd_sof_dev *sdev) { int ret; ret = acp_init(sdev); if (ret) { dev_err(sdev->dev, "ACP Init failed\n"); return ret; } snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CLKMUX_SEL, 0x03); ret = acp_memory_init(sdev); return ret; } EXPORT_SYMBOL_NS(amd_sof_acp_resume, SND_SOC_SOF_AMD_COMMON); int amd_sof_acp_probe(struct snd_sof_dev *sdev) { struct pci_dev *pci = to_pci_dev(sdev->dev); Loading sound/soc/sof/amd/acp.h +4 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,10 @@ int acp_sof_trace_init(struct snd_sof_dev *sdev, struct snd_dma_buffer *dmab, struct sof_ipc_dma_trace_params_ext *dtrace_params); int acp_sof_trace_release(struct snd_sof_dev *sdev); /* PM Callbacks */ int amd_sof_acp_suspend(struct snd_sof_dev *sdev, u32 target_state); int amd_sof_acp_resume(struct snd_sof_dev *sdev); struct sof_amd_acp_desc { unsigned int host_bridge_id; }; Loading sound/soc/sof/amd/pci-rn.c +4 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ static const struct sof_amd_acp_desc renoir_chip_info = { static const struct sof_dev_desc renoir_desc = { .machines = snd_soc_acpi_amd_sof_machines, .use_acpi_target_states = true, .resindex_lpe_base = 0, .resindex_pcicfg_base = -1, .resindex_imr_base = -1, Loading Loading @@ -166,6 +167,9 @@ static struct pci_driver snd_sof_pci_amd_rn_driver = { .id_table = rn_pci_ids, .probe = acp_pci_rn_probe, .remove = acp_pci_rn_remove, .driver = { .pm = &sof_pci_pm, }, }; module_pci_driver(snd_sof_pci_amd_rn_driver); Loading sound/soc/sof/amd/renoir.c +4 −0 Original line number Diff line number Diff line Loading @@ -173,6 +173,10 @@ struct snd_sof_dsp_ops sof_renoir_ops = { /* Trace Logger */ .trace_init = acp_sof_trace_init, .trace_release = acp_sof_trace_release, /* PM */ .suspend = amd_sof_acp_suspend, .resume = amd_sof_acp_resume, }; EXPORT_SYMBOL(sof_renoir_ops); Loading Loading
sound/soc/sof/amd/acp-dsp-offset.h +2 −0 Original line number Diff line number Diff line Loading @@ -46,12 +46,14 @@ #define ACPAXI2AXI_ATU_BASE_ADDR_GRP_8 0xC3C #define ACPAXI2AXI_ATU_CTRL 0xC40 #define ACP_SOFT_RESET 0x1000 #define ACP_CONTROL 0x1004 #define ACP_I2S_PIN_CONFIG 0x1400 /* Registers from ACP_PGFSM block */ #define ACP_PGFSM_CONTROL 0x141C #define ACP_PGFSM_STATUS 0x1420 #define ACP_CLKMUX_SEL 0x1424 /* Registers from ACP_INTR block */ #define ACP_EXTERNAL_INTR_ENB 0x1800 Loading
sound/soc/sof/amd/acp.c +36 −0 Original line number Diff line number Diff line Loading @@ -413,10 +413,46 @@ static int acp_init(struct snd_sof_dev *sdev) dev_err(sdev->dev, "ACP power on failed\n"); return ret; } snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CONTROL, 0x01); /* Reset */ return acp_reset(sdev); } int amd_sof_acp_suspend(struct snd_sof_dev *sdev, u32 target_state) { int ret; ret = acp_reset(sdev); if (ret) { dev_err(sdev->dev, "ACP Reset failed\n"); return ret; } snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CONTROL, 0x00); return 0; } EXPORT_SYMBOL_NS(amd_sof_acp_suspend, SND_SOC_SOF_AMD_COMMON); int amd_sof_acp_resume(struct snd_sof_dev *sdev) { int ret; ret = acp_init(sdev); if (ret) { dev_err(sdev->dev, "ACP Init failed\n"); return ret; } snd_sof_dsp_write(sdev, ACP_DSP_BAR, ACP_CLKMUX_SEL, 0x03); ret = acp_memory_init(sdev); return ret; } EXPORT_SYMBOL_NS(amd_sof_acp_resume, SND_SOC_SOF_AMD_COMMON); int amd_sof_acp_probe(struct snd_sof_dev *sdev) { struct pci_dev *pci = to_pci_dev(sdev->dev); Loading
sound/soc/sof/amd/acp.h +4 −0 Original line number Diff line number Diff line Loading @@ -216,6 +216,10 @@ int acp_sof_trace_init(struct snd_sof_dev *sdev, struct snd_dma_buffer *dmab, struct sof_ipc_dma_trace_params_ext *dtrace_params); int acp_sof_trace_release(struct snd_sof_dev *sdev); /* PM Callbacks */ int amd_sof_acp_suspend(struct snd_sof_dev *sdev, u32 target_state); int amd_sof_acp_resume(struct snd_sof_dev *sdev); struct sof_amd_acp_desc { unsigned int host_bridge_id; }; Loading
sound/soc/sof/amd/pci-rn.c +4 −0 Original line number Diff line number Diff line Loading @@ -49,6 +49,7 @@ static const struct sof_amd_acp_desc renoir_chip_info = { static const struct sof_dev_desc renoir_desc = { .machines = snd_soc_acpi_amd_sof_machines, .use_acpi_target_states = true, .resindex_lpe_base = 0, .resindex_pcicfg_base = -1, .resindex_imr_base = -1, Loading Loading @@ -166,6 +167,9 @@ static struct pci_driver snd_sof_pci_amd_rn_driver = { .id_table = rn_pci_ids, .probe = acp_pci_rn_probe, .remove = acp_pci_rn_remove, .driver = { .pm = &sof_pci_pm, }, }; module_pci_driver(snd_sof_pci_amd_rn_driver); Loading
sound/soc/sof/amd/renoir.c +4 −0 Original line number Diff line number Diff line Loading @@ -173,6 +173,10 @@ struct snd_sof_dsp_ops sof_renoir_ops = { /* Trace Logger */ .trace_init = acp_sof_trace_init, .trace_release = acp_sof_trace_release, /* PM */ .suspend = amd_sof_acp_suspend, .resume = amd_sof_acp_resume, }; EXPORT_SYMBOL(sof_renoir_ops); Loading