void vdin_unreg_vf_provider(void) { init_flag = 0; #ifdef CONFIG_AMLOGIC_VIDEOIN_MANAGER vf_unreg_provider(&vdin_vf_prov); #else vf_unreg_provider(&vdin_vf_prov); #endif }
static int d2d3_receiver_event_fun(int type, void* data, void* arg) { int i, ret=0; d2d3_param_t *parm = &d2d3_devp->param; if((type == VFRAME_EVENT_PROVIDER_UNREG)|| (type == VFRAME_EVENT_PROVIDER_LIGHT_UNREG)){ prov = NULL; if(d2d3_devp->flag & D2D3_BYPASS){ d2d3_enable_hw(false); d2d3_enable_path(false, parm); } vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_UNREG,NULL); vf_unreg_provider(&d2d3_vf_prov); d2d3_devp->flag &= (~D2D3_REG); // keep flag when unreg pr_info("[d2d3]%s: provider unregister,disable d2d3.\n",__func__); } else if(type == VFRAME_EVENT_PROVIDER_REG){ char* provider_name = (char*)data; if((strcmp(provider_name, "deinterlace")==0)||(strcmp(provider_name, "ppmgr")==0)){ have_process_fun_private_data = 1; } else{ have_process_fun_private_data = 0; } vf_reg_provider(&d2d3_vf_prov); for(i=0; i<D2D3_IDX_MAX; i++){ d2d3_devnox[i].vf = NULL; } prov = vf_get_provider(d2d3_devp->vfm_name); d2d3_devp->flag |= D2D3_REG; vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_START,NULL); } else if((VFRAME_EVENT_PROVIDER_DPBUF_CONFIG == type) && (D2D3_DPG_MUX_NRW == parm->dpg_path)) { vframe_t * vf = (vframe_t*)data; struct di_buf_s *di_buf = vf->private_data; d2d3_devp->dpg_addr = di_buf->dp_buf_adr; /*just update the dpg canvas config with the addr from di*/ d2d3_config_dpg_canvas(d2d3_devp); pre_count++; } else if(VFRAME_EVENT_PROVIDER_FR_HINT == type) { vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_FR_HINT,data); } else if(VFRAME_EVENT_PROVIDER_FR_END_HINT == type) { vf_notify_receiver(d2d3_devp->vfm_name,VFRAME_EVENT_PROVIDER_FR_END_HINT,data); } return ret; }
static vframe_receiver_op_t* vf_vm_unreg_provider(void) { // ulong flags; // stop_vm_task(); // spin_lock_irqsave(&lock, flags); // vfp = NULL; // spin_unlock_irqrestore(&lock, flags); vf_unreg_provider(&vm_vf_prov); return (vframe_receiver_op_t*)NULL; }
void vf_ppmgr_unreg_provider(void) { mutex_lock(&ppmgr_mutex); stop_ppmgr_task(); vf_unreg_provider(&ppmgr_vf_prov); dec_vfp = NULL; mutex_unlock(&ppmgr_mutex); }
static vframe_receiver_op_t* vf_vm_unreg_provider(void) { // ulong flags; #ifndef CONFIG_AMLOGIC_VM_DISABLE_VIDEOLAYER vf_unreg_provider(&vm_vf_prov); #endif stop_vm_task(); // spin_lock_irqsave(&lock, flags); // vfp = NULL; // spin_unlock_irqrestore(&lock, flags); return (vframe_receiver_op_t*)NULL; }
static int d2d3_remove(struct platform_device *pdev) { vf_unreg_provider(&d2d3_vf_prov); vf_unreg_receiver(&d2d3_vf_recv); /* Remove the cdev */ device_remove_file(d2d3_devp->dev, &dev_attr_debug); cdev_del(&d2d3_devp->cdev); kfree(d2d3_devp); d2d3_devp = NULL; device_del(d2d3_devp->dev); return 0; }
static int thread_progress(void *para) { logo_object_t *plogo=(logo_object_t*)para; jpeg_private_t *priv=(jpeg_private_t*)plogo->parser->priv; ulong timeout; timeout = jiffies + HZ*8; while (time_before(jiffies, timeout)) { if (priv->state== PIC_FETCHED) { vf_unreg_provider(); kfree(priv); amlog_mask_level(LOG_MASK_PARSER,LOG_LEVEL_LOW,"logo fetched\n"); return SUCCESS; } } amlog_mask_level(LOG_MASK_PARSER,LOG_LEVEL_LOW,"logo unfetched\n"); return FAIL; }
void vdin_unreg_vf_provider(void) { vf_unreg_provider(); }