int diagfwd_disconnect_bridge(int process_cable) { DIAGFWD_INFO("diag: In %s, process_cable: %d\n", __func__, process_cable); if (process_cable) { driver->usb_mdm_connected = 0; driver->qxdmusb_drop = 1; usb_diag_free_req(driver->mdm_ch); } if (driver->hsic_device_enabled && driver->logging_mode != MEMORY_DEVICE_MODE) { #if 0 driver->in_busy_hsic_read_on_device = 1; driver->in_busy_hsic_write = 1; return diag_hsic_close(); #endif } else if (driver->diag_smux_enabled && driver->logging_mode == USB_MODE) { driver->in_busy_smux = 1; driver->lcid = LCID_INVALID; #if 0 driver->smux_connected = 0; #endif msm_smux_close(LCID_VALID); } return 0; }
/* * diagfwd_disconnect_bridge is called when the USB mdm channel * is disconnected */ int diagfwd_disconnect_bridge(int process_cable) { pr_debug("DIAG in %s\n", __func__); /* If the usb cable is being disconnected */ if (process_cable) { driver->usb_mdm_connected = 0; usb_diag_free_req(driver->mdm_ch); } if (driver->logging_mode != MEMORY_DEVICE_MODE) { if (driver->hsic_device_enabled) { driver->in_busy_hsic_write_on_device = 1; driver->in_busy_hsic_read_on_device = 1; driver->in_busy_hsic_write = 1; driver->in_busy_hsic_read = 1; /* Turn off communication over usb mdm and hsic */ return diag_hsic_close(); } else if (driver->diag_smux_enabled) { driver->in_busy_smux = 1; driver->lcid = LCID_INVALID; /* Turn off communication over usb mdm and smux */ msm_smux_close(LCID_VALID); } } return 0; }
int diagfwd_disconnect(void) { DIAGFWD_INFO("%s\n", __func__); driver->in_busy_1 = 1; driver->in_busy_2 = 1; driver->in_busy_qdsp_1 = 1; driver->in_busy_qdsp_2 = 1; driver->debug_flag = 1; if (driver->usb_connected) usb_diag_free_req(driver->legacy_ch); #if defined(CONFIG_MACH_MECHA) driver->in_busy_mdm_1 = 1; driver->in_busy_mdm_2 = 1; #endif #if defined(CONFIG_ARCH_MSM8X60_LTE) if (diag_ch_sdio) { if (driver->legacy_ch && !IS_ERR(driver->legacy_ch)) diagfwd_disconnect_sdio(); } else { if (driver->usb_connected && driver->mdm_ch && !IS_ERR(driver->mdm_ch)) diagfwd_disconnect_sdio(); } #endif driver->usb_connected = 0; /* TBD - notify and flow control SMD */ return 0; }
int diagfwd_disconnect_sdio(void) { /* Clear variable to Flush remaining data from SDIO channel */ driver->in_busy_sdio = 0; usb_diag_free_req(driver->mdm_ch); return 0; }
void diagfwd_bridge_exit(void) { pr_debug("diag: in %s\n", __func__); if (driver->hsic_device_enabled) { diag_hsic_close(); driver->hsic_device_enabled = 0; diagmem_exit(driver, POOL_TYPE_ALL); } if (driver->diag_smux_enabled) { driver->lcid = LCID_INVALID; kfree(driver->buf_in_smux); driver->diag_smux_enabled = 0; } platform_driver_unregister(&msm_hsic_ch_driver); platform_driver_unregister(&msm_diagfwd_smux_driver); #ifdef CONFIG_DIAG_OVER_USB if (driver->usb_mdm_connected) usb_diag_free_req(driver->mdm_ch); usb_diag_close(driver->mdm_ch); #endif kfree(driver->usb_buf_mdm_out); kfree(driver->hsic_buf_tbl); kfree(driver->write_ptr_mdm); kfree(driver->usb_read_mdm_ptr); destroy_workqueue(driver->diag_bridge_wq); }
void diagfwd_sdio_exit(void) { #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->mdm_ch); #endif /* CONFIG_SH_USB_CUST */ #endif platform_driver_unregister(&msm_sdio_ch_driver); #ifdef CONFIG_DIAG_OVER_USB #ifdef CONFIG_SH_USB_CUST // diag_usb_unregister(); #else /* CONFIG_SH_USB_CUST */ usb_diag_close(driver->mdm_ch); #endif /* CONFIG_SH_USB_CUST */ #endif kfree(driver->buf_in_sdio); kfree(driver->usb_buf_mdm_out); kfree(driver->write_ptr_mdm); kfree(driver->usb_read_mdm_ptr); destroy_workqueue(driver->diag_sdio_wq); }
void diagfwd_exit(void) { int i; for (i = 0; i < NUM_SMD_DATA_CHANNELS; i++) diag_smd_destructor(&driver->smd_data[i]); #ifdef CONFIG_DIAG_OVER_USB if (driver->usb_connected) usb_diag_free_req(driver->legacy_ch); usb_diag_close(driver->legacy_ch); #endif platform_driver_unregister(&msm_smd_ch1_driver); platform_driver_unregister(&msm_diag_dci_driver); platform_driver_unregister(&diag_smd_lite_driver); kfree(driver->buf_msg_mask_update); kfree(driver->buf_log_mask_update); kfree(driver->buf_event_mask_update); kfree(driver->usb_buf_out); kfree(driver->hdlc_buf); kfree(driver->client_map); kfree(driver->buf_tbl); kfree(driver->data_ready); kfree(driver->table); kfree(driver->pkt_buf); kfree(driver->usb_read_ptr); kfree(driver->apps_rsp_buf); kfree(driver->user_space_data); destroy_workqueue(driver->diag_wq); }
int diagfwd_disconnect_sdio(void) { driver->in_busy_sdio = 1; usb_diag_free_req(driver->mdm_ch); if (driver->sdio_ch && (driver->logging_mode == USB_MODE)) diag_sdio_close(); return 0; }
int diagfwd_disconnect_sdio(void) { driver->in_busy_sdio = 1; #ifdef CONFIG_SH_USB_CUST // diag_close(); #else /* CONFIG_SH_USB_CUST */ usb_diag_free_req(driver->mdm_ch); #endif /* CONFIG_SH_USB_CUST */ return 0; }
int diagfwd_disconnect_sdio(void) { DIAG_INFO("%s \n", __func__); /* Clear variable to Flush remaining data from SDIO channel */ driver->in_busy_sdio_1 = 0; driver->in_busy_sdio_2 = 0; if (!strcmp(DIAG_MDM, usb_ch_name)) { usb_diag_free_req(driver->mdm_ch); } return 0; }
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 if (driver->usb_connected) usb_diag_free_req(driver->legacy_ch); #endif platform_driver_unregister(&msm_smd_ch1_driver); #ifdef CONFIG_DIAG_OVER_USB usb_diag_close(driver->legacy_ch); #endif kfree(driver->buf_in_1); kfree(driver->buf_in_2); kfree(driver->buf_in_qdsp_1); kfree(driver->buf_in_qdsp_2); #if defined(CONFIG_MACH_MECHA) //|| defined(CONFIG_ARCH_MSM8X60_LTE) kfree(driver->buf_in_mdm_1); kfree(driver->buf_in_mdm_2); #endif 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); #if defined(CONFIG_MACH_MECHA) //|| defined(CONFIG_ARCH_MSM8X60_LTE) kfree(driver->mdmclient_map); //kfree(driver->mdmbuf_tbl); kfree(driver->mdmdata_ready); #endif 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); #if defined(CONFIG_MACH_MECHA) //|| defined(CONFIG_ARCH_MSM8X60_LTE) kfree(driver->write_ptr_mdm_1); kfree(driver->write_ptr_mdm_2); #endif kfree(driver->usb_read_ptr); #ifdef CONFIG_DIAG_NO_MODEM kfree(driver->apps_rsp_buf); #endif destroy_workqueue(driver->diag_wq); }
int diagfwd_disconnect(void) { printk(KERN_DEBUG "diag: USB disconnected\n"); driver->usb_connected = 0; driver->in_busy_1 = 1; driver->in_busy_2 = 1; driver->in_busy_qdsp_1 = 1; driver->in_busy_qdsp_2 = 1; driver->debug_flag = 1; usb_diag_free_req(driver->legacy_ch); /* TBD - notify and flow control SMD */ return 0; }
/* * diagfwd_disconnect_hsic is called when the USB mdm channel * is disconnected */ static int diagfwd_disconnect_hsic(void) { pr_debug("DIAG in %s\n", __func__); driver->usb_mdm_connected = 0; usb_diag_free_req(driver->mdm_ch); driver->in_busy_hsic_write_on_mdm = 1; driver->in_busy_hsic_read_on_mdm = 1; driver->in_busy_hsic_write = 1; driver->in_busy_hsic_read = 1; /* Turn off communication over usb mdm and hsic */ return diag_hsic_close(); }
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 */ }
/* * diagfwd_disconnect_bridge is called when the USB mdm channel * is disconnected. So disconnect should happen for all bridges */ int diagfwd_disconnect_bridge(int process_cable) { int i; pr_debug("diag: In %s, process_cable: %d\n", __func__, process_cable); for (i = 0; i < MAX_BRIDGES; i++) { if (diag_bridge[i].enabled) { mutex_lock(&diag_bridge[i].bridge_mutex); /* If the usb cable is being disconnected */ if (process_cable) { diag_bridge[i].usb_connected = 0; usb_diag_free_req(diag_bridge[i].ch); driver->qxdmusb_drop = 1; } if (i == SMUX) { if (driver->diag_smux_enabled && driver->logging_mode == USB_MODE) { driver->in_busy_smux = 1; driver->lcid = LCID_INVALID; driver->smux_connected = 0; /* * Turn off communication over usb * and smux */ msm_smux_close(LCID_VALID); } } else { if (diag_hsic[i].hsic_device_enabled && (driver->logging_mode != MEMORY_DEVICE_MODE || !diag_hsic[i].hsic_data_requested)) { #if !DIAG_XPST diag_hsic[i]. in_busy_hsic_read_on_device = 1; diag_hsic[i].in_busy_hsic_write = 1; /* Turn off communication over usb * and HSIC */ diag_hsic_close(i); #endif } } mutex_unlock(&diag_bridge[i].bridge_mutex); } } return 0; }
int diagfwd_disconnect(void) { printk(KERN_DEBUG "diag: USB disconnected\n"); driver->usb_connected = 0; driver->in_busy_1 = 1; driver->in_busy_2 = 1; driver->in_busy_qdsp_1 = 1; driver->in_busy_qdsp_2 = 1; driver->debug_flag = 1; usb_diag_free_req(driver->legacy_ch); #ifdef CONFIG_DIAG_SDIO_PIPE if (machine_is_msm8x60_charm_surf() || machine_is_msm8x60_charm_ffa()) if (driver->mdm_ch && !IS_ERR(driver->mdm_ch)) diagfwd_disconnect_sdio(); #endif /* TBD - notify and flow control SMD */ return 0; }
void diagfwd_sdio_exit(void) { #ifdef CONFIG_DIAG_OVER_USB if (driver->usb_connected) usb_diag_free_req(driver->mdm_ch); #endif platform_driver_unregister(&msm_sdio_ch_driver); #ifdef CONFIG_DIAG_OVER_USB usb_diag_close(driver->mdm_ch); #endif kfree(driver->buf_in_sdio_1); kfree(driver->buf_in_sdio_2); kfree(driver->usb_buf_mdm_out); kfree(driver->write_ptr_mdm_1); kfree(driver->write_ptr_mdm_2); kfree(driver->usb_read_mdm_ptr); destroy_workqueue(driver->diag_sdio_wq); }
/* * diagfwd_disconnect_hsic is called when the USB mdm channel * is disconnected */ int diagfwd_disconnect_hsic(int process_cable) { pr_debug("diag: In %s, process_cable: %d\n", __func__, process_cable); /* If the usb cable is being disconnected */ if (process_cable) { driver->usb_mdm_connected = 0; usb_diag_free_req(driver->mdm_ch); } if (driver->logging_mode != MEMORY_DEVICE_MODE) { if (driver->hsic_device_enabled) { driver->in_busy_hsic_read_on_device = 1; driver->in_busy_hsic_write = 1; /* Turn off communication over usb mdm and hsic */ return diag_hsic_close(); } } return 0; }
void diagfwd_exit(void) { smd_close(driver->ch); smd_close(driver->chqdsp); smd_close(driver->ch_wcnss); driver->ch = 0; /* SMD can make this NULL */ driver->chqdsp = 0; driver->ch_wcnss = 0; smd_diag_initialized = 0; #ifdef CONFIG_DIAG_OVER_USB if (driver->usb_connected) usb_diag_free_req(driver->legacy_ch); usb_diag_close(driver->legacy_ch); #endif platform_driver_unregister(&msm_smd_ch1_driver); platform_driver_unregister(&diag_smd_lite_driver); kfree(driver->buf_in_1); kfree(driver->buf_in_2); kfree(driver->buf_in_qdsp_1); kfree(driver->buf_in_qdsp_2); kfree(driver->buf_in_wcnss); 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->write_ptr_wcnss); kfree(driver->usb_read_ptr); kfree(driver->apps_rsp_buf); kfree(driver->user_space_data); destroy_workqueue(driver->diag_wq); }
int diagfwd_disconnect(void) { printk(KERN_DEBUG "diag: USB disconnected\n"); driver->usb_connected = 0; driver->debug_flag = 1; usb_diag_free_req(driver->legacy_ch); if (driver->logging_mode == USB_MODE) { driver->in_busy_1 = 1; driver->in_busy_2 = 1; driver->in_busy_qdsp_1 = 1; driver->in_busy_qdsp_2 = 1; driver->in_busy_wcnss = 1; } #ifdef CONFIG_DIAG_SDIO_PIPE if (diag_support_mdm9k) if (driver->mdm_ch && !IS_ERR(driver->mdm_ch)) diagfwd_disconnect_sdio(); #endif /* TBD - notify and flow control SMD */ return 0; }
void diagfwd_bridge_exit(void) { int i; pr_debug("diag: in %s\n", __func__); for (i = 0; i < MAX_HSIC_CH; i++) { if (diag_hsic[i].hsic_device_enabled) { diag_hsic_close(i); diag_hsic[i].hsic_device_enabled = 0; diag_bridge[i].enabled = 0; } diag_hsic[i].hsic_inited = 0; kfree(diag_hsic[i].hsic_buf_tbl); } diagmem_exit(driver, POOL_TYPE_ALL); if (driver->diag_smux_enabled) { driver->lcid = LCID_INVALID; kfree(driver->buf_in_smux); driver->diag_smux_enabled = 0; diag_bridge[SMUX].enabled = 0; } platform_driver_unregister(&msm_hsic_ch_driver); platform_driver_unregister(&msm_diagfwd_smux_driver); /* destroy USB MDM specific variables */ for (i = 0; i < MAX_BRIDGES; i++) { if (diag_bridge[i].enabled) { #ifdef CONFIG_DIAG_OVER_USB if (diag_bridge[i].usb_connected) usb_diag_free_req(diag_bridge[i].ch); usb_diag_close(diag_bridge[i].ch); #endif kfree(diag_bridge[i].usb_buf_out); kfree(diag_bridge[i].usb_read_ptr); destroy_workqueue(diag_bridge[i].wq); diag_bridge[i].enabled = 0; } } kfree(driver->write_ptr_mdm); }
int diagfwd_disconnect(void) { int i; printk(KERN_DEBUG "diag: USB disconnected\n"); driver->usb_connected = 0; driver->debug_flag = 1; usb_diag_free_req(driver->legacy_ch); if (driver->logging_mode == USB_MODE) { for (i = 0; i < NUM_SMD_DATA_CHANNELS; i++) { driver->smd_data[i].in_busy_1 = 1; driver->smd_data[i].in_busy_2 = 1; } } #ifdef CONFIG_DIAG_SDIO_PIPE if (machine_is_msm8x60_fusion() || machine_is_msm8x60_fusn_ffa()) if (driver->mdm_ch && !IS_ERR(driver->mdm_ch)) diagfwd_disconnect_sdio(); #endif /* TBD - notify and flow control SMD */ return 0; }
void diagfwd_hsic_exit(void) { pr_debug("diag: in %s\n", __func__); if (driver->hsic_initialized) diag_hsic_close(); diagmem_exit(driver, POOL_TYPE_ALL); /* destroy USB MDM specific variables */ #ifdef CONFIG_DIAG_OVER_USB if (driver->usb_mdm_connected) usb_diag_free_req(driver->mdm_ch); #endif platform_driver_unregister(&msm_hsic_ch_driver); #ifdef CONFIG_DIAG_OVER_USB usb_diag_close(driver->mdm_ch); #endif kfree(driver->usb_buf_mdm_out); kfree(driver->hsic_buf_tbl); kfree(driver->usb_read_mdm_ptr); destroy_workqueue(driver->diag_hsic_wq); driver->hsic_device_enabled = 0; }
void __exit diagfwd_hsic_exit(void) { pr_debug("DIAG in %s\n", __func__); if (driver->hsic_initialized) diag_hsic_close(); #ifdef CONFIG_DIAG_OVER_USB if (driver->usb_mdm_connected) usb_diag_free_req(driver->mdm_ch); #endif platform_driver_unregister(&msm_hsic_ch_driver); #ifdef CONFIG_DIAG_OVER_USB usb_diag_close(driver->mdm_ch); #endif kfree(driver->buf_in_hsic); kfree(driver->usb_buf_mdm_out); kfree(driver->write_ptr_mdm); kfree(driver->usb_read_mdm_ptr); destroy_workqueue(driver->diag_hsic_wq); driver->hsic_device_enabled = 0; }
int diagfwd_disconnect_bridge(int process_cable) { int i; pr_debug("diag: In %s, process_cable: %d\n", __func__, process_cable); for (i = 0; i < MAX_BRIDGES; i++) { if (diag_bridge[i].enabled) { mutex_lock(&diag_bridge[i].bridge_mutex); if (process_cable) { diag_bridge[i].usb_connected = 0; usb_diag_free_req(diag_bridge[i].ch); driver->qxdmusb_drop = 1; } if (i == HSIC && driver->hsic_device_enabled && driver->logging_mode != MEMORY_DEVICE_MODE) { #if !DIAG_XPST driver->in_busy_hsic_read_on_device = 1; driver->in_busy_hsic_write = 1; diag_hsic_close(); #endif } else if (i == SMUX && driver->diag_smux_enabled && driver->logging_mode == USB_MODE) { driver->in_busy_smux = 1; driver->lcid = LCID_INVALID; driver->smux_connected = 0; msm_smux_close(LCID_VALID); } mutex_unlock(&diag_bridge[i].bridge_mutex); } } return 0; }
int diagfwd_disconnect_sdio(void) { driver->in_busy_sdio = 1; usb_diag_free_req(driver->mdm_ch); return 0; }