Commit 95a5b085 authored by Takashi Iwai's avatar Takashi Iwai Committed by Jaroslav Kysela

[ALSA] Fixes to follow the standard coding style

Fixed the tutorial to follow the standard kernel coding style.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
Signed-off-by: default avatarJaroslav Kysela <perex@suse.cz>
parent 5b31954e
...@@ -18,8 +18,8 @@ ...@@ -18,8 +18,8 @@
</affiliation> </affiliation>
</author> </author>
<date>November 17, 2005</date> <date>July 26, 2007</date>
<edition>0.3.6</edition> <edition>0.3.6.1</edition>
<abstract> <abstract>
<para> <para>
...@@ -405,8 +405,9 @@ ...@@ -405,8 +405,9 @@
/* definition of the chip-specific record */ /* definition of the chip-specific record */
struct mychip { struct mychip {
struct snd_card *card; struct snd_card *card;
// rest of implementation will be in the section /* rest of implementation will be in the section
// "PCI Resource Managements" * "PCI Resource Managements"
*/
}; };
/* chip-specific destructor /* chip-specific destructor
...@@ -414,7 +415,7 @@ ...@@ -414,7 +415,7 @@
*/ */
static int snd_mychip_free(struct mychip *chip) static int snd_mychip_free(struct mychip *chip)
{ {
.... // will be implemented later... .... /* will be implemented later... */
} }
/* component-destructor /* component-destructor
...@@ -440,8 +441,9 @@ ...@@ -440,8 +441,9 @@
*rchip = NULL; *rchip = NULL;
// check PCI availability here /* check PCI availability here
// (see "PCI Resource Managements") * (see "PCI Resource Managements")
*/
.... ....
/* allocate a chip-specific data with zero filled */ /* allocate a chip-specific data with zero filled */
...@@ -451,12 +453,13 @@ ...@@ -451,12 +453,13 @@
chip->card = card; chip->card = card;
// rest of initialization here; will be implemented /* rest of initialization here; will be implemented
// later, see "PCI Resource Managements" * later, see "PCI Resource Managements"
*/
.... ....
if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
chip, &ops)) < 0) { if (err < 0) {
snd_mychip_free(chip); snd_mychip_free(chip);
return err; return err;
} }
...@@ -490,7 +493,8 @@ ...@@ -490,7 +493,8 @@
return -ENOMEM; return -ENOMEM;
/* (3) */ /* (3) */
if ((err = snd_mychip_create(card, pci, &chip)) < 0) { err = snd_mychip_create(card, pci, &chip);
if (err < 0) {
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
...@@ -502,10 +506,11 @@ ...@@ -502,10 +506,11 @@
card->shortname, chip->ioport, chip->irq); card->shortname, chip->ioport, chip->irq);
/* (5) */ /* (5) */
.... // implemented later .... /* implemented later */
/* (6) */ /* (6) */
if ((err = snd_card_register(card)) < 0) { err = snd_card_register(card);
if (err < 0) {
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
...@@ -605,7 +610,8 @@ ...@@ -605,7 +610,8 @@
<![CDATA[ <![CDATA[
struct mychip *chip; struct mychip *chip;
.... ....
if ((err = snd_mychip_create(card, pci, &chip)) < 0) { err = snd_mychip_create(card, pci, &chip);
if (err < 0) {
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
...@@ -666,7 +672,8 @@ ...@@ -666,7 +672,8 @@
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
if ((err = snd_card_register(card)) < 0) { err = snd_card_register(card);
if (err < 0) {
snd_card_free(card); snd_card_free(card);
return err; return err;
} }
...@@ -1091,7 +1098,7 @@ ...@@ -1091,7 +1098,7 @@
static int snd_mychip_free(struct mychip *chip) static int snd_mychip_free(struct mychip *chip)
{ {
/* disable hardware here if any */ /* disable hardware here if any */
.... // (not implemented in this document) .... /* (not implemented in this document) */
/* release the irq */ /* release the irq */
if (chip->irq >= 0) if (chip->irq >= 0)
...@@ -1119,7 +1126,8 @@ ...@@ -1119,7 +1126,8 @@
*rchip = NULL; *rchip = NULL;
/* initialize the PCI entry */ /* initialize the PCI entry */
if ((err = pci_enable_device(pci)) < 0) err = pci_enable_device(pci);
if (err < 0)
return err; return err;
/* check PCI availability (28bit DMA) */ /* check PCI availability (28bit DMA) */
if (pci_set_dma_mask(pci, DMA_28BIT_MASK) < 0 || if (pci_set_dma_mask(pci, DMA_28BIT_MASK) < 0 ||
...@@ -1141,7 +1149,8 @@ ...@@ -1141,7 +1149,8 @@
chip->irq = -1; chip->irq = -1;
/* (1) PCI resource allocation */ /* (1) PCI resource allocation */
if ((err = pci_request_regions(pci, "My Chip")) < 0) { err = pci_request_regions(pci, "My Chip");
if (err < 0) {
kfree(chip); kfree(chip);
pci_disable_device(pci); pci_disable_device(pci);
return err; return err;
...@@ -1156,10 +1165,10 @@ ...@@ -1156,10 +1165,10 @@
chip->irq = pci->irq; chip->irq = pci->irq;
/* (2) initialization of the chip hardware */ /* (2) initialization of the chip hardware */
.... // (not implemented in this document) .... /* (not implemented in this document) */
if ((err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, err = snd_device_new(card, SNDRV_DEV_LOWLEVEL, chip, &ops);
chip, &ops)) < 0) { if (err < 0) {
snd_mychip_free(chip); snd_mychip_free(chip);
return err; return err;
} }
...@@ -1233,7 +1242,8 @@ ...@@ -1233,7 +1242,8 @@
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
if ((err = pci_enable_device(pci)) < 0) err = pci_enable_device(pci);
if (err < 0)
return err; return err;
if (pci_set_dma_mask(pci, DMA_28BIT_MASK) < 0 || if (pci_set_dma_mask(pci, DMA_28BIT_MASK) < 0 ||
pci_set_consistent_dma_mask(pci, DMA_28BIT_MASK) < 0) { pci_set_consistent_dma_mask(pci, DMA_28BIT_MASK) < 0) {
...@@ -1294,7 +1304,8 @@ ...@@ -1294,7 +1304,8 @@
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
if ((err = pci_request_regions(pci, "My Chip")) < 0) { err = pci_request_regions(pci, "My Chip");
if (err < 0) {
kfree(chip); kfree(chip);
pci_disable_device(pci); pci_disable_device(pci);
return err; return err;
...@@ -1773,7 +1784,8 @@ ...@@ -1773,7 +1784,8 @@
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
runtime->hw = snd_mychip_playback_hw; runtime->hw = snd_mychip_playback_hw;
// more hardware-initialization will be done here /* more hardware-initialization will be done here */
....
return 0; return 0;
} }
...@@ -1781,7 +1793,8 @@ ...@@ -1781,7 +1793,8 @@
static int snd_mychip_playback_close(struct snd_pcm_substream *substream) static int snd_mychip_playback_close(struct snd_pcm_substream *substream)
{ {
struct mychip *chip = snd_pcm_substream_chip(substream); struct mychip *chip = snd_pcm_substream_chip(substream);
// the hardware-specific codes will be here /* the hardware-specific codes will be here */
....
return 0; return 0;
} }
...@@ -1793,7 +1806,8 @@ ...@@ -1793,7 +1806,8 @@
struct snd_pcm_runtime *runtime = substream->runtime; struct snd_pcm_runtime *runtime = substream->runtime;
runtime->hw = snd_mychip_capture_hw; runtime->hw = snd_mychip_capture_hw;
// more hardware-initialization will be done here /* more hardware-initialization will be done here */
....
return 0; return 0;
} }
...@@ -1801,7 +1815,8 @@ ...@@ -1801,7 +1815,8 @@
static int snd_mychip_capture_close(struct snd_pcm_substream *substream) static int snd_mychip_capture_close(struct snd_pcm_substream *substream)
{ {
struct mychip *chip = snd_pcm_substream_chip(substream); struct mychip *chip = snd_pcm_substream_chip(substream);
// the hardware-specific codes will be here /* the hardware-specific codes will be here */
....
return 0; return 0;
} }
...@@ -1844,10 +1859,12 @@ ...@@ -1844,10 +1859,12 @@
{ {
switch (cmd) { switch (cmd) {
case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_START:
// do something to start the PCM engine /* do something to start the PCM engine */
....
break; break;
case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_STOP:
// do something to stop the PCM engine /* do something to stop the PCM engine */
....
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -1900,8 +1917,8 @@ ...@@ -1900,8 +1917,8 @@
struct snd_pcm *pcm; struct snd_pcm *pcm;
int err; int err;
if ((err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, &pcm);
&pcm)) < 0) if (err < 0)
return err; return err;
pcm->private_data = chip; pcm->private_data = chip;
strcpy(pcm->name, "My Chip"); strcpy(pcm->name, "My Chip");
...@@ -1939,8 +1956,8 @@ ...@@ -1939,8 +1956,8 @@
struct snd_pcm *pcm; struct snd_pcm *pcm;
int err; int err;
if ((err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, err = snd_pcm_new(chip->card, "My Chip", 0, 1, 1, &pcm);
&pcm)) < 0) if (err < 0)
return err; return err;
pcm->private_data = chip; pcm->private_data = chip;
strcpy(pcm->name, "My Chip"); strcpy(pcm->name, "My Chip");
...@@ -2097,7 +2114,7 @@ ...@@ -2097,7 +2114,7 @@
struct mychip *chip = snd_pcm_chip(pcm); struct mychip *chip = snd_pcm_chip(pcm);
/* free your own data */ /* free your own data */
kfree(chip->my_private_pcm_data); kfree(chip->my_private_pcm_data);
// do what you like else /* do what you like else */
.... ....
} }
...@@ -2884,10 +2901,10 @@ struct _snd_pcm_runtime { ...@@ -2884,10 +2901,10 @@ struct _snd_pcm_runtime {
<![CDATA[ <![CDATA[
switch (cmd) { switch (cmd) {
case SNDRV_PCM_TRIGGER_START: case SNDRV_PCM_TRIGGER_START:
// do something to start the PCM engine /* do something to start the PCM engine */
break; break;
case SNDRV_PCM_TRIGGER_STOP: case SNDRV_PCM_TRIGGER_STOP:
// do something to stop the PCM engine /* do something to stop the PCM engine */
break; break;
default: default:
return -EINVAL; return -EINVAL;
...@@ -3071,7 +3088,7 @@ struct _snd_pcm_runtime { ...@@ -3071,7 +3088,7 @@ struct _snd_pcm_runtime {
spin_unlock(&chip->lock); spin_unlock(&chip->lock);
snd_pcm_period_elapsed(chip->substream); snd_pcm_period_elapsed(chip->substream);
spin_lock(&chip->lock); spin_lock(&chip->lock);
// acknowledge the interrupt if necessary /* acknowledge the interrupt if necessary */
} }
.... ....
spin_unlock(&chip->lock); spin_unlock(&chip->lock);
...@@ -3134,7 +3151,7 @@ struct _snd_pcm_runtime { ...@@ -3134,7 +3151,7 @@ struct _snd_pcm_runtime {
snd_pcm_period_elapsed(substream); snd_pcm_period_elapsed(substream);
spin_lock(&chip->lock); spin_lock(&chip->lock);
} }
// acknowledge the interrupt if necessary /* acknowledge the interrupt if necessary */
} }
.... ....
spin_unlock(&chip->lock); spin_unlock(&chip->lock);
...@@ -3604,7 +3621,7 @@ struct _snd_pcm_runtime { ...@@ -3604,7 +3621,7 @@ struct _snd_pcm_runtime {
<title>Example of info callback</title> <title>Example of info callback</title>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
static int snd_myctl_info(struct snd_kcontrol *kcontrol, static int snd_myctl_mono_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo) struct snd_ctl_elem_info *uinfo)
{ {
uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN; uinfo->type = SNDRV_CTL_ELEM_TYPE_BOOLEAN;
...@@ -3639,7 +3656,7 @@ struct _snd_pcm_runtime { ...@@ -3639,7 +3656,7 @@ struct _snd_pcm_runtime {
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
static int snd_myctl_info(struct snd_kcontrol *kcontrol, static int snd_myctl_enum_info(struct snd_kcontrol *kcontrol,
struct snd_ctl_elem_info *uinfo) struct snd_ctl_elem_info *uinfo)
{ {
static char *texts[4] = { static char *texts[4] = {
...@@ -3658,6 +3675,16 @@ struct _snd_pcm_runtime { ...@@ -3658,6 +3675,16 @@ struct _snd_pcm_runtime {
</programlisting> </programlisting>
</informalexample> </informalexample>
</para> </para>
<para>
Some common info callbacks are prepared for easy use:
<function>snd_ctl_boolean_mono_info()</function> and
<function>snd_ctl_boolean_stereo_info()</function>.
Obviously, the former is an info callback for a mono channel
boolean item, just like <function>snd_myctl_mono_info</function>
above, and the latter is for a stereo channel boolean item.
</para>
</section> </section>
<section id="control-interface-callbacks-get"> <section id="control-interface-callbacks-get">
...@@ -3794,7 +3821,8 @@ struct _snd_pcm_runtime { ...@@ -3794,7 +3821,8 @@ struct _snd_pcm_runtime {
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
if ((err = snd_ctl_add(card, snd_ctl_new1(&my_control, chip))) < 0) err = snd_ctl_add(card, snd_ctl_new1(&my_control, chip));
if (err < 0)
return err; return err;
]]> ]]>
</programlisting> </programlisting>
...@@ -3880,7 +3908,7 @@ struct _snd_pcm_runtime { ...@@ -3880,7 +3908,7 @@ struct _snd_pcm_runtime {
{ {
struct mychip *chip = ac97->private_data; struct mychip *chip = ac97->private_data;
.... ....
// read a register value here from the codec /* read a register value here from the codec */
return the_register_value; return the_register_value;
} }
...@@ -3889,7 +3917,7 @@ struct _snd_pcm_runtime { ...@@ -3889,7 +3917,7 @@ struct _snd_pcm_runtime {
{ {
struct mychip *chip = ac97->private_data; struct mychip *chip = ac97->private_data;
.... ....
// write the given register value to the codec /* write the given register value to the codec */
} }
static int snd_mychip_ac97(struct mychip *chip) static int snd_mychip_ac97(struct mychip *chip)
...@@ -3902,7 +3930,8 @@ struct _snd_pcm_runtime { ...@@ -3902,7 +3930,8 @@ struct _snd_pcm_runtime {
.read = snd_mychip_ac97_read, .read = snd_mychip_ac97_read,
}; };
if ((err = snd_ac97_bus(chip->card, 0, &ops, NULL, &bus)) < 0) err = snd_ac97_bus(chip->card, 0, &ops, NULL, &bus);
if (err < 0)
return err; return err;
memset(&ac97, 0, sizeof(ac97)); memset(&ac97, 0, sizeof(ac97));
ac97.private_data = chip; ac97.private_data = chip;
...@@ -4447,10 +4476,10 @@ struct _snd_pcm_runtime { ...@@ -4447,10 +4476,10 @@ struct _snd_pcm_runtime {
<informalexample> <informalexample>
<programlisting> <programlisting>
<![CDATA[ <![CDATA[
struct list_head *list;
struct snd_rawmidi_substream *substream; struct snd_rawmidi_substream *substream;
list_for_each(list, &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT].substreams) { list_for_each_entry(substream,
substream = list_entry(list, struct snd_rawmidi_substream, list); &rmidi->streams[SNDRV_RAWMIDI_STREAM_OUTPUT].substreams,
list {
sprintf(substream->name, "My MIDI Port %d", substream->number + 1); sprintf(substream->name, "My MIDI Port %d", substream->number + 1);
} }
/* same for SNDRV_RAWMIDI_STREAM_INPUT */ /* same for SNDRV_RAWMIDI_STREAM_INPUT */
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment