mbox series

[00/20] ASoC/soundwire: add support for ACE2.x

Message ID 20230323054452.1543233-1-yung-chuan.liao@linux.intel.com
Headers show
Series ASoC/soundwire: add support for ACE2.x | expand

Message

Liao, Bard March 23, 2023, 5:44 a.m. UTC
This series uses the abstraction added in past kernel cycles to provide
support for the ACE2.x integration. The existing SHIM and Cadence
registers are now split in 3 (SHIM, IP, SHIM vendor-specific), with some
parts also moved to the HDaudio Extended Multi link structures. Nothing
fundamentally different except for the register map.

This series only provides the basic mechanisms to expose SoundWire-based
DAIs. The PCI parts and DSP management will be contributed later, and the
DAI ops are now empty as well.

The change is mainly on SoundWire. It would be better to go through
SoundWire tree.

Pierre-Louis Bossart (20):
  ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake
  soundwire: intel: add ACE2.x SHIM definitions
  soundwire: intel_ace2x: add empty new ops for LunarLake
  soundwire/ASOC: Intel: update offsets for LunarLake
  soundwire: intel/cadence: set ip_offset at run-time
  ASoC/soundwire: intel: pass hdac_bus pointer for link management
  soundwire: intel: add eml_lock in the interface for new platforms
  ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer
  soundwire: intel_init: use eml_lock parameter
  soundwire: intel_ace2x: add debugfs support
  soundwire: intel_ace2x: add link power-up/down helpers
  soundwire: intel_ace2x: set SYNCPRD before powering-up
  soundwire: intel_ace2x: configure link PHY
  soundwire: intel_ace2x: add DAI registration
  soundwire: intel_ace2x: add sync_arm/sync_go helpers
  soundwire: intel_ace2x: use common helpers for bus start/stop
  soundwire: intel_ace2x: enable wake support
  soundwire: intel_ace2x: add check_cmdsync_unlocked helper
  soundwire: bus: add new manager callback to deal with peripheral
    enumeration
  soundwire: intel_ace2x: add new_peripheral_assigned callback

 drivers/soundwire/Makefile              |   3 +-
 drivers/soundwire/bus.c                 |   3 +
 drivers/soundwire/cadence_master.h      |   2 +
 drivers/soundwire/intel.h               |  16 +
 drivers/soundwire/intel_ace2x.c         | 390 ++++++++++++++++++++++++
 drivers/soundwire/intel_ace2x_debugfs.c | 147 +++++++++
 drivers/soundwire/intel_auxdevice.c     |  17 ++
 drivers/soundwire/intel_init.c          |  21 +-
 include/linux/soundwire/sdw.h           |   3 +-
 include/linux/soundwire/sdw_intel.h     |  88 ++++++
 sound/soc/sof/intel/hda.c               |  31 +-
 sound/soc/sof/intel/shim.h              |   1 +
 12 files changed, 711 insertions(+), 11 deletions(-)
 create mode 100644 drivers/soundwire/intel_ace2x.c
 create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c

Comments

Liao, Bard March 23, 2023, 2:15 p.m. UTC | #1
The patches will not compile due to missed dependency but welcome review
on the code changes.

