Skip to content

Commit 8aeb7d2

Browse files
ujfalusibroonie
authored andcommitted
ASoC: SOF: Intel: Create ptl.c as placeholder for Panther Lake features
Create a minimal placeholder to make it possible to add code to handle the new features of Panther Lake compared to MTL/LNL. Signed-off-by: Peter Ujfalusi <peter.ujfalusi@linux.intel.com> Reviewed-by: Ranjani Sridharan <ranjani.sridharan@linux.intel.com> Reviewed-by: Liam Girdwood <liam.r.girdwood@intel.com> Reviewed-by: Kai Vehmanen <kai.vehmanen@linux.intel.com> Link: https://patch.msgid.link/20250307112816.1495-5-peter.ujfalusi@linux.intel.com Signed-off-by: Mark Brown <broonie@kernel.org>
1 parent 8041622 commit 8aeb7d2

File tree

6 files changed

+79
-32
lines changed

6 files changed

+79
-32
lines changed

sound/soc/sof/intel/Makefile

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ snd-sof-pci-intel-icl-y := pci-icl.o icl.o
3434
snd-sof-pci-intel-tgl-y := pci-tgl.o tgl.o
3535
snd-sof-pci-intel-mtl-y := pci-mtl.o mtl.o
3636
snd-sof-pci-intel-lnl-y := pci-lnl.o lnl.o
37-
snd-sof-pci-intel-ptl-y := pci-ptl.o
37+
snd-sof-pci-intel-ptl-y := pci-ptl.o ptl.o
3838

3939
obj-$(CONFIG_SND_SOC_SOF_MERRIFIELD) += snd-sof-pci-intel-tng.o
4040
obj-$(CONFIG_SND_SOC_SOF_INTEL_SKL) += snd-sof-pci-intel-skl.o

sound/soc/sof/intel/lnl.c

Lines changed: 6 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -128,20 +128,22 @@ int sof_lnl_set_ops(struct snd_sof_dev *sdev, struct snd_sof_dsp_ops *dsp_ops)
128128
EXPORT_SYMBOL_NS(sof_lnl_set_ops, "SND_SOC_SOF_INTEL_LNL");
129129

130130
/* Check if an SDW IRQ occurred */
131-
static bool lnl_dsp_check_sdw_irq(struct snd_sof_dev *sdev)
131+
bool lnl_dsp_check_sdw_irq(struct snd_sof_dev *sdev)
132132
{
133133
struct hdac_bus *bus = sof_to_bus(sdev);
134134

135135
return hdac_bus_eml_check_interrupt(bus, true, AZX_REG_ML_LEPTR_ID_SDW);
136136
}
137+
EXPORT_SYMBOL_NS(lnl_dsp_check_sdw_irq, "SND_SOC_SOF_INTEL_LNL");
137138

138-
static int lnl_dsp_disable_interrupts(struct snd_sof_dev *sdev)
139+
int lnl_dsp_disable_interrupts(struct snd_sof_dev *sdev)
139140
{
140141
mtl_disable_ipc_interrupts(sdev);
141142
return mtl_enable_interrupts(sdev, false);
142143
}
144+
EXPORT_SYMBOL_NS(lnl_dsp_disable_interrupts, "SND_SOC_SOF_INTEL_LNL");
143145

144-
static bool lnl_sdw_check_wakeen_irq(struct snd_sof_dev *sdev)
146+
bool lnl_sdw_check_wakeen_irq(struct snd_sof_dev *sdev)
145147
{
146148
struct hdac_bus *bus = sof_to_bus(sdev);
147149
u16 wake_sts;
@@ -157,6 +159,7 @@ static bool lnl_sdw_check_wakeen_irq(struct snd_sof_dev *sdev)
157159
/* filter out the range of SDIs that can be set for SoundWire */
158160
return wake_sts & GENMASK(SDW_MAX_DEVICES, SDW_INTEL_DEV_NUM_IDA_MIN);
159161
}
162+
EXPORT_SYMBOL_NS(lnl_sdw_check_wakeen_irq, "SND_SOC_SOF_INTEL_LNL");
160163

