All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vinod Koul <vinod.koul@intel.com>
To: Mark Brown <broonie@kernel.org>
Cc: liam.r.girdwood@linux.intel.com, patches.audio@intel.com,
	alsa-devel@alsa-project.org
Subject: Re: [PATCH v2 0/9] Add DSP topology management for SKL
Date: Mon, 21 Sep 2015 22:17:45 +0530	[thread overview]
Message-ID: <20150921164745.GO2381@localhost> (raw)
In-Reply-To: <20150921163353.GU30445@sirena.org.uk>


[-- Attachment #1.1.1: Type: text/plain, Size: 870 bytes --]

On Mon, Sep 21, 2015 at 09:33:53AM -0700, Mark Brown wrote:
> On Mon, Sep 21, 2015 at 09:27:39AM +0530, Vinod Koul wrote:
> > We did decide to use DPCM, DAPM and topology here to solve manging the DSP
> > using these frameworks. yes hard coding a simple mixer and two pipes could
> > have made code look easy to follow but then we would be redoing those bits
> > as we scale these to defferent designs.
> 
> Sure, and my point here is that that this process of redoing things
> would most likely be a lot faster since it'd be a lot easier to follow
> which would make the review a lot easier.
> 
> > And to provide what we are trying here I have attached the SKL Topology conf
> > file to give a picture of topology we are trying to build as a reference.
> 
> I think you missed the attachment here...

Oops sorry about that, here you go

-- 
~Vinod

[-- Attachment #1.1.2: skl_i2s.conf --]
[-- Type: text/plain, Size: 13318 bytes --]

SectionControlMixer."media0_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."media1_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."media2_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."media3_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."speech_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."tone_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."dmic01_hifi_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."dmic23_hifi_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."dmic01_voice_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."dmic23_voice_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."codec0_in_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionControlMixer."codec1_in_mixin" {
	index "1"
	
	max "1"
	invert "false"
	no_pm "true"

	channel."fl" {
		reg "-1"
		shift "0"
	}

	channel."fr" {
		reg "-1"
		shift "0"
	}

	ops."ctl" {
		info "64"
		get "64"
		put "64"
	}
}

SectionWidget."codec0_out" {

	index "1"
	type "aif_out"
	no_pm "true"
}

SectionWidget."codec1_out" {

	index "1"
	type "aif_out"
	no_pm "true"
}

SectionWidget."iDisp_out" {

	index "1"
	type "aif_out"
	no_pm "true"
}

SectionWidget."dmic01_hifi" {

	index "1"
	type "aif_in"
	no_pm "true"
}

SectionWidget."dmic23_hifi" {

	index "1"
	type "aif_in"
	no_pm "true"
}

SectionWidget."codec0_in" {

	index "1"
	type "aif_in"
	no_pm "true"
}

SectionWidget."codec1_in" {

	index "1"
	type "aif_in"
	no_pm "true"
}

SectionWidget."media2_in cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "media2_in cpr vmix 0"
}

SectionWidget."media3_in cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "media3_in cpr vmix 0"
}

SectionWidget."media01_out cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "media01_out cpr vmix 0"
}

SectionWidget."codec0_in cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "codec0_in cpr vmix 0"
}

SectionWidget."codec1_in cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "codec1_in cpr vmix 0"
}

SectionWidget."dmic01_hifi cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "dmic01_hifi cpr vmix 0"
}

SectionWidget."dmic23_hifi cpr vmix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "3"
	event_flags "15"
	subseq "0"

	data "dmic23_hifi cpr vmix 0"
}

SectionWidget."codec1_out cpr 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "4"
	subseq "0"

	data "codec1_out cpr 0"
}

SectionWidget."codec0_out cpr 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "4"
	subseq "0"

	data "codec0_out cpr 0"
}

SectionWidget."iDisp_out cpr 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "4"
	subseq "0"

	data "iDisp_out cpr 0"
}

SectionWidget."media0_out cpr 0" {
	index "1"
	type "mixer"
	no_pm "true"
	subseq "0"

	data "media0_out cpr 0"
}

SectionWidget."media2_out cpr 0" {
	index "1"
	type "mixer"
	no_pm "true"
	subseq "0"

	data "media2_out cpr 0"
}

SectionWidget."codec1_out_mixout mix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "1"
	event_flags "15"
	subseq "10"
	
	data "codec1_out_mixout mix 0"

	mixer [
		"media0_mixin"
		"media1_mixin"
		"media2_mixin"
		"media3_mixin"
		"speech_mixin"
		"tone_mixin"
		"dmic01_hifi_mixin"
		"dmic23_hifi_mixin"
		"dmic01_voice_mixin"
		"dmic23_voice_mixin"
		"codec0_in_mixin"
		"codec1_in_mixin"
	]
}

