if (hdsp->io_type == H9632) { runtime->hw.channels_min = hdsp->qs_out_channels; runtime->hw.channels_max = hdsp->ss_out_channels; 
if (hdsp->clock_source_locked) { runtime->hw.rate_min = runtime->hw.rate_max = hdsp->system_sample_rate; } else if (hdsp->io_type == H9632) { 
static int snd_hdsp_playback_open(snd_pcm_substream_t *substream){	hdsp_t *hdsp = snd_pcm_substream_chip(substream);	snd_pcm_runtime_t *runtime = substream->runtime;	if (hdsp_check_for_iobox (hdsp)) {		return -EIO;	}	if (hdsp_check_for_firmware(hdsp)) {		if (hdsp->state & HDSP_FirmwareCached) {			if (snd_hdsp_load_firmware_from_cache(hdsp) != 0) {				snd_printk("Hammerfall-DSP: Firmware loading from cache failed, please upload manually.\n");			}		} else {			snd_printk("Hammerfall-DSP: No firmware loaded nor cached, please upload firmware.\n");		}		return -EIO;	}	spin_lock_irq(&hdsp->lock);	snd_pcm_set_sync(substream);        runtime->hw = snd_hdsp_playback_subinfo;	runtime->dma_area = hdsp->playback_buffer;	runtime->dma_bytes = HDSP_DMA_AREA_BYTES;	hdsp->playback_pid = current->pid;	hdsp->playback_substream = substream;	spin_unlock_irq(&hdsp->lock);	snd_pcm_hw_constraint_msbits(runtime, 0, 32, 24);	snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_PERIOD_SIZE, &hdsp_hw_constraints_period_sizes);	if (hdsp->io_type == H9632) {		runtime->hw.channels_min = hdsp->qs_out_channels;		runtime->hw.channels_max = hdsp->ss_out_channels;		runtime->hw.rate_max = 192000;		runtime->hw.rates = SNDRV_PCM_RATE_KNOT;		snd_pcm_hw_constraint_list(runtime, 0, SNDRV_PCM_HW_PARAM_RATE, &hdsp_hw_constraints_9632_sample_rates);	}		snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,			     snd_hdsp_hw_rule_out_channels, hdsp,			     SNDRV_PCM_HW_PARAM_CHANNELS, -1);	snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_CHANNELS,			     snd_hdsp_hw_rule_out_channels_rate, hdsp,			     SNDRV_PCM_HW_PARAM_RATE, -1);	snd_pcm_hw_rule_add(runtime, 0, SNDRV_PCM_HW_PARAM_RATE,			     snd_hdsp_hw_rule_rate_out_channels, hdsp,			     SNDRV_PCM_HW_PARAM_CHANNELS, -1);	hdsp->creg_spdif_stream = hdsp->creg_spdif;	hdsp->spdif_ctl->vd[0].access &= ~SNDRV_CTL_ELEM_ACCESS_INACTIVE;	snd_ctl_notify(hdsp->card, SNDRV_CTL_EVENT_MASK_VALUE |		       SNDRV_CTL_EVENT_MASK_INFO, &hdsp->spdif_ctl->id);	return 0;}
4520	/local/tlutelli/issta_data/temp/c/2005_temp/2005/4520/e3ea4d896109edd64dc549ecaeeff8d89025fb57/hdsp.c/clean/sound/pci/rme9652/hdsp.c