Commit fe3d393e authored by Takashi Iwai's avatar Takashi Iwai

ALSA: lola - Add Lola-specific module options

Added granularity and sample_rate_min module options.

The former controls the h/w access granularity.  As default, it's set
to the max value 32.

The latter controls the minimum sample rate in Hz, as default 16000.
Signed-off-by: default avatarTakashi Iwai <tiwai@suse.de>
parent 0f8f56c9
...@@ -32,6 +32,7 @@ ...@@ -32,6 +32,7 @@
#include <sound/initval.h> #include <sound/initval.h>
#include "lola.h" #include "lola.h"
/* Standard options */
static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX; static int index[SNDRV_CARDS] = SNDRV_DEFAULT_IDX;
static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR; static char *id[SNDRV_CARDS] = SNDRV_DEFAULT_STR;
static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP; static int enable[SNDRV_CARDS] = SNDRV_DEFAULT_ENABLE_PNP;
...@@ -43,6 +44,28 @@ MODULE_PARM_DESC(id, "ID string for Digigram Lola driver."); ...@@ -43,6 +44,28 @@ MODULE_PARM_DESC(id, "ID string for Digigram Lola driver.");
module_param_array(enable, bool, NULL, 0444); module_param_array(enable, bool, NULL, 0444);
MODULE_PARM_DESC(enable, "Enable Digigram Lola driver."); MODULE_PARM_DESC(enable, "Enable Digigram Lola driver.");
/* Lola-specific options */
/* for instance use always max granularity which is compatible
* with all sample rates
*/
static int granularity[SNDRV_CARDS] = {
[0 ... (SNDRV_CARDS - 1)] = LOLA_GRANULARITY_MAX
};
/* below a sample_rate of 16kHz the analogue audio quality is NOT excellent */
static int sample_rate_min[SNDRV_CARDS] = {
[0 ... (SNDRV_CARDS - 1) ] = 16000
};
module_param_array(granularity, int, NULL, 0444);
MODULE_PARM_DESC(granularity, "Granularity value");
module_param_array(sample_rate_min, int, NULL, 0444);
MODULE_PARM_DESC(sample_rate_min, "Minimal sample rate");
/*
*/
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_SUPPORTED_DEVICE("{{Digigram, Lola}}"); MODULE_SUPPORTED_DEVICE("{{Digigram, Lola}}");
MODULE_DESCRIPTION("Digigram Lola driver"); MODULE_DESCRIPTION("Digigram Lola driver");
...@@ -536,7 +559,7 @@ static int lola_dev_free(struct snd_device *device) ...@@ -536,7 +559,7 @@ static int lola_dev_free(struct snd_device *device)
} }
static int __devinit lola_create(struct snd_card *card, struct pci_dev *pci, static int __devinit lola_create(struct snd_card *card, struct pci_dev *pci,
struct lola **rchip) int dev, struct lola **rchip)
{ {
struct lola *chip; struct lola *chip;
int err; int err;
...@@ -564,14 +587,16 @@ static int __devinit lola_create(struct snd_card *card, struct pci_dev *pci, ...@@ -564,14 +587,16 @@ static int __devinit lola_create(struct snd_card *card, struct pci_dev *pci,
chip->pci = pci; chip->pci = pci;
chip->irq = -1; chip->irq = -1;
/* below a sample_rate of 16kHz the analogue audio quality chip->sample_rate_min = sample_rate_min[dev];
* is NOT excellent
*/ chip->granularity = granularity[dev];
chip->sample_rate_min = 16000; /* FIXME */
/* for instance use always max granularity which is compatible if (chip->granularity != LOLA_GRANULARITY_MAX) {
* with all sample rates snd_printk(KERN_WARNING SFX
*/ "Only %d granularity is supported for now\n",
chip->granularity = LOLA_GRANULARITY_MAX; LOLA_GRANULARITY_MAX);
chip->granularity = LOLA_GRANULARITY_MAX;
}
err = pci_request_regions(pci, DRVNAME); err = pci_request_regions(pci, DRVNAME);
if (err < 0) { if (err < 0) {
...@@ -674,7 +699,7 @@ static int __devinit lola_probe(struct pci_dev *pci, ...@@ -674,7 +699,7 @@ static int __devinit lola_probe(struct pci_dev *pci,
snd_card_set_dev(card, &pci->dev); snd_card_set_dev(card, &pci->dev);
err = lola_create(card, pci, &chip); err = lola_create(card, pci, dev, &chip);
if (err < 0) if (err < 0)
goto out_free; goto out_free;
card->private_data = chip; card->private_data = chip;
......
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