161164
const struct sof_intel_dsp_desc lnl_chip_info = {
162165
.cores_num = 5,
@@ -182,29 +185,5 @@ const struct sof_intel_dsp_desc lnl_chip_info = {
182185
.hw_ip_version = SOF_INTEL_ACE_2_0,
183186
};
184187

185-
const struct sof_intel_dsp_desc ptl_chip_info = {
186-
.cores_num = 5,
187-
.init_core_mask = BIT(0),
188-
.host_managed_cores_mask = BIT(0),
189-
.ipc_req = MTL_DSP_REG_HFIPCXIDR,
190-
.ipc_req_mask = MTL_DSP_REG_HFIPCXIDR_BUSY,
191-
.ipc_ack = MTL_DSP_REG_HFIPCXIDA,
192-
.ipc_ack_mask = MTL_DSP_REG_HFIPCXIDA_DONE,
193-
.ipc_ctl = MTL_DSP_REG_HFIPCXCTL,
194-
.rom_status_reg = LNL_DSP_REG_HFDSC,
195-
.rom_init_timeout = 300,
196-
.ssp_count = MTL_SSP_COUNT,
197-
.d0i3_offset = MTL_HDA_VS_D0I3C,
198-
.read_sdw_lcount = hda_sdw_check_lcount_ext,
199-
.check_sdw_irq = lnl_dsp_check_sdw_irq,
200-
.check_sdw_wakeen_irq = lnl_sdw_check_wakeen_irq,
201-
.check_ipc_irq = mtl_dsp_check_ipc_irq,
202-
.cl_init = mtl_dsp_cl_init,
203-
.power_down_dsp = mtl_power_down_dsp,
204-
.disable_interrupts = lnl_dsp_disable_interrupts,
205-
.hw_ip_version = SOF_INTEL_ACE_3_0,
206-
};
207-
EXPORT_SYMBOL_NS(ptl_chip_info, "SND_SOC_SOF_INTEL_LNL");
208-
209188
MODULE_IMPORT_NS("SND_SOC_SOF_INTEL_MTL");
210189
MODULE_IMPORT_NS("SND_SOC_SOF_HDA_MLINK");

sound/soc/sof/intel/lnl.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,4 +14,8 @@
1414

1515
int sof_lnl_set_ops(struct snd_sof_dev *sdev, struct snd_sof_dsp_ops *dsp_ops);
1616

17+
bool lnl_dsp_check_sdw_irq(struct snd_sof_dev *sdev);
18+
int lnl_dsp_disable_interrupts(struct snd_sof_dev *sdev);
19+
bool lnl_sdw_check_wakeen_irq(struct snd_sof_dev *sdev);
20+
1721
#endif /* __SOF_INTEL_LNL_H */

sound/soc/sof/intel/pci-ptl.c

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -16,14 +16,14 @@
1616

1717
/* platform specific devices */
1818
#include "hda.h"
19-
#include "lnl.h"
19+
#include "ptl.h"
2020

2121
/* PantherLake ops */
2222
static struct snd_sof_dsp_ops sof_ptl_ops;
2323

2424
static int sof_ptl_ops_init(struct snd_sof_dev *sdev)
2525
{
26-
return sof_lnl_set_ops(sdev, &sof_ptl_ops);
26+
return sof_ptl_set_ops(sdev, &sof_ptl_ops);
2727
}
2828

2929
static const struct sof_dev_desc ptl_desc = {
@@ -80,6 +80,4 @@ MODULE_LICENSE("Dual BSD/GPL");
8080
MODULE_DESCRIPTION("SOF support for PantherLake platforms");
8181
MODULE_IMPORT_NS("SND_SOC_SOF_INTEL_HDA_GENERIC");
8282
MODULE_IMPORT_NS("SND_SOC_SOF_INTEL_HDA_COMMON");
83-
MODULE_IMPORT_NS("SND_SOC_SOF_INTEL_LNL");
84-
MODULE_IMPORT_NS("SND_SOC_SOF_HDA_MLINK");
8583
MODULE_IMPORT_NS("SND_SOC_SOF_PCI_DEV");

sound/soc/sof/intel/ptl.c

Lines changed: 52 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,52 @@
1+
// SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause)
2+
//
3+
// Copyright(c) 2025 Intel Corporation
4+
5+
/*
6+
* Hardware interface for audio DSP on PantherLake.
7+
*/
8+
9+
#include <sound/hda_register.h>
10+
#include <sound/hda-mlink.h>
11+
#include <sound/sof/ipc4/header.h>
12+
#include "../ipc4-priv.h"
13+
#include "../ops.h"
14+
#include "hda.h"
15+
#include "hda-ipc.h"
16+
#include "../sof-audio.h"
17+
#include "mtl.h"
18+
#include "lnl.h"
19+
#include "ptl.h"
20+
21+
int sof_ptl_set_ops(struct snd_sof_dev *sdev, struct snd_sof_dsp_ops *dsp_ops)
22+
{
23+
return sof_lnl_set_ops(sdev, dsp_ops);
24+
}
25+
EXPORT_SYMBOL_NS(sof_ptl_set_ops, "SND_SOC_SOF_INTEL_PTL");
26+
27+
const struct sof_intel_dsp_desc ptl_chip_info = {
28+
.cores_num = 5,
29+
.init_core_mask = BIT(0),
30+
.host_managed_cores_mask = BIT(0),
31+
.ipc_req = MTL_DSP_REG_HFIPCXIDR,
32+
.ipc_req_mask = MTL_DSP_REG_HFIPCXIDR_BUSY,
33+
.ipc_ack = MTL_DSP_REG_HFIPCXIDA,
34+
.ipc_ack_mask = MTL_DSP_REG_HFIPCXIDA_DONE,
35+
.ipc_ctl = MTL_DSP_REG_HFIPCXCTL,
36+
.rom_status_reg = LNL_DSP_REG_HFDSC,
37+
.rom_init_timeout = 300,
38+
.ssp_count = MTL_SSP_COUNT,
39+
.d0i3_offset = MTL_HDA_VS_D0I3C,
40+
.read_sdw_lcount = hda_sdw_check_lcount_ext,
41+
.check_sdw_irq = lnl_dsp_check_sdw_irq,
42+
.check_sdw_wakeen_irq = lnl_sdw_check_wakeen_irq,
43+
.check_ipc_irq = mtl_dsp_check_ipc_irq,
44+
.cl_init = mtl_dsp_cl_init,
45+
.power_down_dsp = mtl_power_down_dsp,
46+
.disable_interrupts = lnl_dsp_disable_interrupts,
47+
.hw_ip_version = SOF_INTEL_ACE_3_0,
48+
};
49+
50+
MODULE_IMPORT_NS("SND_SOC_SOF_INTEL_MTL");
51+
MODULE_IMPORT_NS("SND_SOC_SOF_INTEL_LNL");
52+
MODULE_IMPORT_NS("SND_SOC_SOF_HDA_MLINK");

sound/soc/sof/intel/ptl.h

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
/* SPDX-License-Identifier: (GPL-2.0-only OR BSD-3-Clause) */
2+
/*
3+
* This file is provided under a dual BSD/GPLv2 license. When using or
4+
* redistributing this file, you may do so under either license.
5+
*
6+
* Copyright(c) 2025 Intel Corporation
7+
*/
8+
9+
#ifndef __SOF_INTEL_PTL_H
10+
#define __SOF_INTEL_PTL_H
11+
12+
int sof_ptl_set_ops(struct snd_sof_dev *sdev, struct snd_sof_dsp_ops *dsp_ops);
13+
14+
#endif /* __SOF_INTEL_PTL_H */

0 commit comments

Comments
 (0)