<feed xmlns='http://www.w3.org/2005/Atom'>
<title>linux-toradex.git/sound/soc/codecs/wm_adsp.h, branch v4.19</title>
<subtitle>Linux kernel for Apalis and Colibri modules</subtitle>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/'/>
<entry>
<title>ASoC: wm_adsp: Make DSP name configurable by codec driver</title>
<updated>2018-08-08T16:32:29+00:00</updated>
<author>
<name>Richard Fitzgerald</name>
<email>rf@opensource.cirrus.com</email>
</author>
<published>2018-08-08T16:13:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=605391d0f4bfdff2f2c6c5477ce0ccf776d8d5c0'/>
<id>605391d0f4bfdff2f2c6c5477ce0ccf776d8d5c0</id>
<content type='text'>
Instead of harcoding that a core must always be called "DSPn"
add a name member to struct wm_adsp so that the owning codec
driver can provide a custom name. This allows for re-use of
the wm_adsp driver with parts where the processing cores are
named differently.

If no name is provided the default DSPn name is used.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Instead of harcoding that a core must always be called "DSPn"
add a name member to struct wm_adsp so that the owning codec
driver can provide a custom name. This allows for re-use of
the wm_adsp driver with parts where the processing cores are
named differently.

If no name is provided the default DSPn name is used.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: Declare firmware controls from codec driver</title>
<updated>2018-08-08T16:31:48+00:00</updated>
<author>
<name>Richard Fitzgerald</name>
<email>rf@opensource.cirrus.com</email>
</author>
<published>2018-08-08T16:13:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0a047f07525fecfa8f6fccc5d30afff7e816de8d'/>
<id>0a047f07525fecfa8f6fccc5d30afff7e816de8d</id>
<content type='text'>
To allow for more flexibility in naming of DSP-type cores
move the creation of the firmware controls to the codec
drivers instead of having a hardcoded list in wm_adsp.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
To allow for more flexibility in naming of DSP-type cores
move the creation of the firmware controls to the codec
drivers instead of having a hardcoded list in wm_adsp.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>Merge remote-tracking branches 'asoc/topic/wm9090', 'asoc/topic/wm9712', 'asoc/topic/wm9713' and 'asoc/topic/wm_adsp' into asoc-next</title>
<updated>2018-03-28T02:31:58+00:00</updated>
<author>
<name>Mark Brown</name>
<email>broonie@kernel.org</email>
</author>
<published>2018-03-28T02:31:58+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=38a72a9f86302e60c2b54fe00ea1700767434f6f'/>
<id>38a72a9f86302e60c2b54fe00ea1700767434f6f</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: Fix some signedness errors in register access</title>
<updated>2018-02-16T15:22:00+00:00</updated>
<author>
<name>Richard Fitzgerald</name>
<email>rf@opensource.cirrus.com</email>
</author>
<published>2018-02-16T14:36:10+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e21a5acfab2f13eeffe50d5d5f87c099540a3bf3'/>
<id>e21a5acfab2f13eeffe50d5d5f87c099540a3bf3</id>
<content type='text'>
base and sysclk_reg should be unsigned int, as that is what
regmap takes as a register address.

sysclk_mask is used to mask unsigned register values so
should be unsigned.

sysclk_shift is a shift value so is not allowed to be negative.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
base and sysclk_reg should be unsigned int, as that is what
regmap takes as a register address.

sysclk_mask is used to mask unsigned register values so
should be unsigned.

sysclk_shift is a shift value so is not allowed to be negative.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: arizona: replace codec to component</title>
<updated>2018-02-14T10:44:19+00:00</updated>
<author>
<name>Kuninori Morimoto</name>
<email>kuninori.morimoto.gx@renesas.com</email>
</author>
<published>2018-02-13T02:03:12+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=0fe1daa6663ae9437c7168b81fe23c9ed50f55df'/>
<id>0fe1daa6663ae9437c7168b81fe23c9ed50f55df</id>
<content type='text'>
Now we can replace Codec to Component. Let's do it.

Because there are many drivers which are using arizona,
we need to update these all related drivers in same time.
Otherwise compile error/warning happen

Note:

