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; }