void diagfwd_exit(void) { smd_close(driver->ch); smd_close(driver->chqdsp); driver->ch = 0; /*SMD can make this NULL */ driver->chqdsp = 0; if (driver->usb_connected) diag_close(); platform_driver_unregister(&msm_smd_ch1_driver); diag_usb_unregister(); kfree(driver->usb_buf_in); kfree(driver->usb_buf_in_qdsp); kfree(driver->usb_buf_out); kfree(driver->hdlc_buf); kfree(driver->msg_masks); kfree(driver->log_masks); kfree(driver->event_masks); kfree(driver->client_map); kfree(driver->buf_tbl); kfree(driver->data_ready); kfree(driver->table); kfree(driver->pkt_buf); kfree(driver->usb_write_ptr); kfree(driver->usb_write_ptr_qdsp); kfree(driver->usb_read_ptr); }
void diagfwd_exit(void) { smd_close(driver->ch); smd_close(driver->chqdsp); driver->ch = 0; /*SMD can make this NULL */ driver->chqdsp = 0; #ifdef CONFIG_DIAG_OVER_USB #ifdef CONFIG_SH_USB_CUST if (driver->usb_connected) diag_close(); #else /* CONFIG_SH_USB_CUST */ if (driver->usb_connected) usb_diag_free_req(driver->legacy_ch); #endif /* CONFIG_SH_USB_CUST */ #endif platform_driver_unregister(&msm_smd_ch1_driver); #ifdef CONFIG_DIAG_OVER_USB #ifdef CONFIG_SH_USB_CUST diag_usb_unregister(); #else /* CONFIG_SH_USB_CUST */ usb_diag_close(driver->legacy_ch); #endif /* CONFIG_SH_USB_CUST */ #endif kfree(driver->buf_in_1); kfree(driver->buf_in_2); kfree(driver->buf_in_qdsp_1); kfree(driver->buf_in_qdsp_2); kfree(driver->usb_buf_out); kfree(driver->hdlc_buf); kfree(driver->msg_masks); kfree(driver->log_masks); kfree(driver->event_masks); kfree(driver->client_map); kfree(driver->buf_tbl); kfree(driver->data_ready); kfree(driver->table); kfree(driver->pkt_buf); kfree(driver->write_ptr_1); kfree(driver->write_ptr_2); kfree(driver->write_ptr_qdsp_1); kfree(driver->write_ptr_qdsp_2); kfree(driver->usb_read_ptr); kfree(driver->apps_rsp_buf); #ifndef CONFIG_SH_USB_CUST destroy_workqueue(driver->diag_wq); #endif /* CONFIG_SH_USB_CUST */ }