Lines Matching refs:lsc
285 ccdc->lsc.state = LSC_STATE_STOPPED; in __ccdc_lsc_enable()
289 ccdc->lsc.state = LSC_STATE_RUNNING; in __ccdc_lsc_enable()
291 ccdc->lsc.state = LSC_STATE_STOPPING; in __ccdc_lsc_enable()
350 ccdc->lsc.state = LSC_STATE_STOPPED; in ccdc_lsc_error_handler()
376 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_lsc_free_queue()
379 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_lsc_free_queue()
381 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_lsc_free_queue()
383 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_lsc_free_queue()
389 struct ispccdc_lsc *lsc; in ccdc_lsc_free_table_work() local
391 lsc = container_of(work, struct ispccdc_lsc, table_work); in ccdc_lsc_free_table_work()
392 ccdc = container_of(lsc, struct isp_ccdc_device, lsc); in ccdc_lsc_free_table_work()
394 ccdc_lsc_free_queue(ccdc, &lsc->free_queue); in ccdc_lsc_free_table_work()
454 if (copy_from_user(req->table.addr, config->lsc, in ccdc_lsc_config()
464 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_lsc_config()
465 if (ccdc->lsc.request) { in ccdc_lsc_config()
466 list_add_tail(&ccdc->lsc.request->list, &ccdc->lsc.free_queue); in ccdc_lsc_config()
467 schedule_work(&ccdc->lsc.table_work); in ccdc_lsc_config()
469 ccdc->lsc.request = req; in ccdc_lsc_config()
470 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_lsc_config()
486 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_lsc_is_configured()
487 ret = ccdc->lsc.active != NULL; in ccdc_lsc_is_configured()
488 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_lsc_is_configured()
495 struct ispccdc_lsc *lsc = &ccdc->lsc; in ccdc_lsc_enable() local
497 if (lsc->state != LSC_STATE_STOPPED) in ccdc_lsc_enable()
500 if (lsc->active) { in ccdc_lsc_enable()
501 list_add_tail(&lsc->active->list, &lsc->free_queue); in ccdc_lsc_enable()
502 lsc->active = NULL; in ccdc_lsc_enable()
505 if (__ccdc_lsc_configure(ccdc, lsc->request) < 0) { in ccdc_lsc_enable()
508 list_add_tail(&lsc->request->list, &lsc->free_queue); in ccdc_lsc_enable()
509 lsc->request = NULL; in ccdc_lsc_enable()
513 lsc->active = lsc->request; in ccdc_lsc_enable()
514 lsc->request = NULL; in ccdc_lsc_enable()
518 if (!list_empty(&lsc->free_queue)) in ccdc_lsc_enable()
519 schedule_work(&lsc->table_work); in ccdc_lsc_enable()
1292 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_configure()
1293 if (ccdc->lsc.request == NULL) in ccdc_configure()
1296 WARN_ON(ccdc->lsc.active); in ccdc_configure()
1301 if (ccdc->lsc.active == NULL && in ccdc_configure()
1302 __ccdc_lsc_configure(ccdc, ccdc->lsc.request) == 0) { in ccdc_configure()
1303 ccdc->lsc.active = ccdc->lsc.request; in ccdc_configure()
1305 list_add_tail(&ccdc->lsc.request->list, &ccdc->lsc.free_queue); in ccdc_configure()
1306 schedule_work(&ccdc->lsc.table_work); in ccdc_configure()
1309 ccdc->lsc.request = NULL; in ccdc_configure()
1312 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_configure()
1350 ccdc_lsc_free_request(ccdc, ccdc->lsc.request); in ccdc_disable()
1351 ccdc->lsc.request = ccdc->lsc.active; in ccdc_disable()
1352 ccdc->lsc.active = NULL; in ccdc_disable()
1353 cancel_work_sync(&ccdc->lsc.table_work); in ccdc_disable()
1354 ccdc_lsc_free_queue(ccdc, &ccdc->lsc.free_queue); in ccdc_disable()
1432 if (ccdc->lsc.state != LSC_STATE_STOPPED) in ccdc_handle_stopping()
1440 if (ccdc->lsc.state == LSC_STATE_STOPPED) in ccdc_handle_stopping()
1503 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_lsc_isr()
1505 if (ccdc->lsc.state == LSC_STATE_STOPPING) in ccdc_lsc_isr()
1506 ccdc->lsc.state = LSC_STATE_STOPPED; in ccdc_lsc_isr()
1511 if (ccdc->lsc.state != LSC_STATE_RECONFIG) in ccdc_lsc_isr()
1515 ccdc->lsc.state = LSC_STATE_STOPPED; in ccdc_lsc_isr()
1527 if (ccdc->lsc.request == NULL) in ccdc_lsc_isr()
1533 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_lsc_isr()
1662 if (ccdc->lsc.state != LSC_STATE_STOPPED) in ccdc_vd0_isr()
1708 spin_lock_irqsave(&ccdc->lsc.req_lock, flags); in ccdc_vd1_isr()
1727 if (ccdc->lsc.state != LSC_STATE_STOPPED) in ccdc_vd1_isr()
1740 if (ccdc->lsc.request == NULL) in ccdc_vd1_isr()
1747 if (ccdc->lsc.state == LSC_STATE_RUNNING) { in ccdc_vd1_isr()
1749 ccdc->lsc.state = LSC_STATE_RECONFIG; in ccdc_vd1_isr()
1754 if (ccdc->lsc.state == LSC_STATE_STOPPED) in ccdc_vd1_isr()
1758 spin_unlock_irqrestore(&ccdc->lsc.req_lock, flags); in ccdc_vd1_isr()
2703 INIT_WORK(&ccdc->lsc.table_work, ccdc_lsc_free_table_work); in omap3isp_ccdc_init()
2704 ccdc->lsc.state = LSC_STATE_STOPPED; in omap3isp_ccdc_init()
2705 INIT_LIST_HEAD(&ccdc->lsc.free_queue); in omap3isp_ccdc_init()
2706 spin_lock_init(&ccdc->lsc.req_lock); in omap3isp_ccdc_init()
2737 ccdc_lsc_free_request(ccdc, ccdc->lsc.request); in omap3isp_ccdc_cleanup()
2738 cancel_work_sync(&ccdc->lsc.table_work); in omap3isp_ccdc_cleanup()
2739 ccdc_lsc_free_queue(ccdc, &ccdc->lsc.free_queue); in omap3isp_ccdc_cleanup()