cs47l24
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm5102
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm5110
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm8997
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm8998
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

Signed-off-by: Kuninori Morimoto &lt;kuninori.morimoto.gx@renesas.com&gt;
Tested-by: Charles Keepax &lt;ckeepax@opensource.cirrus.com&gt;
Acked-by: Charles Keepax &lt;ckeepax@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Now we can replace Codec to Component. Let's do it.

Because there are many drivers which are using arizona,
we need to update these all related drivers in same time.
Otherwise compile error/warning happen

Note:

cs47l24
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm5102
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm5110
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm8997
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

wm8998
	xxx_codec_xxx()		-&gt;	xxx_component_xxx()
	.idle_bias_off = 1	-&gt;	.idle_bias_on = 0
	.ignore_pmdown_time = 0	-&gt;	.use_pmdown_time = 1
	-			-&gt;	.endianness = 1
	-			-&gt;	.non_legacy_dai_naming = 1

Signed-off-by: Kuninori Morimoto &lt;kuninori.morimoto.gx@renesas.com&gt;
Tested-by: Charles Keepax &lt;ckeepax@opensource.cirrus.com&gt;
Acked-by: Charles Keepax &lt;ckeepax@opensource.cirrus.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: add support for DSP region lock</title>
<updated>2017-04-05T15:14:15+00:00</updated>
<author>
<name>Mayuresh Kulkarni</name>
<email>mkulkarni@opensource.wolfsonmicro.com</email>
</author>
<published>2017-04-05T10:08:00+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=51a2c944ead91171495ef338689da057bbcaab0c'/>
<id>51a2c944ead91171495ef338689da057bbcaab0c</id>
<content type='text'>
Newer ADSP2V2 codecs include a memory protection unit that can
be set to trap illegal accesses. When enabling an ADSPV2 core we
must configure the memory region traps so that the firmware can
access its own memory.

Signed-off-by: Mayuresh Kulkarni &lt;mkulkarni@opensource.wolfsonmicro.com&gt;
Signed-off-by: Nikesh Oswal &lt;Nikesh.Oswal@wolfsonmicro.com&gt;
Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Richard Fitzgerald &lt;rf@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Newer ADSP2V2 codecs include a memory protection unit that can
be set to trap illegal accesses. When enabling an ADSPV2 core we
must configure the memory region traps so that the firmware can
access its own memory.

Signed-off-by: Mayuresh Kulkarni &lt;mkulkarni@opensource.wolfsonmicro.com&gt;
Signed-off-by: Nikesh Oswal &lt;Nikesh.Oswal@wolfsonmicro.com&gt;
Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Richard Fitzgerald &lt;rf@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: Add support for ADSP2V2</title>
<updated>2017-04-05T15:14:15+00:00</updated>
<author>
<name>Richard Fitzgerald</name>
<email>rf@opensource.wolfsonmicro.com</email>
</author>
<published>2017-04-05T10:07:59+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=e1ea1879f2889a26370bd0bc29c1e95caf9d36f2'/>
<id>e1ea1879f2889a26370bd0bc29c1e95caf9d36f2</id>
<content type='text'>
Adds support for ADSP2V2 cores. Primary differences are that
they use a 32-bit register map compared to the 16-bit register
map of ADSP2V1, and there are some changes to clocking control.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.wolfsonmicro.com&gt;
Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Adds support for ADSP2V2 cores. Primary differences are that
they use a 32-bit register map compared to the 16-bit register
map of ADSP2V1, and there are some changes to clocking control.

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.wolfsonmicro.com&gt;
Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: Add mechanism to preload firmware on a core</title>
<updated>2017-01-06T18:09:01+00:00</updated>
<author>
<name>Charles Keepax</name>
<email>ckeepax@opensource.wolfsonmicro.com</email>
</author>
<published>2017-01-06T14:24:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=af813a6fd8740537bfa5801768e90cc95d9262a3'/>
<id>af813a6fd8740537bfa5801768e90cc95d9262a3</id>
<content type='text'>
As requirements to bring up audio paths are continuous getting tighter
and the DSP download to most ADSP devices happens over an external bus
it can become an important factor in the path bring up time. As such
sometimes it is a reasonable trade off to download the firmware ahead of
when it will be required and take a small hit on power consumption for
keeping the core powered up.

