From: Takashi Iwai <tiwai@suse.de>
To: Takashi Sakamoto <o-takashi@sakamocchi.jp>
Cc: alsa-devel@alsa-project.org, broonie@linaro.org,
Vinod Koul <vinod.koul@intel.com>,
Clemens Ladisch <clemens@ladisch.de>,
omair.m.abdullah@intel.com,
Charles Keepax <ckeepax@opensource.wolfsonmicro.com>
Subject: Re: [PATCH 1/4] ALSA: control: return payload length for TLV operation
Date: Wed, 31 Aug 2016 17:40:13 +0200 [thread overview]
Message-ID: <s5ha8fteyle.wl-tiwai@suse.de> (raw)
In-Reply-To: <47fa0f7b-cf3a-b3dd-7e7e-7d45369ddaac@sakamocchi.jp>
On Wed, 31 Aug 2016 17:26:14 +0200,
Takashi Sakamoto wrote:
>
> On Aug 31 2016 21:08, Takashi Iwai wrote:
> > On Wed, 31 Aug 2016 13:54:37 +0200,
> > Clemens Ladisch wrote:
> >>
> >> Takashi Iwai wrote:
> >>> TLV has never been and (will never be) an API to handle a
> >>> generic binary stream.
> >>
> >> It would be possible to define something like SNDRV_CTL_TLVT_HWDEP_BLOB
> >> or _COEFFICIENTS, or to reserve a range of TLVT values for driver-
> >> defined types. (But we cannot change soc-wm-adsp to support only proper
> >> TLV data, because this would introduce a regression.)
> >
> > Well, passing the random hw-specific data is fine, but what I meant is
> > that a "stream" isn't suitable with TLV. (And I don't mean it's
> > impossible, either :)
>
> I'm few interested in whether it's binary stream or not, or
> hardware-specific or not. The returned length is the most, in a point of
> application developers. I'll show you two cases.
>
> 1.Let's see current implementation of 'snd_soc_bytes_tlv_callback()' in
> sound/soc/soc-ops.c.
>
> http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/soc/soc-ops.c?h=v4.8-rc4#n772
>
> Here, 'size' argument is struct snd_ctl_tlv.length and 'tlv' argument is
> &struct snd_ctl_tlv.tlv[2].
>
> The size of actual I/O is smaller value between the length and hardcoded
> 'params->max'.
>
> When applications give larger buffer to TLV feature of ALSA control
> interface, then the early part of the buffer is filled. On the other
> hand, applications cannot get to know the actual length.
>
> 2.Let's see core implementation user-defined control element set.
>
> http://git.kernel.org/cgit/linux/kernel/git/tiwai/sound.git/tree/sound/core/control.c?h=v4.8-rc4#n1140
>
> The 'size' and 'tlv' arguments are the same as the first example.
>
> When write operation, the given buffer and length is stored to a control
> element set. When read operation, the given buffer is filled by the
> stored data with the stored length. On the other hand, applications
> cannot get to know the actual length.
>
> When we're considering just about pure threshold information, there's no
> concern about the length, due to struct snd_ctl_tlv.tlv[1]. But now
> we've already decided to use this feature to transfer arbitrary length
> of data. It's better to consider about what is better for applications.
Which application do you have in mind? Applications would access via
either alsa-lib or tinyalsa. And these libraries do already care
about how to access via TLV. What makes better what, practically
seen?
Takashi
next prev parent reply other threads:[~2016-08-31 15:40 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-29 23:44 [RFC][PATCH 0/4] ALSA: control: return payload length of TLV operation Takashi Sakamoto
2016-08-29 23:44 ` [PATCH 1/4] ALSA: control: return payload length for " Takashi Sakamoto
2016-08-30 5:29 ` Takashi Iwai
2016-08-30 6:19 ` Takashi Sakamoto
2016-08-30 6:59 ` Takashi Iwai
2016-08-30 7:13 ` Takashi Sakamoto
2016-08-30 7:39 ` Takashi Iwai
2016-08-30 7:05 ` Clemens Ladisch
2016-08-30 7:09 ` Takashi Sakamoto
2016-08-30 8:04 ` Clemens Ladisch
2016-08-30 12:22 ` Takashi Sakamoto
2016-08-30 14:51 ` Vinod Koul
2016-08-30 22:04 ` Takashi Sakamoto
2016-08-31 4:20 ` Vinod Koul
2016-08-31 4:30 ` Takashi Sakamoto
2016-08-31 9:05 ` Charles Keepax
2016-08-31 9:40 ` Takashi Iwai
2016-08-31 11:54 ` Clemens Ladisch
2016-08-31 12:08 ` Takashi Iwai
2016-08-31 15:26 ` Takashi Sakamoto
2016-08-31 15:40 ` Takashi Iwai [this message]
2016-09-02 11:30 ` Takashi Sakamoto
2016-09-02 13:09 ` Takashi Iwai
2016-09-02 14:50 ` Takashi Sakamoto
2016-09-02 15:19 ` Takashi Iwai
2016-09-02 16:26 ` Takashi Iwai
2016-09-03 11:38 ` Charles Keepax
2016-09-04 11:07 ` Takashi Sakamoto
2016-09-04 20:45 ` Takashi Iwai
2016-09-06 3:30 ` Takashi Sakamoto
2016-09-12 12:37 ` Charles Keepax
2016-09-12 15:25 ` Vinod Koul
2016-09-12 15:28 ` Takashi Iwai
2016-09-12 16:03 ` Charles Keepax
2016-09-12 16:28 ` Takashi Iwai
2016-09-13 8:39 ` Charles Keepax
2016-08-31 12:19 ` Charles Keepax
2016-08-31 13:24 ` Clemens Ladisch
2016-08-31 14:18 ` Charles Keepax
2016-08-31 16:05 ` Vinod Koul
2016-09-02 11:18 ` Takashi Sakamoto
2016-09-02 16:05 ` Takashi Iwai
2016-09-03 3:53 ` Takashi Sakamoto
2016-09-03 11:32 ` Charles Keepax
2016-08-29 23:44 ` [PATCH 2/4] ALSA: control: delegate checking the length of data payload to each drivers Takashi Sakamoto
2016-08-30 15:46 ` Vinod Koul
2016-08-29 23:44 ` [PATCH 3/4] ALSA: control: add kerneldoc for snd_kcontrol_tlv_rw_t Takashi Sakamoto
2016-08-29 23:44 ` [PATCH 4/4] ALSA: control: bump up protocol version to 2.0.8 Takashi Sakamoto
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=s5ha8fteyle.wl-tiwai@suse.de \
--to=tiwai@suse.de \
--cc=alsa-devel@alsa-project.org \
--cc=broonie@linaro.org \
--cc=ckeepax@opensource.wolfsonmicro.com \
--cc=clemens@ladisch.de \
--cc=o-takashi@sakamocchi.jp \
--cc=omair.m.abdullah@intel.com \
--cc=vinod.koul@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.