Пример #1
0
static int mtv250_power_on(void)
{
	int ret = 0;

//DMBMSG("[mtv250_power_on] 1\n");

	if(mtv250_cb_ptr->is_power_on == TRUE)	
		return 0;

	RTV_MASTER_CHIP_SEL;
	rtvOEM_PowerOn(1);

	mtv250_cb_ptr->is_power_on = TRUE;

//DMBMSG("[mtv250_power_on] 2\n");
	
	mtv250_cb_ptr->stop = 0;

	mtv250_cb_ptr->start_ts_int_cnt = 0;
	mtv250_cb_ptr->ovf_err_cnt = 0;
	mtv250_cb_ptr->max_read_jiffies = 0;

	ret = rtvISDBT_Initialize(mtv250_cb_ptr->country_band_type, MTV_TS_THRESHOLD_SIZE);
	if(ret  != RTV_SUCCESS)
	{
		DMBERR("[1114_1 mtv250_power_on] rtvISDBT_Initialize() failed: %d\n", ret);
		ret = -EFAULT;
		goto err_return;
	}	

//DMBMSG("[mtv250_power_on] 3\n");

	
#if defined(RTV_IF_SPI)
	mtv250_start_read_function(); /* To change stop flag when Power On/OFF. */
#endif	

#if defined(RTV_IF_SPI) || (defined(RTV_TDMB_ENABLE) && !defined(RTV_TDMB_FIC_POLLING_MODE))	
	mtv250_cb_ptr->isr_cnt = 0;	
#endif	

	//mtv250_cb_ptr->is_power_on = TRUE;
	
	DMBMSG("[mtv250_power_on] Power on done\n" );

	return 0;

err_return:

	mtv250_power_off();

	return ret;
}
int	broadcast_drv_if_open(void)
{
	int rc = OK;

	mutex_lock(&mtv222_cb->ioctl_lock);

	if (mtv222_device_power_state() == false) {
		MTVERR("Device was power off\n");
		rc = ERROR;
		goto release_mutex;
	}

	/* Check if the driver was already opened ? */
	if (atomic_cmpxchg(&mtv222_cb->open_flag, 0, 1)) {
		MTVERR("Already opened\n");
		rc = ERROR;
		goto release_mutex;
	}

	RTV_GUARD_INIT;
	mtv222_cb->tsout_enabled = false;

	rc = rtvISDBT_Initialize(RTV_COUNTRY_BAND_BRAZIL,
							ISDBT_1SEG_SPI_INTR_SIZE);
	if (rc != RTV_SUCCESS) {
		rc = ERROR;
		goto release_mutex;
	}

	mtv222_enable_irq(); /* After DMB init */

	mutex_unlock(&mtv222_cb->ioctl_lock);

	return OK;

	atomic_set(&mtv222_cb->open_flag, 0);

release_mutex:
	mutex_unlock(&mtv222_cb->ioctl_lock);

	return rc;
}