Lines Matching refs:hdlcd
44 struct hdlcd_drm_private *hdlcd = arg; in hdlcd_irq() local
47 irq_status = hdlcd_read(hdlcd, HDLCD_REG_INT_STATUS); in hdlcd_irq()
51 atomic_inc(&hdlcd->buffer_underrun_count); in hdlcd_irq()
54 atomic_inc(&hdlcd->dma_end_count); in hdlcd_irq()
57 atomic_inc(&hdlcd->bus_error_count); in hdlcd_irq()
60 atomic_inc(&hdlcd->vsync_count); in hdlcd_irq()
64 drm_crtc_handle_vblank(&hdlcd->crtc); in hdlcd_irq()
67 hdlcd_write(hdlcd, HDLCD_REG_INT_CLEAR, irq_status); in hdlcd_irq()
72 static int hdlcd_irq_install(struct hdlcd_drm_private *hdlcd) in hdlcd_irq_install() argument
77 hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, 0); in hdlcd_irq_install()
78 hdlcd_write(hdlcd, HDLCD_REG_INT_CLEAR, ~0); in hdlcd_irq_install()
80 ret = request_irq(hdlcd->irq, hdlcd_irq, 0, "hdlcd", hdlcd); in hdlcd_irq_install()
86 hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, HDLCD_DEBUG_INT_MASK); in hdlcd_irq_install()
92 static void hdlcd_irq_uninstall(struct hdlcd_drm_private *hdlcd) in hdlcd_irq_uninstall() argument
95 hdlcd_write(hdlcd, HDLCD_REG_INT_MASK, 0); in hdlcd_irq_uninstall()
97 free_irq(hdlcd->irq, hdlcd); in hdlcd_irq_uninstall()
102 struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm); in hdlcd_load() local
107 hdlcd->clk = devm_clk_get(drm->dev, "pxlclk"); in hdlcd_load()
108 if (IS_ERR(hdlcd->clk)) in hdlcd_load()
109 return PTR_ERR(hdlcd->clk); in hdlcd_load()
112 atomic_set(&hdlcd->buffer_underrun_count, 0); in hdlcd_load()
113 atomic_set(&hdlcd->bus_error_count, 0); in hdlcd_load()
114 atomic_set(&hdlcd->vsync_count, 0); in hdlcd_load()
115 atomic_set(&hdlcd->dma_end_count, 0); in hdlcd_load()
118 hdlcd->mmio = devm_platform_ioremap_resource(pdev, 0); in hdlcd_load()
119 if (IS_ERR(hdlcd->mmio)) { in hdlcd_load()
121 ret = PTR_ERR(hdlcd->mmio); in hdlcd_load()
122 hdlcd->mmio = NULL; in hdlcd_load()
126 version = hdlcd_read(hdlcd, HDLCD_REG_VERSION); in hdlcd_load()
153 hdlcd->irq = ret; in hdlcd_load()
155 ret = hdlcd_irq_install(hdlcd); in hdlcd_load()
164 drm_crtc_cleanup(&hdlcd->crtc); in hdlcd_load()
199 struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm); in hdlcd_show_underrun_count() local
201 seq_printf(m, "underrun : %d\n", atomic_read(&hdlcd->buffer_underrun_count)); in hdlcd_show_underrun_count()
202 seq_printf(m, "dma_end : %d\n", atomic_read(&hdlcd->dma_end_count)); in hdlcd_show_underrun_count()
203 seq_printf(m, "bus_error: %d\n", atomic_read(&hdlcd->bus_error_count)); in hdlcd_show_underrun_count()
204 seq_printf(m, "vsync : %d\n", atomic_read(&hdlcd->vsync_count)); in hdlcd_show_underrun_count()
212 struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm); in hdlcd_show_pxlclock() local
213 unsigned long clkrate = clk_get_rate(hdlcd->clk); in hdlcd_show_pxlclock()
214 unsigned long mode_clock = hdlcd->crtc.mode.crtc_clock * 1000; in hdlcd_show_pxlclock()
243 struct hdlcd_drm_private *hdlcd; in hdlcd_drm_bind() local
246 hdlcd = devm_drm_dev_alloc(dev, &hdlcd_driver, typeof(*hdlcd), base); in hdlcd_drm_bind()
247 if (IS_ERR(hdlcd)) in hdlcd_drm_bind()
248 return PTR_ERR(hdlcd); in hdlcd_drm_bind()
250 drm = &hdlcd->base; in hdlcd_drm_bind()
263 hdlcd->crtc.port = of_graph_get_port_by_id(dev->of_node, 0); in hdlcd_drm_bind()
287 if (hdlcd_read(hdlcd, HDLCD_REG_COMMAND)) { in hdlcd_drm_bind()
288 hdlcd_write(hdlcd, HDLCD_REG_COMMAND, 0); in hdlcd_drm_bind()
315 of_node_put(hdlcd->crtc.port); in hdlcd_drm_bind()
316 hdlcd->crtc.port = NULL; in hdlcd_drm_bind()
317 hdlcd_irq_uninstall(hdlcd); in hdlcd_drm_bind()
327 struct hdlcd_drm_private *hdlcd = drm_to_hdlcd_priv(drm); in hdlcd_drm_unbind() local
332 of_node_put(hdlcd->crtc.port); in hdlcd_drm_unbind()
333 hdlcd->crtc.port = NULL; in hdlcd_drm_unbind()
336 hdlcd_irq_uninstall(hdlcd); in hdlcd_drm_unbind()