From patchwork Wed Nov 30 11:17:19 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Tomi Valkeinen X-Patchwork-Id: 9453997 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 1FC8860585 for ; Wed, 30 Nov 2016 11:18:36 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id 0757628441 for ; Wed, 30 Nov 2016 11:18:36 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id F095B28443; Wed, 30 Nov 2016 11:18:35 +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.2 required=2.0 tests=BAYES_00, RCVD_IN_DNSWL_MED 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 99F6728441 for ; Wed, 30 Nov 2016 11:18:35 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id E05E26E1B3; Wed, 30 Nov 2016 11:18:29 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from fllnx210.ext.ti.com (fllnx210.ext.ti.com [198.47.19.17]) by gabe.freedesktop.org (Postfix) with ESMTPS id 684ED6E104 for ; Wed, 30 Nov 2016 11:18:15 +0000 (UTC) Received: from dflxv15.itg.ti.com ([128.247.5.124]) by fllnx210.ext.ti.com (8.15.1/8.15.1) with ESMTP id uAUBIDIL023381; Wed, 30 Nov 2016 05:18:13 -0600 Received: from DFLE72.ent.ti.com (dfle72.ent.ti.com [128.247.5.109]) by dflxv15.itg.ti.com (8.14.3/8.13.8) with ESMTP id uAUBIDIL019462; Wed, 30 Nov 2016 05:18:13 -0600 Received: from dflp32.itg.ti.com (10.64.6.15) by DFLE72.ent.ti.com (128.247.5.109) with Microsoft SMTP Server id 14.3.294.0; Wed, 30 Nov 2016 05:18:12 -0600 Received: from deskari.ti.com (ileax41-snat.itg.ti.com [10.172.224.153]) by dflp32.itg.ti.com (8.14.3/8.13.8) with ESMTP id uAUBHnV7013328; Wed, 30 Nov 2016 05:18:11 -0600 From: Tomi Valkeinen To: , Laurent Pinchart Subject: [PATCH 17/36] drm/omap: add dispc_ops Date: Wed, 30 Nov 2016 13:17:19 +0200 Message-ID: <1480504658-11775-18-git-send-email-tomi.valkeinen@ti.com> X-Mailer: git-send-email 2.7.4 In-Reply-To: <1480504658-11775-1-git-send-email-tomi.valkeinen@ti.com> References: <1480504658-11775-1-git-send-email-tomi.valkeinen@ti.com> MIME-Version: 1.0 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: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" X-Virus-Scanned: ClamAV using ClamSMTP We want to change the dispc API from plain functions to a struct with functions pointers, so that omapdrm can call either omapdss or omapdss6 depending on the platform. This patch adds 'struct dispc_ops' and adds functions to omapdss-base to set and get the ops. Signed-off-by: Tomi Valkeinen --- drivers/gpu/drm/omapdrm/dss/base.c | 13 +++++++++ drivers/gpu/drm/omapdrm/dss/omapdss.h | 50 +++++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) diff --git a/drivers/gpu/drm/omapdrm/dss/base.c b/drivers/gpu/drm/omapdrm/dss/base.c index 03942097b9f1..7dd447e6c4d7 100644 --- a/drivers/gpu/drm/omapdrm/dss/base.c +++ b/drivers/gpu/drm/omapdrm/dss/base.c @@ -2,6 +2,7 @@ #include static bool dss_initialized; +static const struct dispc_ops *ops; void omapdss_set_is_initialized(bool set) { @@ -15,6 +16,18 @@ bool omapdss_is_initialized(void) } EXPORT_SYMBOL(omapdss_is_initialized); +void dispc_set_ops(const struct dispc_ops *o) +{ + ops = o; +} +EXPORT_SYMBOL(dispc_set_ops); + +const struct dispc_ops *dispc_get_ops(void) +{ + return ops; +} +EXPORT_SYMBOL(dispc_get_ops); + MODULE_AUTHOR("Tomi Valkeinen "); MODULE_DESCRIPTION("OMAP Display Subsystem Base"); MODULE_LICENSE("GPL v2"); diff --git a/drivers/gpu/drm/omapdrm/dss/omapdss.h b/drivers/gpu/drm/omapdrm/dss/omapdss.h index aed76d6f41f6..134f153669ea 100644 --- a/drivers/gpu/drm/omapdrm/dss/omapdss.h +++ b/drivers/gpu/drm/omapdrm/dss/omapdss.h @@ -933,4 +933,54 @@ int dss_mgr_register_framedone_handler(enum omap_channel channel, void dss_mgr_unregister_framedone_handler(enum omap_channel channel, void (*handler)(void *), void *data); +/* dispc ops */ + +struct dispc_ops { + u32 (*read_irqstatus)(void); + void (*clear_irqstatus)(u32 mask); + u32 (*read_irqenable)(void); + void (*write_irqenable)(u32 mask); + + int (*request_irq)(irq_handler_t handler, void *dev_id); + void (*free_irq)(void *dev_id); + + int (*runtime_get)(void); + void (*runtime_put)(void); + + int (*get_num_ovls)(void); + int (*get_num_mgrs)(void); + + void (*mgr_enable)(enum omap_channel channel, bool enable); + bool (*mgr_is_enabled)(enum omap_channel channel); + u32 (*mgr_get_vsync_irq)(enum omap_channel channel); + u32 (*mgr_get_framedone_irq)(enum omap_channel channel); + u32 (*mgr_get_sync_lost_irq)(enum omap_channel channel); + bool (*mgr_go_busy)(enum omap_channel channel); + void (*mgr_go)(enum omap_channel channel); + void (*mgr_set_lcd_config)(enum omap_channel channel, + const struct dss_lcd_mgr_config *config); + void (*mgr_set_timings)(enum omap_channel channel, + const struct videomode *vm); + void (*mgr_setup)(enum omap_channel channel, + const struct omap_overlay_manager_info *info); + enum omap_dss_output_id (*mgr_get_supported_outputs)(enum omap_channel channel); + u32 (*mgr_gamma_size)(enum omap_channel channel); + void (*mgr_set_gamma)(enum omap_channel channel, + const struct drm_color_lut *lut, + unsigned int length); + + int (*ovl_enable)(enum omap_plane plane, bool enable); + bool (*ovl_enabled)(enum omap_plane plane); + void (*ovl_set_channel_out)(enum omap_plane plane, + enum omap_channel channel); + int (*ovl_setup)(enum omap_plane plane, const struct omap_overlay_info *oi, + bool replication, const struct videomode *vm, + bool mem_to_mem); + + enum omap_color_mode (*ovl_get_color_modes)(enum omap_plane plane); +}; + +void dispc_set_ops(const struct dispc_ops *o); +const struct dispc_ops *dispc_get_ops(void); + #endif /* __OMAP_DRM_DSS_H */