コード例 #1
0
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
	}
}
コード例 #2
0
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 */
}