Received: by 2002:a05:6a10:5bc5:0:0:0:0 with SMTP id os5csp1360561pxb; Mon, 11 Oct 2021 04:28:37 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwGqvkEiRKxC+xeTiLB7wmHUHMPcrtGkjickLXKRiP91DUX2hgXy0VrnFKYK2wxrrnUqh3a X-Received: by 2002:a17:90a:67c1:: with SMTP id g1mr30528004pjm.177.1633951716858; Mon, 11 Oct 2021 04:28:36 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1633951716; cv=none; d=google.com; s=arc-20160816; b=pS5oMFR7AlU2HW99fGBLEHkwhiVEuXlgaw1/qafjVaq2GZ74goD3WFaS6+pAWtpg5D JqHiBdoIuncIQtqdNlZ2W6RJjIvyJa1EdYcdj2LbOS/x7BC16/w0i9X3kTBjycH3SI3o eW89st7tu/xvhvazD8Cdj74AECcGKiE+Bairr8ubpPFQ5lPQwHAY5z0bTlEitCxv1rIr Tlp8s54Mr0T9itW14WSPcMAyX0fWoYBCq4S07rJbV7CTg8PteCKgTeRDCRVwTx1WyNXa v6SjpCMY0mVpSsryD8r/ZT/UeI3gY5yCMTwwOk6ZYtov7ESioECm79aewfvVAxw9b1/4 3WuA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:content-transfer-encoding:mime-version :references:in-reply-to:message-id:date:subject:cc:to:from; bh=PpuEpxB+IsVv+P7WtjbJ50GAlUcH/nVrTcSNq5pObS0=; b=vIBxSKGFgxWcPlS96icZCuo1/sNsH7VeAn8FF5k8roh/sHaYqQxGVyZF6GAhC/gJFg K+4wneguxhXgLGGdu2s0Xa6fu/rmFN97w1AMkeO8zO8+BfUA6tZ2opkSobhDb4OSOxGz 88dr+Qh0DPJYS5lymaqBhSKnB49qDVTnXD0brG7byIpEGV0iCSQFodb7U9Z1We6lLE/Y FZvDj5UlGaoYA/Hjb1nfkwR55kIPcdAlgPmxc+61zw8/UHUYIN3XuSMQMuNKdOsGu6Co FKbCcNEGTHb2zVbD1J6D1AYNRtAnTtuLWL78+4wRrO7jNUQJaID9ZorADpod8VSaW6KA j5cw== ARC-Authentication-Results: i=1; mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id c2si1871873pfl.32.2021.10.11.04.28.24; Mon, 11 Oct 2021 04:28:36 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=mediatek.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S234532AbhJKHF5 (ORCPT + 99 others); Mon, 11 Oct 2021 03:05:57 -0400 Received: from mailgw01.mediatek.com ([60.244.123.138]:32942 "EHLO mailgw01.mediatek.com" rhost-flags-OK-FAIL-OK-FAIL) by vger.kernel.org with ESMTP id S234517AbhJKHFG (ORCPT ); Mon, 11 Oct 2021 03:05:06 -0400 X-UUID: 81a35439ff3040d29a407eaa49c5019a-20211011 X-UUID: 81a35439ff3040d29a407eaa49c5019a-20211011 Received: from mtkcas10.mediatek.inc [(172.21.101.39)] by mailgw01.mediatek.com (envelope-from ) (Generic MTA with TLSv1.2 ECDHE-RSA-AES256-SHA384 256/256) with ESMTP id 693908404; Mon, 11 Oct 2021 15:03:02 +0800 Received: from mtkcas10.mediatek.inc (172.21.101.39) by mtkmbs07n2.mediatek.inc (172.21.101.141) with Microsoft SMTP Server (TLS) id 15.0.1497.2; Mon, 11 Oct 2021 15:03:01 +0800 Received: from localhost.localdomain (10.17.3.154) by mtkcas10.mediatek.inc (172.21.101.73) with Microsoft SMTP Server id 15.0.1497.2 via Frontend Transport; Mon, 11 Oct 2021 15:02:59 +0800 From: Yunfei Dong To: Yunfei Dong , Alexandre Courbot , Hans Verkuil , Tzung-Bi Shih , Tiffany Lin , Andrew-CT Chen , Mauro Carvalho Chehab , Rob Herring , Matthias Brugger , Tomasz Figa CC: Hsin-Yi Wang , Fritz Koenig , Dafna Hirschfeld , Benjamin Gaignard , Daniel Vetter , dri-devel , Irui Wang , , , , , , , Subject: [PATCH v7, 10/15] media: mtk-vcodec: Add new interface to lock different hardware Date: Mon, 11 Oct 2021 15:02:42 +0800 Message-ID: <20211011070247.792-11-yunfei.dong@mediatek.com> X-Mailer: git-send-email 2.25.1 In-Reply-To: <20211011070247.792-1-yunfei.dong@mediatek.com> References: <20211011070247.792-1-yunfei.dong@mediatek.com> MIME-Version: 1.0 Content-Transfer-Encoding: 7BIT Content-Type: text/plain; charset=US-ASCII X-MTK: N Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org For add new hardware, not only need to lock lat hardware, also need to lock core hardware in case of different instance start to decoder at the same time. Signed-off-by: Yunfei Dong --- drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c | 4 ++-- drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c | 6 +++--- drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h | 2 +- 3 files changed, 6 insertions(+), 6 deletions(-) diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c index 2b334a8a81c6..130ecef2e766 100644 --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec.c @@ -105,12 +105,12 @@ static int vidioc_decoder_cmd(struct file *file, void *priv, void mtk_vdec_unlock(struct mtk_vcodec_ctx *ctx) { - mutex_unlock(&ctx->dev->dec_mutex); + mutex_unlock(&ctx->dev->dec_mutex[ctx->hw_id]); } void mtk_vdec_lock(struct mtk_vcodec_ctx *ctx) { - mutex_lock(&ctx->dev->dec_mutex); + mutex_lock(&ctx->dev->dec_mutex[ctx->hw_id]); } void mtk_vcodec_dec_release(struct mtk_vcodec_ctx *ctx) diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c index 3ea1e96e0ec0..e21e0c4bcd86 100644 --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_dec_drv.c @@ -332,7 +332,7 @@ static int mtk_vcodec_probe(struct platform_device *pdev) struct video_device *vfd_dec; phandle rproc_phandle; enum mtk_vcodec_fw_type fw_type; - int ret; + int i, ret; dev = devm_kzalloc(&pdev->dev, sizeof(*dev), GFP_KERNEL); if (!dev) @@ -364,8 +364,8 @@ static int mtk_vcodec_probe(struct platform_device *pdev) goto err_dec_pm; } - mutex_init(&dev->dec_mutex); - mutex_init(&dev->dev_mutex); + for (i = 0; i < MTK_VDEC_HW_MAX; i++) + mutex_init(&dev->dec_mutex[i]); spin_lock_init(&dev->irqlock); snprintf(dev->v4l2_dev.name, sizeof(dev->v4l2_dev.name), "%s", diff --git a/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h b/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h index 95c82cb4e568..9d072c082f73 100644 --- a/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h +++ b/drivers/media/platform/mtk-vcodec/mtk_vcodec_drv.h @@ -498,7 +498,7 @@ struct mtk_vcodec_dev { int dec_irq; int enc_irq; - struct mutex dec_mutex; + struct mutex dec_mutex[MTK_VDEC_HW_MAX]; struct mutex enc_mutex; struct mtk_vcodec_pm pm; -- 2.25.1