SectionWidget."media0_mixout mix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "1"
	event_flags "15"
	subseq "10"
	
	data "media0_mixout mix 0"

	mixer [
		"media0_mixin"
		"media1_mixin"
		"media2_mixin"
		"media3_mixin"
		"speech_mixin"
		"tone_mixin"
		"dmic01_hifi_mixin"
		"dmic23_hifi_mixin"
		"dmic01_voice_mixin"
		"dmic23_voice_mixin"
		"codec0_in_mixin"
		"codec1_in_mixin"
	]
}

SectionWidget."media2_mixout mix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "1"
	event_flags "15"
	subseq "10"
	
	data "media2_mixout mix 0"

	mixer [
		"media0_mixin"
		"media1_mixin"
		"media2_mixin"
		"media3_mixin"
		"speech_mixin"
		"tone_mixin"
		"dmic01_hifi_mixin"
		"dmic23_hifi_mixin"
		"dmic01_voice_mixin"
		"dmic23_voice_mixin"
		"codec0_in_mixin"
		"codec1_in_mixin"
	]
}

SectionWidget."codec0_out_mixout mix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "1"
	event_flags "15"
	subseq "10"
	
	data "codec0_out_mixout mix 0"

	mixer [
		"media0_mixin"
		"media1_mixin"
		"media2_mixin"
		"media3_mixin"
		"speech_mixin"
		"tone_mixin"
		"dmic01_hifi_mixin"
		"dmic23_hifi_mixin"
		"dmic01_voice_mixin"
		"dmic23_voice_mixin"
		"codec0_in_mixin"
		"codec1_in_mixin"
	]
}

SectionWidget."iDisp_out_mixout mix 0" {
	index "1"
	type "mixer"
	no_pm "true"
	event_type "1"
	event_flags "15"
	subseq "10"
	
	data "iDisp_out_mixout mix 0"

	mixer [
		"media0_mixin"
		"media1_mixin"
		"media2_mixin"
		"media3_mixin"
		"speech_mixin"
		"tone_mixin"
		"dmic01_hifi_mixin"
		"dmic23_hifi_mixin"
		"dmic01_voice_mixin"
		"dmic23_voice_mixin"
		"codec0_in_mixin"
		"codec1_in_mixin"
	]
}

SectionWidget."media2_mixin" {
	index "1"
	type "pga"
	no_pm "true"
	event_type "4"
	event_flags "15"
	subseq "10"

	data "media2_mixin"
}

SectionWidget."dmic01_hifi_mixin" {
	index "1"
	type "pga"
	no_pm "true"
	event_type "4"
	event_flags "15"
	subseq "10"

	data "dmic01_hifi_mixin"
}

SectionWidget."dmic23_hifi_mixin" {
	index "1"
	type "pga"
	no_pm "true"
	event_type "4"
	event_flags "15"
	subseq "10"

	data "dmic23_hifi_mixin"
}

SectionWidget."media3_mixin" {
	index "1"
	type "pga"
	no_pm "true"
	event_type "4"
	event_flags "15"
	subseq "10"

	data "media3_mixin"
}

SectionWidget."codec0_in_mixin" {
	index "1"
	type "pga"
	no_pm "true"
	event_type "4"
	event_flags "15"
	subseq "10"

	data "codec0_in_mixin"
}

SectionWidget."codec1_in_mixin" {
	index "1"
	type "pga"
	no_pm "true"
	event_type "4"
	event_flags "15"
	subseq "10"

	data "codec1_in_mixin"
}

SectionPCMCapabilities."System Playback" {

	formats "S24_LE,S16_LE"
	rate_min "48000"
	rate_max "48000"
	channels_min "2"
	channels_max "2"
}

