]> rtime.felk.cvut.cz Git - vajnamar/linux-xlnx.git/commitdiff
drm: xilinx: vtc: exporting interrupt APIs
authorSaurabh Sengar <saurabh.singh@xilinx.com>
Mon, 30 Oct 2017 18:16:40 +0000 (23:46 +0530)
committerMichal Simek <michal.simek@xilinx.com>
Tue, 31 Oct 2017 15:36:46 +0000 (16:36 +0100)
Exporting interrupt APIs outside of vtc driver.
Also adding new vblank specific enable/disable APIs

Signed-off-by: Saurabh Sengar <saurabhs@xilinx.com>
Acked-by: Hyun Kwon <hyun.kwon@xilinx.com>
Signed-off-by: Michal Simek <michal.simek@xilinx.com>
drivers/gpu/drm/xilinx/xilinx_vtc.c
drivers/gpu/drm/xilinx/xilinx_vtc.h

index 0f3a1780fbe95f0e5f5d2eeea92d0f8e34890006..67a7e4fa14bf267136b93d608f36f00f550d6b3b 100644 (file)
@@ -513,6 +513,14 @@ void xilinx_vtc_reset(struct xilinx_vtc *vtc)
        xilinx_drm_writel(vtc->base, VTC_CTL, reg | VTC_CTL_RU);
 }
 
+/* enable vblank interrupt */
+void xilinx_vtc_vblank_enable(struct xilinx_vtc *vtc)
+{
+       xilinx_drm_writel(vtc->base, VTC_IER, VTC_IXR_G_VBLANK |
+                         xilinx_drm_readl(vtc->base, VTC_IER));
+}
+EXPORT_SYMBOL_GPL(xilinx_vtc_vblank_enable);
+
 /* enable interrupt */
 static inline void xilinx_vtc_intr_enable(struct xilinx_vtc *vtc, u32 intr)
 {
@@ -527,18 +535,28 @@ static inline void xilinx_vtc_intr_disable(struct xilinx_vtc *vtc, u32 intr)
                          xilinx_drm_readl(vtc->base, VTC_IER));
 }
 
+/* disable vblank interrupt */
+void xilinx_vtc_vblank_disable(struct xilinx_vtc *vtc)
+{
+       xilinx_drm_writel(vtc->base, VTC_IER, ~(VTC_IXR_G_VBLANK) &
+                         xilinx_drm_readl(vtc->base, VTC_IER));
+}
+EXPORT_SYMBOL_GPL(xilinx_vtc_vblank_disable);
+
 /* get interrupt */
-static inline u32 xilinx_vtc_intr_get(struct xilinx_vtc *vtc)
+u32 xilinx_vtc_intr_get(struct xilinx_vtc *vtc)
 {
        return xilinx_drm_readl(vtc->base, VTC_IER) &
               xilinx_drm_readl(vtc->base, VTC_ISR) & VTC_IXR_ALLINTR_MASK;
 }
+EXPORT_SYMBOL_GPL(xilinx_vtc_intr_get);
 
 /* clear interrupt */
-static inline void xilinx_vtc_intr_clear(struct xilinx_vtc *vtc, u32 intr)
+void xilinx_vtc_intr_clear(struct xilinx_vtc *vtc, u32 intr)
 {
        xilinx_drm_writel(vtc->base, VTC_ISR, intr & VTC_IXR_ALLINTR_MASK);
 }
+EXPORT_SYMBOL_GPL(xilinx_vtc_intr_clear);
 
 /* interrupt handler */
 static irqreturn_t xilinx_vtc_intr_handler(int irq, void *data)
index 53a93d24ec22398f224fc8bf34387fc36996227a..33b4eb43513d94de56bf0d64615bfc4c86e19d6f 100644 (file)
@@ -36,5 +36,9 @@ struct device_node;
 
 struct xilinx_vtc *xilinx_vtc_probe(struct device *dev,
                                    struct device_node *node);
+void xilinx_vtc_vblank_enable(struct xilinx_vtc *vtc);
+void xilinx_vtc_vblank_disable(struct xilinx_vtc *vtc);
+u32 xilinx_vtc_intr_get(struct xilinx_vtc *vtc);
+void xilinx_vtc_intr_clear(struct xilinx_vtc *vtc, u32 intr);
 
 #endif /* _XILINX_VTC_H_ */