> -----Original Message-----
> From: Bard Liao <yung-chuan.liao@linux.intel.com>
> Sent: Thursday, March 23, 2023 1:45 PM
> To: alsa-devel@alsa-project.org; vkoul@kernel.org; broonie@kernel.org
> Cc: vinod.koul@linaro.org; linux-kernel@vger.kernel.org; pierre-
> louis.bossart@linux.intel.com; Liao, Bard <bard.liao@intel.com>;
> tiwai@suse.de
> Subject: [PATCH 00/20] ASoC/soundwire: add support for ACE2.x
> 
> This series uses the abstraction added in past kernel cycles to provide
> support for the ACE2.x integration. The existing SHIM and Cadence
> registers are now split in 3 (SHIM, IP, SHIM vendor-specific), with some
> parts also moved to the HDaudio Extended Multi link structures. Nothing
> fundamentally different except for the register map.
> 
> This series only provides the basic mechanisms to expose SoundWire-based
> DAIs. The PCI parts and DSP management will be contributed later, and the
> DAI ops are now empty as well.
> 
> The change is mainly on SoundWire. It would be better to go through
> SoundWire tree.
> 
> Pierre-Louis Bossart (20):
>   ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake
>   soundwire: intel: add ACE2.x SHIM definitions
>   soundwire: intel_ace2x: add empty new ops for LunarLake
>   soundwire/ASOC: Intel: update offsets for LunarLake
>   soundwire: intel/cadence: set ip_offset at run-time
>   ASoC/soundwire: intel: pass hdac_bus pointer for link management
>   soundwire: intel: add eml_lock in the interface for new platforms
>   ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer
>   soundwire: intel_init: use eml_lock parameter
>   soundwire: intel_ace2x: add debugfs support
>   soundwire: intel_ace2x: add link power-up/down helpers
>   soundwire: intel_ace2x: set SYNCPRD before powering-up
>   soundwire: intel_ace2x: configure link PHY
>   soundwire: intel_ace2x: add DAI registration
>   soundwire: intel_ace2x: add sync_arm/sync_go helpers
>   soundwire: intel_ace2x: use common helpers for bus start/stop
>   soundwire: intel_ace2x: enable wake support
>   soundwire: intel_ace2x: add check_cmdsync_unlocked helper
>   soundwire: bus: add new manager callback to deal with peripheral
>     enumeration
>   soundwire: intel_ace2x: add new_peripheral_assigned callback
> 
>  drivers/soundwire/Makefile              |   3 +-
>  drivers/soundwire/bus.c                 |   3 +
>  drivers/soundwire/cadence_master.h      |   2 +
>  drivers/soundwire/intel.h               |  16 +
>  drivers/soundwire/intel_ace2x.c         | 390 ++++++++++++++++++++++++
>  drivers/soundwire/intel_ace2x_debugfs.c | 147 +++++++++
>  drivers/soundwire/intel_auxdevice.c     |  17 ++
>  drivers/soundwire/intel_init.c          |  21 +-
>  include/linux/soundwire/sdw.h           |   3 +-
>  include/linux/soundwire/sdw_intel.h     |  88 ++++++
>  sound/soc/sof/intel/hda.c               |  31 +-
>  sound/soc/sof/intel/shim.h              |   1 +
>  12 files changed, 711 insertions(+), 11 deletions(-)
>  create mode 100644 drivers/soundwire/intel_ace2x.c
>  create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c
> 
> --
> 2.25.1
Mark Brown March 23, 2023, 2:18 p.m. UTC | #2
On Thu, Mar 23, 2023 at 01:44:36PM +0800, Bard Liao wrote:
> From: Pierre-Louis Bossart <pierre-louis.bossart@linux.intel.com>
> 
> The previous settings are not applicable, use a flag to determine what
> the register layout is.

Acked-by: Mark Brown <broonie@kernel.org>
Vinod Koul April 12, 2023, 10:07 a.m. UTC | #3
On 23-03-23, 13:44, Bard Liao wrote:
> This series uses the abstraction added in past kernel cycles to provide
> support for the ACE2.x integration. The existing SHIM and Cadence

ACE2..?

