static void hsi_ch_notify_to_charger(int error) { if(error == 0) { /* No error */ if(ifx_hsi_modem_alive == 0) { set_modem_alive(1); ifx_hsi_modem_alive = 1; #if MCM_DBG_LOG printk("\nmcm:set_modem_alive on"); #endif } } else { /* -EREMOTEIO */ set_modem_alive(0); ifx_hsi_modem_alive = 0; #if MCM_DBG_LOG printk("\nmcm:set_modem_alive off"); #endif } }
static int ifx_spi_write(struct tty_struct *tty, const unsigned char *buf, int count) { struct ifx_spi_data *spi_data = (struct ifx_spi_data *)tty->driver_data; ifx_ret_count = 0; #ifdef LGE_DUMP_SPI_BUFFER dump_spi_buffer("ifx_spi_write()", buf, count); #elif defined(LGE_VT_DATA_DUMP) if (count == 167) // 167 means 160(MUX data) + 7 (DLC Frame Header + Tails) { // dump_spi_wr_buffer(buf, count); } #endif // hgahn if(spi_data->ifx_spi_lock) return ifx_ret_count; spi_data->ifx_tty = tty; spi_data->ifx_tty->low_latency = 1; if( !buf ){ printk("File: ifx_n721_spi.c\tFunction: int ifx_spi_write()\t Buffer NULL\n"); return ifx_ret_count; } if(!count){ printk("File: ifx_n721_spi.c\tFunction: int ifx_spi_write()\t Count is ZERO\n"); return ifx_ret_count; } ifx_master_initiated_transfer = 1; ifx_spi_buf = buf; ifx_spi_count = count; // LGE_CHANGE_S [[email protected]] 2010-10-11 to retry IPC transmission when SRDY is not signaled by CP /* original code ifx_spi_set_mrdy_signal(1); wait_for_completion(&spi_data->ifx_read_write_completion); */ { int i, max_retry_count=8; unsigned long timeout=HZ; long rc; for (i=0 ; i<max_retry_count ; i++) { // signal master ready ifx_spi_set_mrdy_signal(1); // wait for completion with timeout rc = wait_for_completion_timeout( &spi_data->ifx_read_write_completion, timeout); if (rc == 0) { // timeout expired, retry printk("***** unable to detect SREADY within %lu, RETRY (counter=%d) *****\n", timeout, i+1); // lower master ready ifx_spi_set_mrdy_signal(0); //<*****@*****.**> LGE_CHANGE_S ril_retry_count if(i == (max_retry_count-1)) { { set_modem_alive(0); ifx_ril_is_modem_alive = 0; } } //<*****@*****.**> LGE_CHANGE_E ril_retry_count // retry after delay udelay(100); // 20 u sec delay } else { // success or failure //printk("wait_for_completion_timeout timeout=%ld\n", timeout); //<*****@*****.**> LGE_CHANGE_S ril_retry_count if(!ifx_ril_is_modem_alive) { set_modem_alive(1); ifx_ril_is_modem_alive = 1; } //<*****@*****.**> LGE_CHANGE_E ril_retry_count break; } } } // LGE_CHANGE_E [[email protected]] 2010-10-11 to retry IPC transmission when SRDY is not signaled by CP init_completion(&spi_data->ifx_read_write_completion); return ifx_ret_count; /* Number of bytes sent to the device */ }