Lines Matching refs:tilcdc_crtc

36 struct tilcdc_crtc {  struct
67 #define to_tilcdc_crtc(x) container_of(x, struct tilcdc_crtc, base) argument
105 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_load_palette() local
110 reinit_completion(&tilcdc_crtc->palette_loaded); in tilcdc_crtc_load_palette()
114 tilcdc_crtc->palette_dma_handle); in tilcdc_crtc_load_palette()
116 (u32) tilcdc_crtc->palette_dma_handle + in tilcdc_crtc_load_palette()
134 ret = wait_for_completion_timeout(&tilcdc_crtc->palette_loaded, in tilcdc_crtc_load_palette()
215 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_set_clk() local
260 tilcdc_crtc->lcd_fck_rate = clk_rate; in tilcdc_crtc_set_clk()
263 tilcdc_crtc->lcd_fck_rate, crtc->mode.clock, clkdiv); in tilcdc_crtc_set_clk()
283 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_set_mode() local
286 const struct tilcdc_panel_info *info = tilcdc_crtc->info; in tilcdc_crtc_set_mode()
447 tilcdc_crtc->hvtotal_us = in tilcdc_crtc_set_mode()
454 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_enable() local
457 mutex_lock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_enable()
458 if (tilcdc_crtc->enabled || tilcdc_crtc->shutdown) { in tilcdc_crtc_enable()
459 mutex_unlock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_enable()
482 spin_lock_irqsave(&tilcdc_crtc->irq_lock, flags); in tilcdc_crtc_enable()
483 tilcdc_crtc->last_vblank = ktime_get(); in tilcdc_crtc_enable()
485 spin_unlock_irqrestore(&tilcdc_crtc->irq_lock, flags); in tilcdc_crtc_enable()
489 tilcdc_crtc->enabled = true; in tilcdc_crtc_enable()
490 mutex_unlock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_enable()
501 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_off() local
505 mutex_lock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_off()
507 tilcdc_crtc->shutdown = true; in tilcdc_crtc_off()
508 if (!tilcdc_crtc->enabled) { in tilcdc_crtc_off()
509 mutex_unlock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_off()
512 tilcdc_crtc->frame_done = false; in tilcdc_crtc_off()
519 ret = wait_event_timeout(tilcdc_crtc->frame_done_wq, in tilcdc_crtc_off()
520 tilcdc_crtc->frame_done, in tilcdc_crtc_off()
532 tilcdc_crtc->enabled = false; in tilcdc_crtc_off()
533 mutex_unlock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_off()
559 struct tilcdc_crtc *tilcdc_crtc = in tilcdc_crtc_recover_work() local
560 container_of(work, struct tilcdc_crtc, recover_work); in tilcdc_crtc_recover_work()
561 struct drm_crtc *crtc = &tilcdc_crtc->base; in tilcdc_crtc_recover_work()
592 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_update_fb() local
595 if (tilcdc_crtc->event) { in tilcdc_crtc_update_fb()
600 tilcdc_crtc->event = event; in tilcdc_crtc_update_fb()
602 mutex_lock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_update_fb()
604 if (tilcdc_crtc->enabled) { in tilcdc_crtc_update_fb()
609 spin_lock_irqsave(&tilcdc_crtc->irq_lock, flags); in tilcdc_crtc_update_fb()
611 next_vblank = ktime_add_us(tilcdc_crtc->last_vblank, in tilcdc_crtc_update_fb()
612 tilcdc_crtc->hvtotal_us); in tilcdc_crtc_update_fb()
616 tilcdc_crtc->next_fb = fb; in tilcdc_crtc_update_fb()
620 spin_unlock_irqrestore(&tilcdc_crtc->irq_lock, flags); in tilcdc_crtc_update_fb()
623 mutex_unlock(&tilcdc_crtc->enable_lock); in tilcdc_crtc_update_fb()
632 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_mode_fixup() local
634 if (!tilcdc_crtc->simulate_vesa_sync) in tilcdc_crtc_mode_fixup()
694 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_reset() local
707 tilcdc_crtc->frame_done = false; in tilcdc_crtc_reset()
710 ret = wait_event_timeout(tilcdc_crtc->frame_done_wq, in tilcdc_crtc_reset()
711 tilcdc_crtc->frame_done, in tilcdc_crtc_reset()
843 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_set_panel_info() local
844 tilcdc_crtc->info = info; in tilcdc_crtc_set_panel_info()
850 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_set_simulate_vesa_sync() local
852 tilcdc_crtc->simulate_vesa_sync = simulate_vesa_sync; in tilcdc_crtc_set_simulate_vesa_sync()
859 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_update_clk() local
862 if (tilcdc_crtc->lcd_fck_rate != clk_get_rate(priv->clk)) { in tilcdc_crtc_update_clk()
880 struct tilcdc_crtc *tilcdc_crtc = to_tilcdc_crtc(crtc); in tilcdc_crtc_irq() local
895 spin_lock_irqsave(&tilcdc_crtc->irq_lock, flags); in tilcdc_crtc_irq()
897 tilcdc_crtc->last_vblank = now; in tilcdc_crtc_irq()
899 if (tilcdc_crtc->next_fb) { in tilcdc_crtc_irq()
900 set_scanout(crtc, tilcdc_crtc->next_fb); in tilcdc_crtc_irq()
901 tilcdc_crtc->next_fb = NULL; in tilcdc_crtc_irq()
905 spin_unlock_irqrestore(&tilcdc_crtc->irq_lock, flags); in tilcdc_crtc_irq()
914 event = tilcdc_crtc->event; in tilcdc_crtc_irq()
915 tilcdc_crtc->event = NULL; in tilcdc_crtc_irq()
922 if (tilcdc_crtc->frame_intact) in tilcdc_crtc_irq()
923 tilcdc_crtc->sync_lost_count = 0; in tilcdc_crtc_irq()
925 tilcdc_crtc->frame_intact = true; in tilcdc_crtc_irq()
933 complete(&tilcdc_crtc->palette_loaded); in tilcdc_crtc_irq()
945 tilcdc_crtc->frame_intact = false; in tilcdc_crtc_irq()
955 if (tilcdc_crtc->sync_lost_count++ > in tilcdc_crtc_irq()
961 &tilcdc_crtc->recover_work); in tilcdc_crtc_irq()
964 tilcdc_crtc->sync_lost_count = 0; in tilcdc_crtc_irq()
970 tilcdc_crtc->frame_done = true; in tilcdc_crtc_irq()
971 wake_up(&tilcdc_crtc->frame_done_wq); in tilcdc_crtc_irq()
992 struct tilcdc_crtc *tilcdc_crtc; in tilcdc_crtc_create() local
996 tilcdc_crtc = devm_kzalloc(dev->dev, sizeof(*tilcdc_crtc), GFP_KERNEL); in tilcdc_crtc_create()
997 if (!tilcdc_crtc) in tilcdc_crtc_create()
1000 init_completion(&tilcdc_crtc->palette_loaded); in tilcdc_crtc_create()
1001 tilcdc_crtc->palette_base = dmam_alloc_coherent(dev->dev, in tilcdc_crtc_create()
1003 &tilcdc_crtc->palette_dma_handle, in tilcdc_crtc_create()
1005 if (!tilcdc_crtc->palette_base) in tilcdc_crtc_create()
1007 *tilcdc_crtc->palette_base = TILCDC_PALETTE_FIRST_ENTRY; in tilcdc_crtc_create()
1009 crtc = &tilcdc_crtc->base; in tilcdc_crtc_create()
1011 ret = tilcdc_plane_init(dev, &tilcdc_crtc->primary); in tilcdc_crtc_create()
1015 mutex_init(&tilcdc_crtc->enable_lock); in tilcdc_crtc_create()
1017 init_waitqueue_head(&tilcdc_crtc->frame_done_wq); in tilcdc_crtc_create()
1019 spin_lock_init(&tilcdc_crtc->irq_lock); in tilcdc_crtc_create()
1020 INIT_WORK(&tilcdc_crtc->recover_work, tilcdc_crtc_recover_work); in tilcdc_crtc_create()
1023 &tilcdc_crtc->primary, in tilcdc_crtc_create()