> registers are now split in 3 (SHIM, IP, SHIM vendor-specific), with some
> parts also moved to the HDaudio Extended Multi link structures. Nothing
> fundamentally different except for the register map.
> 
> This series only provides the basic mechanisms to expose SoundWire-based
> DAIs. The PCI parts and DSP management will be contributed later, and the
> DAI ops are now empty as well.
> 
> The change is mainly on SoundWire. It would be better to go through
> SoundWire tree.
> 
> Pierre-Louis Bossart (20):
>   ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake
>   soundwire: intel: add ACE2.x SHIM definitions
>   soundwire: intel_ace2x: add empty new ops for LunarLake
>   soundwire/ASOC: Intel: update offsets for LunarLake
>   soundwire: intel/cadence: set ip_offset at run-time
>   ASoC/soundwire: intel: pass hdac_bus pointer for link management
>   soundwire: intel: add eml_lock in the interface for new platforms
>   ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer
>   soundwire: intel_init: use eml_lock parameter
>   soundwire: intel_ace2x: add debugfs support
>   soundwire: intel_ace2x: add link power-up/down helpers
>   soundwire: intel_ace2x: set SYNCPRD before powering-up
>   soundwire: intel_ace2x: configure link PHY
>   soundwire: intel_ace2x: add DAI registration
>   soundwire: intel_ace2x: add sync_arm/sync_go helpers
>   soundwire: intel_ace2x: use common helpers for bus start/stop
>   soundwire: intel_ace2x: enable wake support
>   soundwire: intel_ace2x: add check_cmdsync_unlocked helper
>   soundwire: bus: add new manager callback to deal with peripheral
>     enumeration
>   soundwire: intel_ace2x: add new_peripheral_assigned callback
> 
>  drivers/soundwire/Makefile              |   3 +-
>  drivers/soundwire/bus.c                 |   3 +
>  drivers/soundwire/cadence_master.h      |   2 +
>  drivers/soundwire/intel.h               |  16 +
>  drivers/soundwire/intel_ace2x.c         | 390 ++++++++++++++++++++++++
>  drivers/soundwire/intel_ace2x_debugfs.c | 147 +++++++++
>  drivers/soundwire/intel_auxdevice.c     |  17 ++
>  drivers/soundwire/intel_init.c          |  21 +-
>  include/linux/soundwire/sdw.h           |   3 +-
>  include/linux/soundwire/sdw_intel.h     |  88 ++++++
>  sound/soc/sof/intel/hda.c               |  31 +-
>  sound/soc/sof/intel/shim.h              |   1 +
>  12 files changed, 711 insertions(+), 11 deletions(-)
>  create mode 100644 drivers/soundwire/intel_ace2x.c
>  create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c
> 
> -- 
> 2.25.1
Pierre-Louis Bossart April 12, 2023, 2:11 p.m. UTC | #4
On 4/12/23 05:07, Vinod Koul wrote:
> On 23-03-23, 13:44, Bard Liao wrote:
>> This series uses the abstraction added in past kernel cycles to provide
>> support for the ACE2.x integration. The existing SHIM and Cadence
> 
> ACE2..?

Not sure I get the comment, this refers to the IP version.

ACE 2.0 IP used in LunarLake, x refers to future TDB versions.

BTW this depends on the series "[PATCH v2 00/18] ASoC: SOF: Intel:
hda-mlink: HDaudio multi-link extension update" applied yesterday by
Mark. It'd be really nice if we can have this in 6.4-rc1 to continue
adding the rest of the Lunar Lake patches.

We tried to limit the number of changes impacting both ASoC and
SoundWire subsystems but there's mechanically 2 merges needed (ASoC ->
SoundWire for the hda-mlink dependency and SoundWire->ASoC for the
interface changes below).

