示例#1
0
void tdm_if_exit(void)
{
	/* Check if already stopped */
	if(!irq_init && !pcm_enable && !tdm_init)
		return;

	TRC_REC("->%s\n",__FUNCTION__);

	if(irq_init) {
		/* Release IRQ */
		free_irq(irqnr, NULL);
		irq_init = 0;
	}

	/* Stop PCM data sampling */
	if(pcm_enable)
		tdm_if_pcm_stop();

	if(tdm_init) {
#ifdef CONFIG_MV_TDM_SUPPORT
		mvTdmRelease();
#else
		mvCommUnitRelease();
#endif
		tdm_init = 0;
	}

	/* Remove proc directory & entries */
	remove_proc_entry("tdm_init", tdm_stats);
	remove_proc_entry("rx_miss", tdm_stats);
	remove_proc_entry("tx_miss", tdm_stats);
	remove_proc_entry("rx_over", tdm_stats);
	remove_proc_entry("tx_under", tdm_stats);
	remove_proc_entry("tdm", NULL);

	TRC_REC("<-%s\n",__FUNCTION__);

	TRC_OUTPUT();
	TRC_RELEASE();
}
示例#2
0
文件: mp.c 项目: juergh/dns323-fw
static void __exit mp_exit(void)
{
	MV_PHONE *mp;
	int i;

	TRC_REC("->%s\n",__FUNCTION__);

	for(i=0; i<MV_TDM_MAX_CHANNELS; i++) {
		TRC_REC("ch%d remove\n",i);
		mp = get_mp(i);
		mvTdmChRemove(mp->ch_info);
		mp->irq = 0;
		mp->p.f_op = NULL;
		mp->p.open = NULL;
		mp->p.board = 0;
		phone_unregister_device(&mp->p);
		printk("phone%d removed\n",i);
	}

	TRC_REC("<-%s\n",__FUNCTION__);
	TRC_OUTPUT();
	TRC_RELEASE();
}