From patchwork Sun Jul 31 19:42:27 2016 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Steve Longerbeam X-Patchwork-Id: 9253595 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 B817560865 for ; Mon, 1 Aug 2016 01:29:30 +0000 (UTC) Received: from mail.wl.linuxfoundation.org (localhost [127.0.0.1]) by mail.wl.linuxfoundation.org (Postfix) with ESMTP id A991D28405 for ; Mon, 1 Aug 2016 01:29:30 +0000 (UTC) Received: by mail.wl.linuxfoundation.org (Postfix, from userid 486) id 9E6A228408; Mon, 1 Aug 2016 01:29:30 +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 3524628405 for ; Mon, 1 Aug 2016 01:29:30 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 7D7686E168; Mon, 1 Aug 2016 01:28:26 +0000 (UTC) X-Original-To: dri-devel@lists.freedesktop.org Delivered-To: dri-devel@lists.freedesktop.org Received: from mail-pa0-x241.google.com (mail-pa0-x241.google.com [IPv6:2607:f8b0:400e:c03::241]) by gabe.freedesktop.org (Postfix) with ESMTPS id 0CC626E17C for ; Sun, 31 Jul 2016 19:42:54 +0000 (UTC) Received: by mail-pa0-x241.google.com with SMTP id hh10so8546855pac.1 for ; Sun, 31 Jul 2016 12:42:54 -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=rhBz1FKaNYLblHF6yQ5O0wN7yGu1iS774vzj9sKgEKI=; b=lkhlcd2lobBBJoGr+RMc1ToOmjD96Xx0nZOClmtQdazr05VtAbO9zcRjQaGOuxd83V hik4svz3iOAMwG2gl7EuXRqJAUHJx812lXk3T7XwL+cZT4JgLNlbGm4Vt2Yg+ECNNJ5u nKfzsZziKbDrsRehrXBpPjBrbqA7mtsUA6FdnKybMjxBs1RU43Nxek3mkMp0BxfjO9vw w61bzL8/4ihTKr9xNyiA8zE3IN9bdiepcrUoN628EbClWuvDtHM6vilxV73p35Oo8p3w OtK7UBG9mppV4T06Rk5qGwRKwZQfQZS2G/ZXMFIALjMO/m2W91rq5OqYJUXIp+l8EFtU KUIw== 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=rhBz1FKaNYLblHF6yQ5O0wN7yGu1iS774vzj9sKgEKI=; b=Kzx8XzXVZQGRkLvsmJc59Dddxf8Jow4E6iDZhw/DhStgLqA3PmrtlVphJHt7dihhZC ECAhq0YDkOhnH0u6C3pzivlucRgXvRWpImOZ7IFkk2sFa13KAaNZW3yeqcx3oKZR/0qc kdh+rD1f/AJAKEtF7ovCYWDfRemtKpiRiIYFgIbfXNut8XJB2DnxwvTTz25zAV9Lhx3Z 0oJAOx53jr1l7Y9/AHahybLGQEfS7gSFe0GMZt+gxlnWs1In6uMw9NLsLhgJ161YnkL+ LF/K0EY3vDUN6N+ME892o4lFLfNcuUe+A9KqK2p86+nSK1ZlqOOPCf93+tZllR7Dqer2 FJBA== X-Gm-Message-State: AEkoouse2C04vy+SpjA/DrovzF6gshHffmyacr1vXSfCL+Ow1Yod5P3ue6RnSUk/zJqyng== X-Received: by 10.66.217.170 with SMTP id oz10mr79253707pac.61.1469994172053; Sun, 31 Jul 2016 12:42:52 -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 wp4sm39906381pab.15.2016.07.31.12.42.51 (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Sun, 31 Jul 2016 12:42:51 -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 v3 12/12] gpu: ipu-ic: allow multiple handles to ic Date: Sun, 31 Jul 2016 12:42:27 -0700 Message-Id: <1469994147-17549-13-git-send-email-steve_longerbeam@mentor.com> X-Mailer: git-send-email 1.9.1 In-Reply-To: <1469994147-17549-1-git-send-email-steve_longerbeam@mentor.com> References: <1469994147-17549-1-git-send-email-steve_longerbeam@mentor.com> X-Mailman-Approved-At: Mon, 01 Aug 2016 01:28:21 +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 --- v3: no changes v2: no changes --- 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);