> 
>> registers are now split in 3 (SHIM, IP, SHIM vendor-specific), with some
>> parts also moved to the HDaudio Extended Multi link structures. Nothing
>> fundamentally different except for the register map.
>>
>> This series only provides the basic mechanisms to expose SoundWire-based
>> DAIs. The PCI parts and DSP management will be contributed later, and the
>> DAI ops are now empty as well.
>>
>> The change is mainly on SoundWire. It would be better to go through
>> SoundWire tree.
>>
>> Pierre-Louis Bossart (20):
>>   ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake
>>   soundwire: intel: add ACE2.x SHIM definitions
>>   soundwire: intel_ace2x: add empty new ops for LunarLake
>>   soundwire/ASOC: Intel: update offsets for LunarLake
>>   soundwire: intel/cadence: set ip_offset at run-time
>>   ASoC/soundwire: intel: pass hdac_bus pointer for link management
>>   soundwire: intel: add eml_lock in the interface for new platforms
>>   ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer
>>   soundwire: intel_init: use eml_lock parameter
>>   soundwire: intel_ace2x: add debugfs support
>>   soundwire: intel_ace2x: add link power-up/down helpers
>>   soundwire: intel_ace2x: set SYNCPRD before powering-up
>>   soundwire: intel_ace2x: configure link PHY
>>   soundwire: intel_ace2x: add DAI registration
>>   soundwire: intel_ace2x: add sync_arm/sync_go helpers
>>   soundwire: intel_ace2x: use common helpers for bus start/stop
>>   soundwire: intel_ace2x: enable wake support
>>   soundwire: intel_ace2x: add check_cmdsync_unlocked helper
>>   soundwire: bus: add new manager callback to deal with peripheral
>>     enumeration
>>   soundwire: intel_ace2x: add new_peripheral_assigned callback
>>
>>  drivers/soundwire/Makefile              |   3 +-
>>  drivers/soundwire/bus.c                 |   3 +
>>  drivers/soundwire/cadence_master.h      |   2 +
>>  drivers/soundwire/intel.h               |  16 +
>>  drivers/soundwire/intel_ace2x.c         | 390 ++++++++++++++++++++++++
>>  drivers/soundwire/intel_ace2x_debugfs.c | 147 +++++++++
>>  drivers/soundwire/intel_auxdevice.c     |  17 ++
>>  drivers/soundwire/intel_init.c          |  21 +-
>>  include/linux/soundwire/sdw.h           |   3 +-
>>  include/linux/soundwire/sdw_intel.h     |  88 ++++++
>>  sound/soc/sof/intel/hda.c               |  31 +-
>>  sound/soc/sof/intel/shim.h              |   1 +
>>  12 files changed, 711 insertions(+), 11 deletions(-)
>>  create mode 100644 drivers/soundwire/intel_ace2x.c
>>  create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c
>>
>> -- 
>> 2.25.1
>
Vinod Koul April 12, 2023, 3:22 p.m. UTC | #5
On 12-04-23, 09:11, Pierre-Louis Bossart wrote:
> 
> 
> On 4/12/23 05:07, Vinod Koul wrote:
> > On 23-03-23, 13:44, Bard Liao wrote:
> >> This series uses the abstraction added in past kernel cycles to provide
> >> support for the ACE2.x integration. The existing SHIM and Cadence
> > 
> > ACE2..?
> 
> Not sure I get the comment, this refers to the IP version.

What does ACE mean, it should be expanded so that people know what it
might refer to..?

> 
> ACE 2.0 IP used in LunarLake, x refers to future TDB versions.
> 
> BTW this depends on the series "[PATCH v2 00/18] ASoC: SOF: Intel:
> hda-mlink: HDaudio multi-link extension update" applied yesterday by
> Mark. It'd be really nice if we can have this in 6.4-rc1 to continue
> adding the rest of the Lunar Lake patches.

That should be mentioned in cover, I can ack this if okay and Mark might
apply..? or u folks have something else in mind?

