From patchwork Fri Oct 13 14:59:05 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 10004973 Return-Path: Received: from mail.wl.linuxfoundation.org (pdx-wl-mail.web.codeaurora.org [172.30.200.125]) by pdx-korg-patchwork.web.codeaurora.org (Postfix) with ESMTP id D5FA8602B3 for ; Fri, 13 Oct 2017 15:00:18 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id C55BD2907E for ; Fri, 13 Oct 2017 15:00:18 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id BA3BD2909F; Fri, 13 Oct 2017 15:00:18 +0000 (UTC) X-Spam-Checker-Version: SpamAssassin 3.3.1 (2010-03-16) on pdx-wl-mail.web.codeaurora.org X-Spam-Level: X-Spam-Status: No, score=-4.1 required=2.0 tests=BAYES_00,DKIM_SIGNED, RCVD_IN_DNSWL_MED,T_DKIM_INVALID autolearn=ham version=3.3.1 Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher DHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.wl.linuxfoundation.org (Postfix) with ESMTPS id 8909B2907E for ; Fri, 13 Oct 2017 15:00:17 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id BFB1E6EB9A; Fri, 13 Oct 2017 14:59:48 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from galahad.ideasonboard.com (galahad.ideasonboard.com [185.26.127.97]) by gabe.freedesktop.org (Postfix) with ESMTPS id 8F2B96EB8B for ; Fri, 13 Oct 2017 14:59:45 +0000 (UTC) Received: from avalon.bb.dnainternet.fi (dfj612ybrt5fhg77mgycy-3.rev.dnainternet.fi [IPv6:2001:14ba:21f5:5b00:2e86:4862:ef6a:2804]) by galahad.ideasonboard.com (Postfix) with ESMTPSA id 9277E21441; Fri, 13 Oct 2017 16:59:08 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1507906748; bh=I15WFJmjwH2MFEgsr5W/0Xsyw181IMcyX6g4MFffNNk=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=CBiIsVK9VRMImF8b2/rTXnuTdpFTbVgP/bvktUuBlu2eYGZ9ca7CF8kbZ1aEOCJ5y LGhC59rYTcKrtfEVw3m4M+Qk/aPO+iR0ik9AqMfFfVPAaolyklbEO0c377y1u7QlNB CFVAdZGSr5UollOtP3GygL8Gq7j0vNUmhpxd+xRo= From: Laurent Pinchart To: dri-devel@lists.freedesktop.org Subject: [PATCH 09/48] drm: omapdrm: Deconstruct the omap_drv.h header. Date: Fri, 13 Oct 2017 17:59:05 +0300 Message-Id: <20171013145944.26557-10-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.13.6 In-Reply-To: <20171013145944.26557-1-laurent.pinchart@ideasonboard.com> References: <20171013145944.26557-1-laurent.pinchart@ideasonboard.com> Cc: Tomi Valkeinen X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.18 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , MIME-Version: 1.0 Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP The number of function declarations in the omap_drv.h degrades readability. To fix it, create new header files for each part of the driver and move the related functions. Signed-off-by: Laurent Pinchart Reviewed-by: Sebastian Reichel --- drivers/gpu/drm/omapdrm/omap_connector.h | 37 +++++++++ drivers/gpu/drm/omapdrm/omap_crtc.h | 43 ++++++++++ drivers/gpu/drm/omapdrm/omap_drv.h | 133 +++---------------------------- drivers/gpu/drm/omapdrm/omap_encoder.h | 33 ++++++++ drivers/gpu/drm/omapdrm/omap_fb.h | 46 +++++++++++ drivers/gpu/drm/omapdrm/omap_fbdev.h | 39 +++++++++ drivers/gpu/drm/omapdrm/omap_gem.h | 99 +++++++++++++++++++++++ drivers/gpu/drm/omapdrm/omap_irq.h | 39 +++++++++ drivers/gpu/drm/omapdrm/omap_plane.h | 37 +++++++++ 9 files changed, 386 insertions(+), 120 deletions(-) create mode 100644 drivers/gpu/drm/omapdrm/omap_connector.h create mode 100644 drivers/gpu/drm/omapdrm/omap_crtc.h create mode 100644 drivers/gpu/drm/omapdrm/omap_encoder.h create mode 100644 drivers/gpu/drm/omapdrm/omap_fb.h create mode 100644 drivers/gpu/drm/omapdrm/omap_fbdev.h create mode 100644 drivers/gpu/drm/omapdrm/omap_gem.h create mode 100644 drivers/gpu/drm/omapdrm/omap_irq.h create mode 100644 drivers/gpu/drm/omapdrm/omap_plane.h diff --git a/drivers/gpu/drm/omapdrm/omap_connector.h b/drivers/gpu/drm/omapdrm/omap_connector.h new file mode 100644 index 000000000000..98bbc779b302 --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_connector.h @@ -0,0 +1,37 @@ +/* + * omap_connector.h -- OMAP DRM Connector + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_CONNECTOR_H__ +#define __OMAPDRM_CONNECTOR_H__ + +#include + +struct drm_connector; +struct drm_device; +struct drm_encoder; +struct omap_dss_device; + +struct drm_connector *omap_connector_init(struct drm_device *dev, + int connector_type, struct omap_dss_device *dssdev, + struct drm_encoder *encoder); +struct drm_encoder *omap_connector_attached_encoder( + struct drm_connector *connector); +bool omap_connector_get_hdmi_mode(struct drm_connector *connector); + +#endif /* __OMAPDRM_CONNECTOR_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_crtc.h b/drivers/gpu/drm/omapdrm/omap_crtc.h new file mode 100644 index 000000000000..ad7b007c6174 --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_crtc.h @@ -0,0 +1,43 @@ +/* + * omap_crtc.h -- OMAP DRM CRTC + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_CRTC_H__ +#define __OMAPDRM_CRTC_H__ + +#include + +enum omap_channel; + +struct drm_crtc; +struct drm_device; +struct drm_plane; +struct omap_dss_device; +struct videomode; + +struct videomode *omap_crtc_timings(struct drm_crtc *crtc); +enum omap_channel omap_crtc_channel(struct drm_crtc *crtc); +void omap_crtc_pre_init(void); +void omap_crtc_pre_uninit(void); +struct drm_crtc *omap_crtc_init(struct drm_device *dev, + struct drm_plane *plane, struct omap_dss_device *dssdev); +int omap_crtc_wait_pending(struct drm_crtc *crtc); +void omap_crtc_error_irq(struct drm_crtc *crtc, uint32_t irqstatus); +void omap_crtc_vblank_irq(struct drm_crtc *crtc); + +#endif /* __OMAPDRM_CRTC_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_drv.h b/drivers/gpu/drm/omapdrm/omap_drv.h index 04f35f74f80c..afb2a5a96278 100644 --- a/drivers/gpu/drm/omapdrm/omap_drv.h +++ b/drivers/gpu/drm/omapdrm/omap_drv.h @@ -17,8 +17,8 @@ * this program. If not, see . */ -#ifndef __OMAP_DRV_H__ -#define __OMAP_DRV_H__ +#ifndef __OMAPDRM_DRV_H__ +#define __OMAPDRM_DRV_H__ #include #include @@ -31,6 +31,15 @@ #include "dss/omapdss.h" +#include "omap_connector.h" +#include "omap_crtc.h" +#include "omap_encoder.h" +#include "omap_fb.h" +#include "omap_fbdev.h" +#include "omap_gem.h" +#include "omap_irq.h" +#include "omap_plane.h" + #define DBG(fmt, ...) DRM_DEBUG(fmt"\n", ##__VA_ARGS__) #define VERB(fmt, ...) if (0) DRM_DEBUG(fmt, ##__VA_ARGS__) /* verbose debug */ @@ -38,14 +47,6 @@ struct omap_drm_usergart; -/* For KMS code that needs to wait for a certain # of IRQs: - */ -struct omap_irq_wait; -struct omap_irq_wait * omap_irq_wait_init(struct drm_device *dev, - uint32_t irqmask, int count); -int omap_irq_wait(struct drm_device *dev, struct omap_irq_wait *wait, - unsigned long timeout); - struct omap_drm_private { uint32_t omaprev; @@ -86,114 +87,6 @@ struct omap_drm_private { }; -#ifdef CONFIG_DEBUG_FS int omap_debugfs_init(struct drm_minor *minor); -void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m); -void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m); -void omap_gem_describe_objects(struct list_head *list, struct seq_file *m); -#endif - -#ifdef CONFIG_PM -int omap_gem_resume(struct drm_device *dev); -#endif - -int omap_irq_enable_vblank(struct drm_crtc *crtc); -void omap_irq_disable_vblank(struct drm_crtc *crtc); -void omap_drm_irq_uninstall(struct drm_device *dev); -int omap_drm_irq_install(struct drm_device *dev); - -#ifdef CONFIG_DRM_FBDEV_EMULATION -struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev); -void omap_fbdev_free(struct drm_device *dev); -#else -static inline struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev) -{ - return NULL; -} -static inline void omap_fbdev_free(struct drm_device *dev) -{ -} -#endif - -struct videomode *omap_crtc_timings(struct drm_crtc *crtc); -enum omap_channel omap_crtc_channel(struct drm_crtc *crtc); -void omap_crtc_pre_init(void); -void omap_crtc_pre_uninit(void); -struct drm_crtc *omap_crtc_init(struct drm_device *dev, - struct drm_plane *plane, struct omap_dss_device *dssdev); -int omap_crtc_wait_pending(struct drm_crtc *crtc); -void omap_crtc_error_irq(struct drm_crtc *crtc, uint32_t irqstatus); -void omap_crtc_vblank_irq(struct drm_crtc *crtc); - -struct drm_plane *omap_plane_init(struct drm_device *dev, - int idx, enum drm_plane_type type, - u32 possible_crtcs); -void omap_plane_install_properties(struct drm_plane *plane, - struct drm_mode_object *obj); - -struct drm_encoder *omap_encoder_init(struct drm_device *dev, - struct omap_dss_device *dssdev); - -struct drm_connector *omap_connector_init(struct drm_device *dev, - int connector_type, struct omap_dss_device *dssdev, - struct drm_encoder *encoder); -struct drm_encoder *omap_connector_attached_encoder( - struct drm_connector *connector); -bool omap_connector_get_hdmi_mode(struct drm_connector *connector); - -struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, - struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd); -struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, - const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos); -int omap_framebuffer_pin(struct drm_framebuffer *fb); -void omap_framebuffer_unpin(struct drm_framebuffer *fb); -void omap_framebuffer_update_scanout(struct drm_framebuffer *fb, - struct drm_plane_state *state, struct omap_overlay_info *info); -struct drm_connector *omap_framebuffer_get_next_connector( - struct drm_framebuffer *fb, struct drm_connector *from); -bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb); - -void omap_gem_init(struct drm_device *dev); -void omap_gem_deinit(struct drm_device *dev); - -struct drm_gem_object *omap_gem_new(struct drm_device *dev, - union omap_gem_size gsize, uint32_t flags); -struct drm_gem_object *omap_gem_new_dmabuf(struct drm_device *dev, size_t size, - struct sg_table *sgt); -int omap_gem_new_handle(struct drm_device *dev, struct drm_file *file, - union omap_gem_size gsize, uint32_t flags, uint32_t *handle); -void omap_gem_free_object(struct drm_gem_object *obj); -void *omap_gem_vaddr(struct drm_gem_object *obj); -int omap_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, - uint32_t handle, uint64_t *offset); -int omap_gem_dumb_create(struct drm_file *file, struct drm_device *dev, - struct drm_mode_create_dumb *args); -int omap_gem_mmap(struct file *filp, struct vm_area_struct *vma); -int omap_gem_mmap_obj(struct drm_gem_object *obj, - struct vm_area_struct *vma); -int omap_gem_fault(struct vm_fault *vmf); -int omap_gem_roll(struct drm_gem_object *obj, uint32_t roll); -void omap_gem_cpu_sync_page(struct drm_gem_object *obj, int pgoff); -void omap_gem_dma_sync_buffer(struct drm_gem_object *obj, - enum dma_data_direction dir); -int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr); -void omap_gem_unpin(struct drm_gem_object *obj); -int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages, - bool remap); -int omap_gem_put_pages(struct drm_gem_object *obj); -uint32_t omap_gem_flags(struct drm_gem_object *obj); -int omap_gem_rotated_dma_addr(struct drm_gem_object *obj, uint32_t orient, - int x, int y, dma_addr_t *dma_addr); -uint64_t omap_gem_mmap_offset(struct drm_gem_object *obj); -size_t omap_gem_mmap_size(struct drm_gem_object *obj); -int omap_gem_tiled_stride(struct drm_gem_object *obj, uint32_t orient); - -struct dma_buf *omap_gem_prime_export(struct drm_device *dev, - struct drm_gem_object *obj, int flags); -struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev, - struct dma_buf *buffer); - -/* map crtc to vblank mask */ -struct omap_dss_device *omap_encoder_get_dssdev(struct drm_encoder *encoder); - -#endif /* __OMAP_DRV_H__ */ + +#endif /* __OMAPDRM_DRV_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_encoder.h b/drivers/gpu/drm/omapdrm/omap_encoder.h new file mode 100644 index 000000000000..d2f308bec494 --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_encoder.h @@ -0,0 +1,33 @@ +/* + * omap_encoder.h -- OMAP DRM Encoder + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_ENCODER_H__ +#define __OMAPDRM_ENCODER_H__ + +struct drm_device; +struct drm_encoder; +struct omap_dss_device; + +struct drm_encoder *omap_encoder_init(struct drm_device *dev, + struct omap_dss_device *dssdev); + +/* map crtc to vblank mask */ +struct omap_dss_device *omap_encoder_get_dssdev(struct drm_encoder *encoder); + +#endif /* __OMAPDRM_ENCODER_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_fb.h b/drivers/gpu/drm/omapdrm/omap_fb.h new file mode 100644 index 000000000000..94ad5f9e4404 --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_fb.h @@ -0,0 +1,46 @@ +/* + * omap_fb.h -- OMAP DRM Framebuffer + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_FB_H__ +#define __OMAPDRM_FB_H__ + +struct drm_connector; +struct drm_device; +struct drm_file; +struct drm_framebuffer; +struct drm_gem_object; +struct drm_mode_fb_cmd2; +struct drm_plane_state; +struct omap_overlay_info; +struct seq_file; + +struct drm_framebuffer *omap_framebuffer_create(struct drm_device *dev, + struct drm_file *file, const struct drm_mode_fb_cmd2 *mode_cmd); +struct drm_framebuffer *omap_framebuffer_init(struct drm_device *dev, + const struct drm_mode_fb_cmd2 *mode_cmd, struct drm_gem_object **bos); +int omap_framebuffer_pin(struct drm_framebuffer *fb); +void omap_framebuffer_unpin(struct drm_framebuffer *fb); +void omap_framebuffer_update_scanout(struct drm_framebuffer *fb, + struct drm_plane_state *state, struct omap_overlay_info *info); +struct drm_connector *omap_framebuffer_get_next_connector( + struct drm_framebuffer *fb, struct drm_connector *from); +bool omap_framebuffer_supports_rotation(struct drm_framebuffer *fb); +void omap_framebuffer_describe(struct drm_framebuffer *fb, struct seq_file *m); + +#endif /* __OMAPDRM_FB_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_fbdev.h b/drivers/gpu/drm/omapdrm/omap_fbdev.h new file mode 100644 index 000000000000..1f5ba0996a1a --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_fbdev.h @@ -0,0 +1,39 @@ +/* + * omap_fbdev.h -- OMAP DRM FBDEV Compatibility + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_FBDEV_H__ +#define __OMAPDRM_FBDEV_H__ + +struct drm_device; +struct drm_fb_helper; + +#ifdef CONFIG_DRM_FBDEV_EMULATION +struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev); +void omap_fbdev_free(struct drm_device *dev); +#else +static inline struct drm_fb_helper *omap_fbdev_init(struct drm_device *dev) +{ + return NULL; +} +static inline void omap_fbdev_free(struct drm_device *dev) +{ +} +#endif + +#endif /* __OMAPDRM_FBDEV_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_gem.h b/drivers/gpu/drm/omapdrm/omap_gem.h new file mode 100644 index 000000000000..35fa690b3d90 --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_gem.h @@ -0,0 +1,99 @@ +/* + * omap_gem.h -- OMAP DRM GEM Object Management + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_GEM_H__ +#define __OMAPDRM_GEM_H__ + +#include + +enum dma_data_direction; + +struct dma_buf; +struct drm_device; +struct drm_file; +struct drm_gem_object; +struct drm_mode_create_dumb; +struct file; +struct list_head; +struct page; +struct seq_file; +struct vm_area_struct; +struct vm_fault; + +union omap_gem_size; + +/* Initialization and Cleanup */ +void omap_gem_init(struct drm_device *dev); +void omap_gem_deinit(struct drm_device *dev); + +#ifdef CONFIG_PM +int omap_gem_resume(struct drm_device *dev); +#endif + +#ifdef CONFIG_DEBUG_FS +void omap_gem_describe(struct drm_gem_object *obj, struct seq_file *m); +void omap_gem_describe_objects(struct list_head *list, struct seq_file *m); +#endif + +/* GEM Object Creation and Deletion */ +struct drm_gem_object *omap_gem_new(struct drm_device *dev, + union omap_gem_size gsize, uint32_t flags); +struct drm_gem_object *omap_gem_new_dmabuf(struct drm_device *dev, size_t size, + struct sg_table *sgt); +int omap_gem_new_handle(struct drm_device *dev, struct drm_file *file, + union omap_gem_size gsize, uint32_t flags, uint32_t *handle); +void omap_gem_free_object(struct drm_gem_object *obj); +void *omap_gem_vaddr(struct drm_gem_object *obj); + +/* Dumb Buffers Interface */ +int omap_gem_dumb_map_offset(struct drm_file *file, struct drm_device *dev, + uint32_t handle, uint64_t *offset); +int omap_gem_dumb_create(struct drm_file *file, struct drm_device *dev, + struct drm_mode_create_dumb *args); + +/* mmap() Interface */ +int omap_gem_mmap(struct file *filp, struct vm_area_struct *vma); +int omap_gem_mmap_obj(struct drm_gem_object *obj, + struct vm_area_struct *vma); +uint64_t omap_gem_mmap_offset(struct drm_gem_object *obj); +size_t omap_gem_mmap_size(struct drm_gem_object *obj); + +/* PRIME Interface */ +struct dma_buf *omap_gem_prime_export(struct drm_device *dev, + struct drm_gem_object *obj, int flags); +struct drm_gem_object *omap_gem_prime_import(struct drm_device *dev, + struct dma_buf *buffer); + +int omap_gem_fault(struct vm_fault *vmf); +int omap_gem_roll(struct drm_gem_object *obj, uint32_t roll); +void omap_gem_cpu_sync_page(struct drm_gem_object *obj, int pgoff); +void omap_gem_dma_sync_buffer(struct drm_gem_object *obj, + enum dma_data_direction dir); +int omap_gem_pin(struct drm_gem_object *obj, dma_addr_t *dma_addr); +void omap_gem_unpin(struct drm_gem_object *obj); +int omap_gem_get_pages(struct drm_gem_object *obj, struct page ***pages, + bool remap); +int omap_gem_put_pages(struct drm_gem_object *obj); + +uint32_t omap_gem_flags(struct drm_gem_object *obj); +int omap_gem_rotated_dma_addr(struct drm_gem_object *obj, uint32_t orient, + int x, int y, dma_addr_t *dma_addr); +int omap_gem_tiled_stride(struct drm_gem_object *obj, uint32_t orient); + +#endif /* __OMAPDRM_GEM_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_irq.h b/drivers/gpu/drm/omapdrm/omap_irq.h new file mode 100644 index 000000000000..606c09932bc0 --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_irq.h @@ -0,0 +1,39 @@ +/* + * omap_irq.h -- OMAP DRM IRQ Handling + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_IRQ_H__ +#define __OMAPDRM_IRQ_H__ + +#include + +struct drm_crtc; +struct drm_device; +struct omap_irq_wait; + +int omap_irq_enable_vblank(struct drm_crtc *crtc); +void omap_irq_disable_vblank(struct drm_crtc *crtc); +void omap_drm_irq_uninstall(struct drm_device *dev); +int omap_drm_irq_install(struct drm_device *dev); + +struct omap_irq_wait *omap_irq_wait_init(struct drm_device *dev, + uint32_t irqmask, int count); +int omap_irq_wait(struct drm_device *dev, struct omap_irq_wait *wait, + unsigned long timeout); + +#endif /* __OMAPDRM_IRQ_H__ */ diff --git a/drivers/gpu/drm/omapdrm/omap_plane.h b/drivers/gpu/drm/omapdrm/omap_plane.h new file mode 100644 index 000000000000..dc5e82ad061d --- /dev/null +++ b/drivers/gpu/drm/omapdrm/omap_plane.h @@ -0,0 +1,37 @@ +/* + * omap_plane.h -- OMAP DRM Plane + * + * Copyright (C) 2011 Texas Instruments + * Author: Rob Clark + * + * This program is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 as published by + * the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for + * more details. + * + * You should have received a copy of the GNU General Public License along with + * this program. If not, see . + */ + +#ifndef __OMAPDRM_PLANE_H__ +#define __OMAPDRM_PLANE_H__ + +#include + +enum drm_plane_type; + +struct drm_device; +struct drm_mode_object; +struct drm_plane; + +struct drm_plane *omap_plane_init(struct drm_device *dev, + int idx, enum drm_plane_type type, + u32 possible_crtcs); +void omap_plane_install_properties(struct drm_plane *plane, + struct drm_mode_object *obj); + +#endif /* __OMAPDRM_PLANE_H__ */