SectionGraph."Pipeline 1 Graph" {

	index "1"

	lines [
		"media2_in cpr vmix 0, , System Playback"
		"media2_mixin, , media2_in cpr vmix 0"
		"media3_in cpr vmix 0, , Deepbuffer Playback"
		"media3_mixin, , media3_in cpr vmix 0"
		"codec1_out_mixout mix 0, media0_mixin, media0_mixin"
		"codec1_out_mixout mix 0, media1_mixin, media1_mixin"
		"codec1_out_mixout mix 0, media2_mixin, media2_mixin"
		"codec1_out_mixout mix 0, media3_mixin, media3_mixin"
		"codec1_out_mixout mix 0, speech_mixin, speech_mixin"
		"codec1_out_mixout mix 0, tone_mixin, tone_mixin"
		"codec1_out_mixout mix 0, dmic01_hifi_mixin, dmic01_hifi_mixin"
		"codec1_out_mixout mix 0, dmic23_hifi_mixin, dmic23_hifi_mixin"
		"codec1_out_mixout mix 0, dmic01_voice_mixin, dmic01_voice_mixin"
		"codec1_out_mixout mix 0, dmic23_voice_mixin, dmic23_voice_mixin"
		"codec1_out_mixout mix 0, codec0_in_mixin, codec0_in_mixin"
		"codec1_out_mixout mix 0, codec1_in_mixin, codec1_in_mixin"
		"codec1_out cpr 0, , codec1_out_mixout mix 0"
		"codec1_out, , codec1_out cpr 0"
		"codec0_out_mixout mix 0, media0_mixin, media0_mixin"
		"codec0_out_mixout mix 0, media1_mixin, media1_mixin"
		"codec0_out_mixout mix 0, media2_mixin, media2_mixin"
		"codec0_out_mixout mix 0, media3_mixin, media3_mixin"
		"codec0_out_mixout mix 0, speech_mixin, speech_mixin"
		"codec0_out_mixout mix 0, tone_mixin, tone_mixin"
		"codec0_out_mixout mix 0, dmic01_hifi_mixin, dmic01_hifi_mixin"
		"codec0_out_mixout mix 0, dmic23_hifi_mixin, dmic23_hifi_mixin"
		"codec0_out_mixout mix 0, dmic01_voice_mixin, dmic01_voice_mixin"
		"codec0_out_mixout mix 0, dmic23_voice_mixin, dmic23_voice_mixin"
		"codec0_out_mixout mix 0, codec0_in_mixin, codec0_in_mixin"
		"codec0_out_mixout mix 0, codec1_in_mixin, codec1_in_mixin"
		"codec0_out cpr 0, , codec0_out_mixout mix 0"
		"codec0_out, , codec0_out cpr 0"
		"iDisp_out_mixout mix 0, media0_mixin, media0_mixin"
		"iDisp_out_mixout mix 0, media1_mixin, media1_mixin"
		"iDisp_out_mixout mix 0, media2_mixin, media2_mixin"
		"iDisp_out_mixout mix 0, media3_mixin, media3_mixin"
		"iDisp_out_mixout mix 0, speech_mixin, speech_mixin"
		"iDisp_out_mixout mix 0, tone_mixin, tone_mixin"
		"iDisp_out_mixout mix 0, dmic01_hifi_mixin, dmic01_hifi_mixin"
		"iDisp_out_mixout mix 0, dmic23_hifi_mixin, dmic23_hifi_mixin"
		"iDisp_out_mixout mix 0, dmic01_voice_mixin, dmic01_voice_mixin"
		"iDisp_out_mixout mix 0, dmic23_voice_mixin, dmic23_voice_mixin"
		"iDisp_out_mixout mix 0, codec0_in_mixin, codec0_in_mixin"
		"iDisp_out_mixout mix 0, codec1_in_mixin, codec1_in_mixin"
		"iDisp_out cpr 0, , iDisp_out_mixout mix 0"
		"iDisp_out, , iDisp_out cpr 0"
		"System Capture, , media0_out cpr 0"
		"media0_out cpr 0, , media0_mixout mix 0"
		"media0_mixout mix 0, media0_mixin, media0_mixin"
		"media0_mixout mix 0, media1_mixin, media1_mixin"
		"media0_mixout mix 0, media2_mixin, media2_mixin"
		"media0_mixout mix 0, media3_mixin, media3_mixin"
		"media0_mixout mix 0, speech_mixin, speech_mixin"
		"media0_mixout mix 0, tone_mixin, tone_mixin"
		"media0_mixout mix 0, dmic01_hifi_mixin, dmic01_hifi_mixin"
		"media0_mixout mix 0, dmic23_hifi_mixin, dmic23_hifi_mixin"
		"media0_mixout mix 0, dmic01_voice_mixin, dmic01_voice_mixin"
		"media0_mixout mix 0, dmic23_voice_mixin, dmic23_voice_mixin"
		"media0_mixout mix 0, codec0_in_mixin, codec0_in_mixin"
		"media0_mixout mix 0, codec1_in_mixin, codec1_in_mixin"
		"Reference Capture, , media2_out cpr 0"
		"media2_out cpr 0, , media2_mixout mix 0"
		"media2_mixout mix 0, media0_mixin, media0_mixin"
		"media2_mixout mix 0, media1_mixin, media1_mixin"
		"media2_mixout mix 0, media2_mixin, media2_mixin"
		"media2_mixout mix 0, media3_mixin, media3_mixin"
		"media2_mixout mix 0, speech_mixin, speech_mixin"
		"media2_mixout mix 0, tone_mixin, tone_mixin"
		"media2_mixout mix 0, dmic01_hifi_mixin, dmic01_hifi_mixin"
		"media2_mixout mix 0, dmic23_hifi_mixin, dmic23_hifi_mixin"
		"media2_mixout mix 0, dmic01_voice_mixin, dmic01_voice_mixin"
		"media2_mixout mix 0, dmic23_voice_mixin, dmic23_voice_mixin"
		"media2_mixout mix 0, codec0_in_mixin, codec0_in_mixin"
		"media2_mixout mix 0, codec1_in_mixin, codec1_in_mixin"
		"codec0_in_mixin, , codec0_in cpr vmix 0"
		"codec0_in cpr vmix 0, , codec0_in"
		"codec1_in_mixin, , codec1_in cpr vmix 0"
		"codec1_in cpr vmix 0, , codec1_in"
		"dmic01_hifi_mixin, , dmic01_hifi cpr vmix 0"
		"dmic01_hifi cpr vmix 0, , dmic01_hifi"
		"dmic23_hifi_mixin, , dmic23_hifi cpr vmix 0"
		"dmic23_hifi cpr vmix 0, , dmic23_hifi"
	]
}