> 
> We tried to limit the number of changes impacting both ASoC and
> SoundWire subsystems but there's mechanically 2 merges needed (ASoC ->
> SoundWire for the hda-mlink dependency and SoundWire->ASoC for the
> interface changes below).
> 
> > 
> >> registers are now split in 3 (SHIM, IP, SHIM vendor-specific), with some
> >> parts also moved to the HDaudio Extended Multi link structures. Nothing
> >> fundamentally different except for the register map.
> >>
> >> This series only provides the basic mechanisms to expose SoundWire-based
> >> DAIs. The PCI parts and DSP management will be contributed later, and the
> >> DAI ops are now empty as well.
> >>
> >> The change is mainly on SoundWire. It would be better to go through
> >> SoundWire tree.
> >>
> >> Pierre-Louis Bossart (20):
> >>   ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake
> >>   soundwire: intel: add ACE2.x SHIM definitions
> >>   soundwire: intel_ace2x: add empty new ops for LunarLake
> >>   soundwire/ASOC: Intel: update offsets for LunarLake
> >>   soundwire: intel/cadence: set ip_offset at run-time
> >>   ASoC/soundwire: intel: pass hdac_bus pointer for link management
> >>   soundwire: intel: add eml_lock in the interface for new platforms
> >>   ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer
> >>   soundwire: intel_init: use eml_lock parameter
> >>   soundwire: intel_ace2x: add debugfs support
> >>   soundwire: intel_ace2x: add link power-up/down helpers
> >>   soundwire: intel_ace2x: set SYNCPRD before powering-up
> >>   soundwire: intel_ace2x: configure link PHY
> >>   soundwire: intel_ace2x: add DAI registration
> >>   soundwire: intel_ace2x: add sync_arm/sync_go helpers
> >>   soundwire: intel_ace2x: use common helpers for bus start/stop
> >>   soundwire: intel_ace2x: enable wake support
> >>   soundwire: intel_ace2x: add check_cmdsync_unlocked helper
> >>   soundwire: bus: add new manager callback to deal with peripheral
> >>     enumeration
> >>   soundwire: intel_ace2x: add new_peripheral_assigned callback
> >>
> >>  drivers/soundwire/Makefile              |   3 +-
> >>  drivers/soundwire/bus.c                 |   3 +
> >>  drivers/soundwire/cadence_master.h      |   2 +
> >>  drivers/soundwire/intel.h               |  16 +
> >>  drivers/soundwire/intel_ace2x.c         | 390 ++++++++++++++++++++++++
> >>  drivers/soundwire/intel_ace2x_debugfs.c | 147 +++++++++
> >>  drivers/soundwire/intel_auxdevice.c     |  17 ++
> >>  drivers/soundwire/intel_init.c          |  21 +-
> >>  include/linux/soundwire/sdw.h           |   3 +-
> >>  include/linux/soundwire/sdw_intel.h     |  88 ++++++
> >>  sound/soc/sof/intel/hda.c               |  31 +-
> >>  sound/soc/sof/intel/shim.h              |   1 +
> >>  12 files changed, 711 insertions(+), 11 deletions(-)
> >>  create mode 100644 drivers/soundwire/intel_ace2x.c
> >>  create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c
> >>
> >> -- 
> >> 2.25.1
> >
Pierre-Louis Bossart April 12, 2023, 4:06 p.m. UTC | #6
On 4/12/23 10:22, Vinod Koul wrote:
> On 12-04-23, 09:11, Pierre-Louis Bossart wrote:
>>
>>
>> On 4/12/23 05:07, Vinod Koul wrote:
>>> On 23-03-23, 13:44, Bard Liao wrote:
>>>> This series uses the abstraction added in past kernel cycles to provide
>>>> support for the ACE2.x integration. The existing SHIM and Cadence
>>>
>>> ACE2..?
>>
>> Not sure I get the comment, this refers to the IP version.
> 
> What does ACE mean, it should be expanded so that people know what it
> might refer to..?

I think at one point it stood for "Audio Converged Engine", which
doesn't really clarify anything, does it? It's easier for most people to
just refer to cAVS or ACE as a type of IP followed by a version number,
and use the mapping between the IP version and end-user device in the
PCI descriptors.

>> ACE 2.0 IP used in LunarLake, x refers to future TDB versions.
>>
>> BTW this depends on the series "[PATCH v2 00/18] ASoC: SOF: Intel:
>> hda-mlink: HDaudio multi-link extension update" applied yesterday by
>> Mark. It'd be really nice if we can have this in 6.4-rc1 to continue
>> adding the rest of the Lunar Lake patches.
> 
> That should be mentioned in cover, 

Yes the cover and some patches miss details, it's hard when you have
such a long series to be clear and avoid repetition at the same time...

> I can ack this if okay and Mark might apply..? or u folks have
something else in mind?

