From: Kristoffer KARLSSON <kristoffer.karlsson@stericsson.com>
To: Mark Brown <broonie@opensource.wolfsonmicro.com>
Cc: Ola LILJA2 <ola.o.lilja@stericsson.com>,
"alsa-devel@alsa-project.org" <alsa-devel@alsa-project.org>,
Liam Girdwood <lrg@ti.com>,
Linus Walleij <linus.walleij@linaro.org>
Subject: Re: [PATCH 01/16] ASoC: core: Add multi reg control struct & macros
Date: Wed, 21 Mar 2012 13:07:47 +0100 [thread overview]
Message-ID: <4F69C493.7070109@stericsson.com> (raw)
In-Reply-To: <20120313213859.GG3177@opensource.wolfsonmicro.com>
I believe that the assumption that all the registers are contiguous would pose a
troublesome limitation in this case.
We do have several controls that exposes signed 15-bit values that are mapped
across two 8-bit registers (16-bits in total) in a big-endian order.
While for those particular controls a contiguous (big endian) order like you
suggested would work just fine, we also have other controls with signed 32-bit
values that span four 8-bit registers that mapped in the following manner:
bits 31-24 23-16 15-8 7-0
reg 0x59 0x5A 0x59 0x5A
This means that to write one complete 32-bit value we would actually need to
write to the same 8-bit registers twice.
I originally considered to put in two more parameters to consolidate the four
macros to one, one being no of registers and one specifying big- or
little-endian order. But as you can see unfortunately neither little or big
endian contiguous order would suffice in the case described above so therefore I
opted to give the user full control in specifying the registers and what order
they should map to the composite value when using the macro allowing for every
possible combination which seems to be the most generic approach allowing for
different formats.
Also I believe that the definition S1R,S2R,S4R together with S8R might in fact
already be a fairly complete set with no need to add some new crop of macros for
this in future. Why? Well since the value handled by ASoC-framework when
setting/reading a integer control is of type long (snd_ctl_elem_value) in
combination with the fact that 1 byte being the smallest register size in
framework means that in a 64-bit world this would translate to a maximum of
eight registers mapping the composite value of that long value.
Actually in our driver we only need S1R, S2R and S4R. I added the S8R variant
just to provide a complete implementation covering up to the full 64 bit
(8*8-bit). So until we need to deal with 128-bit computers and someone would
need this exact type of composite control in 128-bit then I believe these four
macros should suffice for most cases.
Anyhow in light of the situation above do you think we could stick to the
submitted approach or do you have some other suggestion on how to define the
signed 32-bit value control with registers mapped in the above described fashion?
On 2012-03-13 22:39, Mark Brown wrote:
> On Tue, Mar 13, 2012 at 04:11:28PM +0100, Ola Lilja wrote:
>
>> SOC_SINGLE_VALUE_S1R One control value spans one register
>> SOC_SINGLE_VALUE_S2R One control value spans two registers
>> SOC_SINGLE_VALUE_S4R One control value spans four registers
>> SOC_SINGLE_VALUE_S8R One control value spans eight registers
>
> This is fairly painful; the number of registers really ought to be
> parameterised rather than having to add a new crop of macros every time
> there's a new format or a new count. Can we possibly make the
> simplifying assumption that all the registers are contiguous?
--
*Kristoffer Karlsson*
Multimedia Platform Customization Lund
*ST-Ericsson*
Product Group Mobile Platforms
Scheelevägen 19B
223 63, Lund
Sweden
www.stericsson.com <http://www.stericsson.com/>
Office: +46 46 10 3938
Mobile: +46 72 206 5192
Fax: +46 10 715 89 88
Email: kristoffer.karlsson@stericsson.com
<mailto:kristoffer.karlsson@stericsson.com>
This communication is confidential and intended solely for the addressee(s). Any
unauthorized review, use, disclosure or distribution is prohibited. If you
believe this message has been sent to you in error, please notify the sender by
replying to this transmission and delete the message without disclosing it.
Thank you.
E-mail including attachments is susceptible to data corruption, interception,
unauthorized amendment, tampering and viruses, and we only send and receive
emails on the basis that we are not liable for any such corruption,
interception, amendment, tampering or viruses or any consequences thereof.
next prev parent reply other threads:[~2012-03-21 12:07 UTC|newest]
Thread overview: 51+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-03-13 15:11 [PATCH 01/16] ASoC: core: Add multi reg control struct & macros Ola Lilja
2012-03-13 15:11 ` [PATCH 02/16] ASoC: core: Add 8bit multi reg control accessors Ola Lilja
2012-03-13 21:25 ` Mark Brown
2012-03-22 16:58 ` Kristoffer KARLSSON
2012-03-22 17:02 ` Mark Brown
2012-03-13 15:11 ` [PATCH 03/16] ASoC: core: Add range of " Ola Lilja
2012-03-13 21:23 ` Mark Brown
2012-03-13 15:11 ` [PATCH 04/16] ASoC: core: Add info accessor for mreg control Ola Lilja
2012-03-13 15:11 ` [PATCH 05/16] ASoC: core: Add strobe control Ola Lilja
2012-03-13 21:33 ` Mark Brown
2012-03-22 16:20 ` Kristoffer KARLSSON
2012-03-22 16:33 ` Mark Brown
2012-03-22 17:09 ` Kristoffer KARLSSON
2012-03-22 17:28 ` Mark Brown
2012-03-13 15:11 ` [PATCH 06/16] ASoC: core: Add macros for 8bit hwdep multi reg cntrl Ola Lilja
2012-03-13 21:36 ` Mark Brown
2012-03-13 15:11 ` [PATCH 07/16] ASoC: core: Add macro for hwdep range of regs control Ola Lilja
2012-03-13 15:11 ` [PATCH 08/16] ARM: ux500: Add DMA-channels for MSP Ola Lilja
2012-03-13 15:11 ` [PATCH 09/16] arm: ux500: Add audio-regulators Ola Lilja
2012-03-14 10:42 ` Linus Walleij
2012-03-13 15:11 ` [PATCH 10/16] arm: ux500: Add support for MSP I2S-devices Ola Lilja
2012-03-13 21:40 ` Mark Brown
2012-03-14 9:39 ` Linus Walleij
2012-03-14 11:44 ` Mark Brown
2012-03-13 15:11 ` [PATCH 11/16] ARM: ux500: Add placeholder for clk_set_parent Ola Lilja
2012-03-14 10:43 ` Linus Walleij
2012-03-13 15:11 ` [PATCH 14/16] ASoC: Ux500: Add platform-driver Ola Lilja
2012-03-13 22:48 ` Mark Brown
2012-03-14 10:50 ` Linus Walleij
2012-03-14 12:31 ` Mark Brown
2012-03-13 15:11 ` [PATCH 15/16] ASoC: Ux500: Activate the Ux500 ASoC-driver Ola Lilja
2012-03-13 15:11 ` [PATCH 16/16] ASoC: Ux500: Add machine-driver Ola Lilja
2012-03-13 23:03 ` Mark Brown
2012-03-13 21:39 ` [PATCH 01/16] ASoC: core: Add multi reg control struct & macros Mark Brown
2012-03-21 12:07 ` Kristoffer KARLSSON [this message]
2012-03-21 12:40 ` Mark Brown
2012-03-22 15:46 ` Kristoffer KARLSSON
2012-03-22 15:56 ` Mark Brown
[not found] ` <1331651503-16917-13-git-send-email-ola.o.lilja@stericsson.com>
2012-03-13 22:11 ` [PATCH 12/16] ASoC: Ux500: Add MSP I2S-driver Mark Brown
[not found] ` <1331651503-16917-14-git-send-email-ola.o.lilja@stericsson.com>
2012-03-13 22:45 ` [PATCH 13/16] ASoC: codecs: Add AB8500 codec-driver Mark Brown
2012-03-14 13:27 ` Ola LILJA2
2012-03-14 13:45 ` Mark Brown
2012-03-15 14:50 ` Ola Lilja
2012-03-15 15:29 ` Mark Brown
2012-03-16 13:09 ` Ola Lilja
2012-03-17 22:31 ` Mark Brown
2012-03-19 8:07 ` Ola Lilja
2012-03-19 8:23 ` Linus Walleij
2012-03-19 12:09 ` Mark Brown
2012-03-19 14:54 ` Ola Lilja
2012-03-19 15:43 ` Mark Brown
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=4F69C493.7070109@stericsson.com \
--to=kristoffer.karlsson@stericsson.com \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@opensource.wolfsonmicro.com \
--cc=linus.walleij@linaro.org \
--cc=lrg@ti.com \
--cc=ola.o.lilja@stericsson.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.