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(); }
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(); }