Loading sound/pci/lola/lola.c +22 −5 Original line number Diff line number Diff line Loading @@ -587,14 +587,31 @@ static int __devinit lola_create(struct snd_card *card, struct pci_dev *pci, chip->pci = pci; chip->irq = -1; chip->sample_rate_min = sample_rate_min[dev]; chip->granularity = granularity[dev]; /* FIXME */ if (chip->granularity != LOLA_GRANULARITY_MAX) { switch (chip->granularity) { case 8: chip->sample_rate_max = 48000; break; case 16: chip->sample_rate_max = 96000; break; case 32: chip->sample_rate_max = 192000; break; default: snd_printk(KERN_WARNING SFX "Only %d granularity is supported for now\n", LOLA_GRANULARITY_MAX); "Invalid granularity %d, reset to %d\n", chip->granularity, LOLA_GRANULARITY_MAX); chip->granularity = LOLA_GRANULARITY_MAX; chip->sample_rate_max = 192000; break; } chip->sample_rate_min = sample_rate_min[dev]; if (chip->sample_rate_min > chip->sample_rate_max) { snd_printk(KERN_WARNING SFX "Invalid sample_rate_min %d, reset to 16000\n", chip->sample_rate_min); chip->sample_rate_min = 16000; } err = pci_request_regions(pci, DRVNAME); Loading sound/pci/lola/lola.h +1 −0 Original line number Diff line number Diff line Loading @@ -367,6 +367,7 @@ struct lola { /* parameters */ unsigned int granularity; unsigned int sample_rate_min; unsigned int sample_rate_max; /* flags */ unsigned int running :1; Loading sound/pci/lola/lola_pcm.c +4 −2 Original line number Diff line number Diff line Loading @@ -178,14 +178,16 @@ static int lola_pcm_open(struct snd_pcm_substream *substream) str->opened = 1; runtime->hw = lola_pcm_hw; runtime->hw.channels_max = pcm->num_streams - str->index; runtime->hw.rate_min = chip->sample_rate_min; runtime->hw.rate_max = chip->sample_rate_max; snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS); /* period size = multiple of chip->granularity (8, 16 or 32 frames) * use LOLA_GRANULARITY_MAX = 32 for instance */ snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_SIZE, LOLA_GRANULARITY_MAX); chip->granularity); snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, LOLA_GRANULARITY_MAX); chip->granularity); mutex_unlock(&chip->open_mutex); return 0; } Loading Loading
sound/pci/lola/lola.c +22 −5 Original line number Diff line number Diff line Loading @@ -587,14 +587,31 @@ static int __devinit lola_create(struct snd_card *card, struct pci_dev *pci, chip->pci = pci; chip->irq = -1; chip->sample_rate_min = sample_rate_min[dev]; chip->granularity = granularity[dev]; /* FIXME */ if (chip->granularity != LOLA_GRANULARITY_MAX) { switch (chip->granularity) { case 8: chip->sample_rate_max = 48000; break; case 16: chip->sample_rate_max = 96000; break; case 32: chip->sample_rate_max = 192000; break; default: snd_printk(KERN_WARNING SFX "Only %d granularity is supported for now\n", LOLA_GRANULARITY_MAX); "Invalid granularity %d, reset to %d\n", chip->granularity, LOLA_GRANULARITY_MAX); chip->granularity = LOLA_GRANULARITY_MAX; chip->sample_rate_max = 192000; break; } chip->sample_rate_min = sample_rate_min[dev]; if (chip->sample_rate_min > chip->sample_rate_max) { snd_printk(KERN_WARNING SFX "Invalid sample_rate_min %d, reset to 16000\n", chip->sample_rate_min); chip->sample_rate_min = 16000; } err = pci_request_regions(pci, DRVNAME); Loading
sound/pci/lola/lola.h +1 −0 Original line number Diff line number Diff line Loading @@ -367,6 +367,7 @@ struct lola { /* parameters */ unsigned int granularity; unsigned int sample_rate_min; unsigned int sample_rate_max; /* flags */ unsigned int running :1; Loading
sound/pci/lola/lola_pcm.c +4 −2 Original line number Diff line number Diff line Loading @@ -178,14 +178,16 @@ static int lola_pcm_open(struct snd_pcm_substream *substream) str->opened = 1; runtime->hw = lola_pcm_hw; runtime->hw.channels_max = pcm->num_streams - str->index; runtime->hw.rate_min = chip->sample_rate_min; runtime->hw.rate_max = chip->sample_rate_max; snd_pcm_hw_constraint_integer(runtime, SNDRV_PCM_HW_PARAM_PERIODS); /* period size = multiple of chip->granularity (8, 16 or 32 frames) * use LOLA_GRANULARITY_MAX = 32 for instance */ snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_BUFFER_SIZE, LOLA_GRANULARITY_MAX); chip->granularity); snd_pcm_hw_constraint_step(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, LOLA_GRANULARITY_MAX); chip->granularity); mutex_unlock(&chip->open_mutex); return 0; } Loading