From patchwork Wed Jul 20 01:11:10 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Longerbeam X-Patchwork-Id: 9239015 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 EF3DC600CB for ; Wed, 20 Jul 2016 07:51:39 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E2270275A2 for ; Wed, 20 Jul 2016 07:51:39 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id D6D9D2787C; Wed, 20 Jul 2016 07:51:39 +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_ADSP_CUSTOM_MED, DKIM_SIGNED, FREEMAIL_FROM, 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]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id E6E9B275A2 for ; Wed, 20 Jul 2016 07:51:38 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id CC97E6E788; Wed, 20 Jul 2016 07:51:16 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pf0-x241.google.com (mail-pf0-x241.google.com [IPv6:2607:f8b0:400e:c00::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id B89056E3A6 for ; Wed, 20 Jul 2016 01:11:34 +0000 (UTC) Received: by mail-pf0-x241.google.com with SMTP id i6so2343784pfe.0 for ; Tue, 19 Jul 2016 18:11:34 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:in-reply-to:references; bh=ULFj3LJAs7nqZPdgtjfEGrPb4pVWtlh65MYU/dGLmkI=; b=eWtkXt7J+803t509Nk4P5261aWSjhAERDpMYQp4xoaT40kKh3JusPvesiwtnqWUCGm 2YL6v+o6OvlP/Rde4P7oVtp93IHSLnbRkVSsQ8oEJXv4nXqXFc0b/w20TEBLIeWjzcbI lpysMcWIQkDnZeBmv11D4RMFa6acM7KGeWkuQLulsVemEt9XKUcfACeHkg1oSy+OvNJr ltrQE4qY9V75FPj+6bFLbrMp2qu2sUgUTEUG27Uwe5jlp7BKAV28H1G1qbfe3OKZdGGZ cm5ZpMB5q2TSobni/yo2hEGjGZHzBel83WRI9TjP0CK+vwkNfdpoIrAH/XdZctNJtqTv dYxg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references; bh=ULFj3LJAs7nqZPdgtjfEGrPb4pVWtlh65MYU/dGLmkI=; b=YaoPjofHP210ZvYJXwkRtfvsbD3j4OeYe66ZD2NqP6rkbGCjdW/HAoqiaitDlnrXGf xFVWzZhfOAxRzAEvkSl29Nd4fCpQgFWJNmhuL6KCtHYij2JNKQjUCiGryGfO/asBTvQp H2TPXOzL0qbbY7OhjQoTZ/LmWtyrmUENizZ1OR7xEQQI3PjwYOwU0fSihc9YO8OIR6X+ zGGi0CwHagS75ZgfQyb5/UyrhFbKhijYVDtEs8HJS9+hAXHUGzAbZb24LHjGi0S6NGAI YsbJSe+nX0HJqxD61inB3kInhnSVY6Uh17x6y5vSn7+mW7M2Ye9CGq/BfxQsKHE4CMAu C8ng== X-Gm-Message-State: ALyK8tIYJTGgB3LKIoj/VXhznbMKU+uMMArn13b4KFMkevsj98HXtC5hTHk5BuAzLGW3Kg== X-Received: by 10.98.70.199 with SMTP id o68mr60189792pfi.17.1468977092084; Tue, 19 Jul 2016 18:11:32 -0700 (PDT) Received: from mothership.sklembedded.com (c-73-241-2-21.hsd1.ca.comcast.net. [73.241.2.21]) by smtp.googlemail.com with ESMTPSA id d1sm84277pas.48.2016.07.19.18.11.31 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Tue, 19 Jul 2016 18:11:31 -0700 (PDT) From: Steve Longerbeam X-Google-Original-From: Steve Longerbeam To: p.zabel@pengutronix.de, plagnioj@jcrosoft.com, tomi.valkeinen@ti.com Subject: [PATCH v2 12/13] gpu: ipu-ic: allow multiple handles to ic Date: Tue, 19 Jul 2016 18:11:10 -0700 Message-Id: <1468977071-29240-13-git-send-email-steve_longerbeam@mentor.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1468977071-29240-1-git-send-email-steve_longerbeam@mentor.com> References: <1467932621-358-1-git-send-email-steve_longerbeam@mentor.com> <1468977071-29240-1-git-send-email-steve_longerbeam@mentor.com> X-Mailman-Approved-At: Wed, 20 Jul 2016 07:51:13 +0000 Cc: linux-fbdev@vger.kernel.org, Steve Longerbeam , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org 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 image converter kernel API supports conversion contexts and job queues, so we should allow more than one handle to the IC, so that multiple users can add jobs to the queue. Note however that users that control the IC manually (that do not use the image converter APIs but setup the IC task by hand via calls to ipu_ic_task_enable(), ipu_ic_enable(), etc.) must still be careful not to share the IC handle with other threads. At this point, the only user that still controls the IC manually is the i.mx capture driver. In that case the capture driver only allows one open context to get a handle to the IC at a time, so we should be ok there. Signed-off-by: Steve Longerbeam --- drivers/gpu/ipu-v3/ipu-ic.c | 25 +------------------------ 1 file changed, 1 insertion(+), 24 deletions(-) diff --git a/drivers/gpu/ipu-v3/ipu-ic.c b/drivers/gpu/ipu-v3/ipu-ic.c index 5471b72..cc0780b 100644 --- a/drivers/gpu/ipu-v3/ipu-ic.c +++ b/drivers/gpu/ipu-v3/ipu-ic.c @@ -342,7 +342,6 @@ struct ipu_ic { enum ipu_color_space out_cs; bool graphics; bool rotation; - bool in_use; struct image_converter cvt; @@ -2367,38 +2366,16 @@ EXPORT_SYMBOL_GPL(ipu_ic_disable); struct ipu_ic *ipu_ic_get(struct ipu_soc *ipu, enum ipu_ic_task task) { struct ipu_ic_priv *priv = ipu->ic_priv; - unsigned long flags; - struct ipu_ic *ic, *ret; if (task >= IC_NUM_TASKS) return ERR_PTR(-EINVAL); - ic = &priv->task[task]; - - spin_lock_irqsave(&priv->lock, flags); - - if (ic->in_use) { - ret = ERR_PTR(-EBUSY); - goto unlock; - } - - ic->in_use = true; - ret = ic; - -unlock: - spin_unlock_irqrestore(&priv->lock, flags); - return ret; + return &priv->task[task]; } EXPORT_SYMBOL_GPL(ipu_ic_get); void ipu_ic_put(struct ipu_ic *ic) { - struct ipu_ic_priv *priv = ic->priv; - unsigned long flags; - - spin_lock_irqsave(&priv->lock, flags); - ic->in_use = false; - spin_unlock_irqrestore(&priv->lock, flags); } EXPORT_SYMBOL_GPL(ipu_ic_put);