Re: [PATCH v15 41/50] ASoC: Add SND kcontrol for fetching USB offload status

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi Takashi,

On 2/13/2024 4:10 AM, Takashi Iwai wrote:
On Tue, 13 Feb 2024 01:54:13 +0100,
Wesley Cheng wrote:

Add a kcontrol to the platform sound card to fetch the current offload
status.  This can allow for userspace to ensure/check which USB SND
resources are actually busy versus having to attempt opening the USB SND
devices, which will result in an error if offloading is active.

An example of fetching the USB offloading status would look like:
tinymix -D 0 get 'USB Offload Playback Route Status'
-1, -1 (range -1->32) --> [Offload is idle]

tinymix -D 0 get 'USB Offload Playback Route Status'
1, 0 (range -1->32)  --> [Offload active on card#1 pcm#0]

Ah, I didn't notice until now that the second value is the PCM index.

+static int snd_soc_usb_offload_status_info(struct snd_kcontrol *kcontrol,
+			      struct snd_ctl_elem_info *uinfo)
+{
+	struct snd_soc_component *component = snd_kcontrol_chip(kcontrol);
+	struct snd_soc_usb *ctx = snd_soc_find_usb_ctx(component->dev->of_node);
+
+	uinfo->type = SNDRV_CTL_ELEM_TYPE_INTEGER;
+	uinfo->count = 2*ctx->num_supported_streams;
+	uinfo->value.integer.min = -1;
+	uinfo->value.integer.max = SNDRV_CARDS;

Then it's bogus to set SNDRV_CARDS as max.  The PCM index number is
independent from the card number.  In theory, it can be even more than
the card max (very unlikely, though).


I don't think its technically capped anywhere :). I just used SNDRV_CARDS to cap the sound card number. If I split this as a separate entity, then I'll need to change the max value for the PCM dev.

Wouldn't it be more intuitive to provide two different controls, one
for card number and one for PCM index number?


Sure, I can split this up.

Thanks
Wesley Cheng




[Index of Archives]     [Linux Media]     [Linux Input]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [Old Linux USB Devel Archive]

  Powered by Linux