All of lore.kernel.org
 help / color / mirror / Atom feed
From: Takashi Iwai <tiwai@suse.de>
To: Leif Lindholm <leif.lindholm@i3micro.com>
Cc: alsa-devel@alsa-project.org
Subject: Re: Migration from 0.5 to 0.9?
Date: Mon, 08 Apr 2002 16:55:28 +0200	[thread overview]
Message-ID: <s5hd6xame8v.wl@alsa2.suse.de> (raw)
In-Reply-To: <1017927701.1777.12.camel@lel1.sthlm.i3micro.se>

At 04 Apr 2002 15:41:36 +0200,
Leif Lindholm wrote:
> 
> Hello
> 
> I'm working on a set-top-box based on the National Semiconductor SC1200
> Geode integrated microprocessor.
> 
> National have been nice enough to write an Alsa-driver for the built-in
> AC97-controller/audio thingy - unfortunetaly it is written for 0.5.10b.
> 
> So now I need to modify this one to use with 0.9.
> 
> Can someone give me a few tips/hints or is there possibly a document
> about this that I failed to google up?

unfortunatley (as always :) there is no documentation about the kernel
stuff yet.
since you have already a working 0.5.x driver, it's not too difficult,
though. 

as far as i can remember..

- renaming

	fragment -> period
	channel -> stream
	voice -> channel
	snd_pcm_subchannel -> snd_pcm_substream

- renaming of constants

	generally:
		SND_XXX -> SNDRV_XXX

	some other changes, too: e.g.
		SND_PCM_TRIGGER_GO -> SNDDRV_PCM_TRIGGER_START

- snd_assert() is used instead of snd_debug_check()
  (note that the argument is opposite, assert(x) means that "x" is true .)

- no longer difference of stream/blocking modes

- general hardware information is stored in snd_pcm_hardware_t
  and passed to the runtime struct in open().
  the information is intuitive, look at other sources.

- abstracted ops.

	open(substream)
		- open the device
		- copy the substream->runtime->hw parameter
		  (not pass the pointer)
		- set up the constraints (if any)

	hw_params(substream, hw_params)
		- allocate a buffer
		  usually via snd_pcm_lib_malloc_pages

	prepare(substream)
		- set up the hardware parameters (like 0.5.x)

		  note that parameters in runtime struct are
		  stored in frames, not in bytes.
		  there are functions, snd_pcm_lib_buffer_bytes()
		  and snd_pcm_lib_period_bytes()

	trigger(substream, cmd)
		- start, stop, pause (like 0.5.x)

	pointer(substream)
		- returns the current pointer where the hw refers.
		  (in frames!)

	hw_free(substream)
		- free the buffer
		  usually via snd_pcm_lib_free_pages(substream)

	close(substream)
		- close the device, clean up.

	copy, silence
		- needed only if you don't (can't) use mmap.

  they are defiend in snd_pcm_ops_t struct and set up in
  pcm initizliation routine via snd_pcm_set_ops().

- when the interrupt occurs at period (fragment), call

	snd_pcm_period_elapsed(substream)

  just once per interrupt.

- no longer snd-xxx functions for allocating port, dma and irqs.
  you need to use standard functions.
  for releasing struct resources *, you have to use kfree_nocheck()
  to avoid malloc-wrapper.

- definitions of pci id table, probe(), remove() (suspend() and
  remove() if possible) on struct pci_driver.
  
- finally and best way - look at drivers on a same chip of both 0.5.x
  and 0.9.0, and compare them :)



Takashi

  parent reply	other threads:[~2002-04-08 14:55 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2002-04-04 13:41 Migration from 0.5 to 0.9? Leif Lindholm
2002-04-05  2:00 ` James Courtier-Dutton
2002-04-05 10:00   ` Leif Lindholm
2002-04-05 17:33     ` James Courtier-Dutton
2002-04-05 18:29       ` Eric Dantan Rzewnicki
2002-04-05 18:52         ` James Courtier-Dutton
2002-04-06 19:00       ` leif.lindholm
2002-04-08 14:55 ` Takashi Iwai [this message]
2002-04-08 15:10   ` James Courtier-Dutton
     [not found]   ` <1018278586.8016.24.camel@lel1.sthlm.i3micro.se>
2002-04-08 15:19     ` 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=s5hd6xame8v.wl@alsa2.suse.de \
    --to=tiwai@suse.de \
    --cc=alsa-devel@alsa-project.org \
    --cc=leif.lindholm@i3micro.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.