Message ID | 1453956582-27254-1-git-send-email-vinod.koul@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
On Thu, 28 Jan 2016 05:49:42 +0100, Vinod Koul wrote: > > ASoC TLV Byte controls are very large size controls so we should add new > options for these. So skip dumping contents for these. > > $amixer -c0 cget numid=16 > numid=16,iface=MIXER,name='mdl params' > ; type=BYTES,access=-----RW-,values=30336 > : ASoC TLV Byte control, skipping bytes dump > > Signed-off-by: Vinod Koul <vinod.koul@intel.com> No, as I wrote before, checking the type isn't enough. Assigning a TLV to BYTES type doesn't mean necessarily that it's an ASoC EXT control. You need to check the r/w capabilities as well. thanks, Takashi > --- > amixer/amixer.c | 6 ++++++ > 1 file changed, 6 insertions(+) > > diff --git a/amixer/amixer.c b/amixer/amixer.c > index db1849333da3..9ae75bfa3632 100644 > --- a/amixer/amixer.c > +++ b/amixer/amixer.c > @@ -682,6 +682,12 @@ static int show_control(const char *space, snd_hctl_elem_t *elem, > __skip_read: > if (!snd_ctl_elem_info_is_tlv_readable(info)) > goto __skip_tlv; > + /* skip show for ASoC TLV Byte controls */ > + if (type == SND_CTL_ELEM_TYPE_BYTES) { > + printf("%s: ASoC TLV Byte control, skipping bytes dump\n", space); > + goto __skip_tlv; > + } > + > tlv = malloc(4096); > if ((err = snd_hctl_elem_tlv_read(elem, tlv, 4096)) < 0) { > error("Control %s element TLV read error: %s\n", card, snd_strerror(err)); > -- > 1.9.1 >
On Thu, Jan 28, 2016 at 06:53:49AM +0100, Takashi Iwai wrote: > On Thu, 28 Jan 2016 05:49:42 +0100, > Vinod Koul wrote: > > > > ASoC TLV Byte controls are very large size controls so we should add new > > options for these. So skip dumping contents for these. > > > > $amixer -c0 cget numid=16 > > numid=16,iface=MIXER,name='mdl params' > > ; type=BYTES,access=-----RW-,values=30336 > > : ASoC TLV Byte control, skipping bytes dump > > > > Signed-off-by: Vinod Koul <vinod.koul@intel.com> > > No, as I wrote before, checking the type isn't enough. > Assigning a TLV to BYTES type doesn't mean necessarily that it's an > ASoC EXT control. You need to check the r/w capabilities as well. Oops missed that part. So am making it if (type == SND_CTL_ELEM_TYPE_BYTES && (snd_ctl_elem_info_is_tlv_readable(info) || snd_ctl_elem_info_is_tlv_writable(info))) { But this control can be read only or write only. Like a module doesnt allow read, or some is read only so OR should be good here Also should it check it is not normal read/write ? Thanks
On Thu, 28 Jan 2016 07:40:11 +0100, Vinod Koul wrote: > > On Thu, Jan 28, 2016 at 06:53:49AM +0100, Takashi Iwai wrote: > > On Thu, 28 Jan 2016 05:49:42 +0100, > > Vinod Koul wrote: > > > > > > ASoC TLV Byte controls are very large size controls so we should add new > > > options for these. So skip dumping contents for these. > > > > > > $amixer -c0 cget numid=16 > > > numid=16,iface=MIXER,name='mdl params' > > > ; type=BYTES,access=-----RW-,values=30336 > > > : ASoC TLV Byte control, skipping bytes dump > > > > > > Signed-off-by: Vinod Koul <vinod.koul@intel.com> > > > > No, as I wrote before, checking the type isn't enough. > > Assigning a TLV to BYTES type doesn't mean necessarily that it's an > > ASoC EXT control. You need to check the r/w capabilities as well. > > Oops missed that part. > > So am making it > > if (type == SND_CTL_ELEM_TYPE_BYTES && > (snd_ctl_elem_info_is_tlv_readable(info) || > snd_ctl_elem_info_is_tlv_writable(info))) { > > But this control can be read only or write only. Like a module doesnt allow > read, or some is read only so OR should be good here > > Also should it check it is not normal read/write ? Yes. /* skip ASoC ext bytes controls that may have huge binary TLV data */ if (type == SND_CTL_ELEM_TYPE_BYTES && !snd_ctl_elem_info_is_readable(info) && !snd_ctl_elem_info_is_writable(info)) goto __skip_tlv; Takashi
diff --git a/amixer/amixer.c b/amixer/amixer.c index db1849333da3..9ae75bfa3632 100644 --- a/amixer/amixer.c +++ b/amixer/amixer.c @@ -682,6 +682,12 @@ static int show_control(const char *space, snd_hctl_elem_t *elem, __skip_read: if (!snd_ctl_elem_info_is_tlv_readable(info)) goto __skip_tlv; + /* skip show for ASoC TLV Byte controls */ + if (type == SND_CTL_ELEM_TYPE_BYTES) { + printf("%s: ASoC TLV Byte control, skipping bytes dump\n", space); + goto __skip_tlv; + } + tlv = malloc(4096); if ((err = snd_hctl_elem_tlv_read(elem, tlv, 4096)) < 0) { error("Control %s element TLV read error: %s\n", card, snd_strerror(err));
ASoC TLV Byte controls are very large size controls so we should add new options for these. So skip dumping contents for these. $amixer -c0 cget numid=16 numid=16,iface=MIXER,name='mdl params' ; type=BYTES,access=-----RW-,values=30336 : ASoC TLV Byte control, skipping bytes dump Signed-off-by: Vinod Koul <vinod.koul@intel.com> --- amixer/amixer.c | 6 ++++++ 1 file changed, 6 insertions(+)