[alsa-devel] [PATCH v2 0/9] Add DSP topology management for SKL

Vinod Koul vinod.koul at intel.com
Mon Sep 21 18:47:45 CEST 2015


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
-------------- next part --------------
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"
	]
}
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <http://mailman.alsa-project.org/pipermail/alsa-devel/attachments/20150921/23f52c6e/attachment.sig>


More information about the Alsa-devel mailing list