mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
From: "Bryan Wu" <cooloney@kernel.org>
To: "Takashi Iwai" <tiwai@suse.de>
Cc: "ALSA devel" <alsa-devel@alsa-project.org>,
	LKML <linux-kernel@vger.kernel.org>
Subject: Re: [Question] Can I open a substream in kernel space without attach to a file pointer?
Date: Wed, 19 Nov 2008 23:42:48 +0800	[thread overview]
Message-ID: <386072610811190742ycab0dbasc585376dc6ac47db@mail.gmail.com> (raw)
In-Reply-To: <s5h63mjddvj.wl%tiwai@suse.de>

On Wed, Nov 19, 2008 at 9:49 PM, Takashi Iwai <tiwai@suse.de> wrote:
> At Wed, 19 Nov 2008 18:00:36 +0800,
> Bryan Wu wrote:
>>
>> Hi Takashi,
>>
>> I am developing a USB gadget driver compliant to USB Audio Class Spec 2.0.
>> So I want to open a PCM substream and do some playback of capture,
>> then close them?
>>
>> I found snd_pcm_open_substream() is for opening a substream and attach
>> it to a file.
>> But in my application, there is no need to open a file before opening
>> a substream.
>>
>> - Is there any interface for me to open a substream in kernel space
>> without attach to a file?
>> - How to playback and capture in kernel space, use snd_pcm_lib_write
>> and snd_pcm_lib_read?
>> - How to get the snd_pcm_hardware struct from low level driver,
>> because I have to get the hardware configuration of the snd pcm
>> device?
>>
>> And I am reading the code of OSS emulator in ALSA. It provides some
>> info about the kernel space sound card programming.
>
> Yes, OSS emulation code handles the PCM in the kernel.
> But, basically I don't recommend you to do this -- it's not the job of
> the sound card driver.  The whole PCM stuff is handled by the PCM
> middle layer, not the driver itself.

No, my plan is not a sound card driver. It is an USB gadget audio driver.
When an embedded system for example Blackfin board connects to a USB host (PC),
PC will recognize this USB device as a USB Audio Class device.

Generally, there should be a sound card on the embedded system. Our
Blackfin board
has an AD1980 ALSA sound card. The USB gadget audio driver will open this sound
card and export this device to USB host PC by some USB audio class specific
descriptors. Then the PC can playback some audio stream by USB cable, USB gadget
audio driver will receive this stream and playback the data by AD1980
ALSA playback
substream. Capture is the similar.

> Any reason why you handle the PCM stuff completely in your driver
> code?
>

There is USB gadget MIDI driver in kernel. But it asked the user to
use aconnect tool to
connect the virtual MIDI card to a real one. I don't want travel to
user space and it should
be more efficient in kernel space to handle all things including PCM
open/release/read/write
and Mixer control.

Any hints about this? I really need some help from ALSA guru, cause
I'm not familiar the internal
things here.

Thanks a lot
-Bryan

  reply	other threads:[~2008-11-19 15:43 UTC|newest]

Thread overview: 13+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2008-11-19 10:00 Bryan Wu
2008-11-19 13:49 ` Takashi Iwai
2008-11-19 15:42   ` Bryan Wu [this message]
2008-11-19 16:01     ` Takashi Iwai
2008-11-20  6:27       ` Bryan Wu
2008-12-11 10:40       ` Bryan Wu
2008-12-11 12:03         ` Takashi Iwai
2008-12-11 13:19           ` Bryan Wu
2008-12-11 13:24             ` Takashi Iwai
2008-12-11 14:12               ` Bryan Wu
2008-12-12  6:59                 ` [alsa-devel] " Takashi Iwai
2008-12-12  8:49                   ` Bryan Wu
2008-12-12  9:07                     ` Takashi Iwai

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=386072610811190742ycab0dbasc585376dc6ac47db@mail.gmail.com \
    --to=cooloney@kernel.org \
    --cc=alsa-devel@alsa-project.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=tiwai@suse.de \
    /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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®