This "preloading" adds an additional control for each DSP core "DSPx
Preload Switch" that when set to true will power up the DSP core and
download the firmware currently selected in the "DSPx Firmware" control.
Whilst the core is preloaded the current firmware can not be changed and
the CODEC will be kept powered up and SYSCLK held on. Although future
improvements may allow the SYSCLK to be powered down as well because
the hardware only requires SYSCLK whilst the download is actually taking
place, but this is not covered in this series.

Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
As requirements to bring up audio paths are continuous getting tighter
and the DSP download to most ADSP devices happens over an external bus
it can become an important factor in the path bring up time. As such
sometimes it is a reasonable trade off to download the firmware ahead of
when it will be required and take a small hit on power consumption for
keeping the core powered up.

This "preloading" adds an additional control for each DSP core "DSPx
Preload Switch" that when set to true will power up the DSP core and
download the firmware currently selected in the "DSPx Firmware" control.
Whilst the core is preloaded the current firmware can not be changed and
the CODEC will be kept powered up and SYSCLK held on. Although future
improvements may allow the SYSCLK to be powered down as well because
the hardware only requires SYSCLK whilst the download is actually taking
place, but this is not covered in this series.

Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: Remove redundant extern declarations</title>
<updated>2016-11-29T11:02:34+00:00</updated>
<author>
<name>Charles Keepax</name>
<email>ckeepax@opensource.wolfsonmicro.com</email>
</author>
<published>2016-11-29T10:46:21+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=63079b6e43a813341fc5b44bc899796d5a857fd8'/>
<id>63079b6e43a813341fc5b44bc899796d5a857fd8</id>
<content type='text'>
Functions are given external linkage by default making the extern's
unnecessary, as such remove them.

Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Functions are given external linkage by default making the extern's
unnecessary, as such remove them.

Signed-off-by: Charles Keepax &lt;ckeepax@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
<entry>
<title>ASoC: wm_adsp: Firmware controls should be added as codec controls</title>
<updated>2016-11-22T17:24:43+00:00</updated>
<author>
<name>Richard Fitzgerald</name>
<email>rf@opensource.wolfsonmicro.com</email>
</author>
<published>2016-11-22T16:58:57+00:00</published>
<link rel='alternate' type='text/html' href='https://git.toradex.cn/cgit/linux-toradex.git/commit/?id=685f51a5eb98779147abb39f584b115ccdd87a4a'/>
<id>685f51a5eb98779147abb39f584b115ccdd87a4a</id>
<content type='text'>
We were adding firmware controls as card controls (using
snd_soc_add_codec_controls). The DSP is part of a specific codec so
we should be adding them as codec controls. Adding as codec controls
also means that if the codec has a name_prefix it will be added to
the control name, which won't happen when adding as a card control.

As that was the only use of the card pointer in struct wm_adsp it can
be removed.

For ADSP2 codecs a wm_adsp2_codec_probe() was added since the original
control handling was written, and that's the logical place to store a
pointer to the codec rather than delaying it until the codec is
powered-up.

For ADSP1 we don't use a codec_probe() stage so the codec pointer
initialization replaces the original card pointer initialization in
wm_adsp1_event().

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
We were adding firmware controls as card controls (using
snd_soc_add_codec_controls). The DSP is part of a specific codec so
we should be adding them as codec controls. Adding as codec controls
also means that if the codec has a name_prefix it will be added to
the control name, which won't happen when adding as a card control.

As that was the only use of the card pointer in struct wm_adsp it can
be removed.

For ADSP2 codecs a wm_adsp2_codec_probe() was added since the original
control handling was written, and that's the logical place to store a
pointer to the codec rather than delaying it until the codec is
powered-up.

For ADSP1 we don't use a codec_probe() stage so the codec pointer
initialization replaces the original card pointer initialization in
wm_adsp1_event().

Signed-off-by: Richard Fitzgerald &lt;rf@opensource.wolfsonmicro.com&gt;
Signed-off-by: Mark Brown &lt;broonie@kernel.org&gt;
</pre>
</div>
</content>
</entry>
</feed>