[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 819 bytes --]

[-- Attachment #2: Type: text/plain, Size: 0 bytes --]



      reply	other threads:[~2015-09-21 16:52 UTC|newest]

Thread overview: 35+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-08-17 17:26 [PATCH v2 0/9] Add DSP topology management for SKL Vinod Koul
2015-08-17 17:26 ` [PATCH v2 1/9] ASoC: Intel: Skylake: Add pipe and modules handlers Vinod Koul
2015-09-19 16:00   ` Mark Brown
2015-09-21  3:37     ` Vinod Koul
2015-09-21 16:36       ` Mark Brown
2015-08-17 17:26 ` [PATCH v2 2/9] ASoC: Intel: Skylake: Add module configuration helpers Vinod Koul
2015-08-17 17:26 ` [PATCH v2 3/9] ASoC: Intel: Skylake: add DSP platform widget event handlers Vinod Koul
2015-09-17  9:47   ` Liam Girdwood
2015-09-17 11:38     ` Vinod Koul
2015-09-17 12:25       ` Liam Girdwood
2015-09-18  4:22         ` Vinod Koul
2015-09-19 16:11   ` Mark Brown
2015-09-21  3:24     ` Vinod Koul
2015-08-17 17:26 ` [PATCH v2 4/9] ASoC: Intel: Skylake: Add FE and BE hw_params handling Vinod Koul
2015-09-19 16:22   ` Mark Brown
2015-09-21  3:13     ` Vinod Koul
2015-08-17 17:26 ` [PATCH v2 5/9] ASoC: Intel: Skylake: Add topology core init and handlers Vinod Koul
2015-09-18  9:55   ` Liam Girdwood
2015-09-18 15:09     ` Vinod Koul
2015-08-17 17:26 ` [PATCH v2 6/9] ASoC: Intel: Skylake: Initialize and load DSP controls Vinod Koul
2015-09-18  9:58   ` Liam Girdwood
2015-09-18 15:11     ` Vinod Koul
2015-09-19 16:26     ` Mark Brown
2015-09-21  3:26       ` Vinod Koul
2015-08-17 17:26 ` [PATCH v2 7/9] ASoC: Intel: Skylake: Add DSP support and enable it Vinod Koul
2015-08-17 17:26 ` [PATCH v2 8/9] ASoC: Intel: Skylake: Initialize NHLT table Vinod Koul
2015-09-19 16:27   ` Mark Brown
2015-09-21  3:38     ` Vinod Koul
2015-08-17 17:26 ` [PATCH v2 9/9] ASoC: Intel: Skylake: Remove unused CPU dai's Vinod Koul
2015-09-03  8:14 ` [PATCH v2 0/9] Add DSP topology management for SKL Vinod Koul
2015-09-11 11:45   ` Mark Brown
2015-09-19 16:56     ` Mark Brown
2015-09-21  3:57       ` Vinod Koul
2015-09-21 16:33         ` Mark Brown
2015-09-21 16:47           ` Vinod Koul [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20150921164745.GO2381@localhost \
    --to=vinod.koul@intel.com \
    --cc=alsa-devel@alsa-project.org \
    --cc=broonie@kernel.org \
    --cc=liam.r.girdwood@linux.intel.com \
    --cc=patches.audio@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.