diff options
Diffstat (limited to 'sound/pci/cs46xx/dsp_spos.c')
| -rw-r--r-- | sound/pci/cs46xx/dsp_spos.c | 133 | 
1 files changed, 36 insertions, 97 deletions
diff --git a/sound/pci/cs46xx/dsp_spos.c b/sound/pci/cs46xx/dsp_spos.c index 5fc497c6d738..c28e58602679 100644 --- a/sound/pci/cs46xx/dsp_spos.c +++ b/sound/pci/cs46xx/dsp_spos.c @@ -799,92 +799,49 @@ int cs46xx_dsp_proc_init (struct snd_card *card, struct snd_cs46xx *chip)  	ins->snd_card = card; -	if ((entry = snd_info_create_card_entry(card, "dsp", card->proc_root)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; +	entry = snd_info_create_card_entry(card, "dsp", card->proc_root); +	if (entry)  		entry->mode = S_IFDIR | 0555; -       -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -  	ins->proc_dsp_dir = entry;  	if (!ins->proc_dsp_dir)  		return -ENOMEM; -	if ((entry = snd_info_create_card_entry(card, "spos_symbols", ins->proc_dsp_dir)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; -		entry->private_data = chip; -		entry->mode = S_IFREG | 0644; -		entry->c.text.read = cs46xx_dsp_proc_symbol_table_read; -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -	ins->proc_sym_info_entry = entry; +	entry = snd_info_create_card_entry(card, "spos_symbols", +					   ins->proc_dsp_dir); +	if (entry) +		snd_info_set_text_ops(entry, chip, +				      cs46xx_dsp_proc_symbol_table_read); -	if ((entry = snd_info_create_card_entry(card, "spos_modules", ins->proc_dsp_dir)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; -		entry->private_data = chip; -		entry->mode = S_IFREG | 0644; -		entry->c.text.read = cs46xx_dsp_proc_modules_read; -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -	ins->proc_modules_info_entry = entry; - -	if ((entry = snd_info_create_card_entry(card, "parameter", ins->proc_dsp_dir)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; -		entry->private_data = chip; -		entry->mode = S_IFREG | 0644; -		entry->c.text.read = cs46xx_dsp_proc_parameter_dump_read; -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -	ins->proc_parameter_dump_info_entry = entry; - -	if ((entry = snd_info_create_card_entry(card, "sample", ins->proc_dsp_dir)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; -		entry->private_data = chip; -		entry->mode = S_IFREG | 0644; -		entry->c.text.read = cs46xx_dsp_proc_sample_dump_read; -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -	ins->proc_sample_dump_info_entry = entry; - -	if ((entry = snd_info_create_card_entry(card, "task_tree", ins->proc_dsp_dir)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; -		entry->private_data = chip; -		entry->mode = S_IFREG | 0644; -		entry->c.text.read = cs46xx_dsp_proc_task_tree_read; -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -	ins->proc_task_info_entry = entry; - -	if ((entry = snd_info_create_card_entry(card, "scb_info", ins->proc_dsp_dir)) != NULL) { -		entry->content = SNDRV_INFO_CONTENT_TEXT; -		entry->private_data = chip; -		entry->mode = S_IFREG | 0644; -		entry->c.text.read = cs46xx_dsp_proc_scb_read; -		if (snd_info_register(entry) < 0) { -			snd_info_free_entry(entry); -			entry = NULL; -		} -	} -	ins->proc_scb_info_entry = entry; +	entry = snd_info_create_card_entry(card, "spos_modules", +					   ins->proc_dsp_dir); +	if (entry) +		snd_info_set_text_ops(entry, chip, +				      cs46xx_dsp_proc_modules_read); + +	entry = snd_info_create_card_entry(card, "parameter", +					   ins->proc_dsp_dir); +	if (entry) +		snd_info_set_text_ops(entry, chip, +				      cs46xx_dsp_proc_parameter_dump_read); + +	entry = snd_info_create_card_entry(card, "sample", +					   ins->proc_dsp_dir); +	if (entry) +		snd_info_set_text_ops(entry, chip, +				      cs46xx_dsp_proc_sample_dump_read); + +	entry = snd_info_create_card_entry(card, "task_tree", +					   ins->proc_dsp_dir); +	if (entry) +		snd_info_set_text_ops(entry, chip, +				      cs46xx_dsp_proc_task_tree_read); + +	entry = snd_info_create_card_entry(card, "scb_info", +					   ins->proc_dsp_dir); +	if (entry) +		snd_info_set_text_ops(entry, chip, +				      cs46xx_dsp_proc_scb_read);  	mutex_lock(&chip->spos_mutex);  	/* register/update SCB's entries on proc */ @@ -906,24 +863,6 @@ int cs46xx_dsp_proc_done (struct snd_cs46xx *chip)  	if (!ins)  		return 0; -	snd_info_free_entry(ins->proc_sym_info_entry); -	ins->proc_sym_info_entry = NULL; - -	snd_info_free_entry(ins->proc_modules_info_entry); -	ins->proc_modules_info_entry = NULL; - -	snd_info_free_entry(ins->proc_parameter_dump_info_entry); -	ins->proc_parameter_dump_info_entry = NULL; - -	snd_info_free_entry(ins->proc_sample_dump_info_entry); -	ins->proc_sample_dump_info_entry = NULL; - -	snd_info_free_entry(ins->proc_scb_info_entry); -	ins->proc_scb_info_entry = NULL; - -	snd_info_free_entry(ins->proc_task_info_entry); -	ins->proc_task_info_entry = NULL; -  	mutex_lock(&chip->spos_mutex);  	for (i = 0; i < ins->nscb; ++i) {  		if (ins->scbs[i].deleted) continue;  |