that would be ideal, but unfortunately this series will not apply as is
on Mark's for-next branch. I just checked, there are multiple conflicts
with the intel_bus_common stuff which is missing in Mark's tree.

Mark also provided his Acked-by tag already for patches 1/4/6/8, so I
was under the impression that these patches would be merged  through the
soundwire tree.

I think what's missing is a tag from Mark to make sure the hda-mlink
dependencies are in the soundwire tree?

>>
>> We tried to limit the number of changes impacting both ASoC and
>> SoundWire subsystems but there's mechanically 2 merges needed (ASoC ->
>> SoundWire for the hda-mlink dependency and SoundWire->ASoC for the
>> interface changes below).
>>
>>>
>>>> registers are now split in 3 (SHIM, IP, SHIM vendor-specific), with some
>>>> parts also moved to the HDaudio Extended Multi link structures. Nothing
>>>> fundamentally different except for the register map.
>>>>
>>>> This series only provides the basic mechanisms to expose SoundWire-based
>>>> DAIs. The PCI parts and DSP management will be contributed later, and the
>>>> DAI ops are now empty as well.
>>>>
>>>> The change is mainly on SoundWire. It would be better to go through
>>>> SoundWire tree.
>>>>
>>>> Pierre-Louis Bossart (20):
>>>>   ASoC: SOF: Intel: shim: add enum for ACE 2.0 IP used in LunarLake
>>>>   soundwire: intel: add ACE2.x SHIM definitions
>>>>   soundwire: intel_ace2x: add empty new ops for LunarLake
>>>>   soundwire/ASOC: Intel: update offsets for LunarLake
>>>>   soundwire: intel/cadence: set ip_offset at run-time
>>>>   ASoC/soundwire: intel: pass hdac_bus pointer for link management
>>>>   soundwire: intel: add eml_lock in the interface for new platforms
>>>>   ASoC: SOF: Intel: hda: retrieve SoundWire eml_lock and pass pointer
>>>>   soundwire: intel_init: use eml_lock parameter
>>>>   soundwire: intel_ace2x: add debugfs support
>>>>   soundwire: intel_ace2x: add link power-up/down helpers
>>>>   soundwire: intel_ace2x: set SYNCPRD before powering-up
>>>>   soundwire: intel_ace2x: configure link PHY
>>>>   soundwire: intel_ace2x: add DAI registration
>>>>   soundwire: intel_ace2x: add sync_arm/sync_go helpers
>>>>   soundwire: intel_ace2x: use common helpers for bus start/stop
>>>>   soundwire: intel_ace2x: enable wake support
>>>>   soundwire: intel_ace2x: add check_cmdsync_unlocked helper
>>>>   soundwire: bus: add new manager callback to deal with peripheral
>>>>     enumeration
>>>>   soundwire: intel_ace2x: add new_peripheral_assigned callback
>>>>
>>>>  drivers/soundwire/Makefile              |   3 +-
>>>>  drivers/soundwire/bus.c                 |   3 +
>>>>  drivers/soundwire/cadence_master.h      |   2 +
>>>>  drivers/soundwire/intel.h               |  16 +
>>>>  drivers/soundwire/intel_ace2x.c         | 390 ++++++++++++++++++++++++
>>>>  drivers/soundwire/intel_ace2x_debugfs.c | 147 +++++++++
>>>>  drivers/soundwire/intel_auxdevice.c     |  17 ++
>>>>  drivers/soundwire/intel_init.c          |  21 +-
>>>>  include/linux/soundwire/sdw.h           |   3 +-
>>>>  include/linux/soundwire/sdw_intel.h     |  88 ++++++
>>>>  sound/soc/sof/intel/hda.c               |  31 +-
>>>>  sound/soc/sof/intel/shim.h              |   1 +
>>>>  12 files changed, 711 insertions(+), 11 deletions(-)
>>>>  create mode 100644 drivers/soundwire/intel_ace2x.c
>>>>  create mode 100644 drivers/soundwire/intel_ace2x_debugfs.c
>>>>
>>>> -- 
>>>> 2.25.1
>>>
>