From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 1B597C433EF for ; Thu, 20 Jan 2022 17:23:52 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1377329AbiATRXt (ORCPT ); Thu, 20 Jan 2022 12:23:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44478 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1377331AbiATRXs (ORCPT ); Thu, 20 Jan 2022 12:23:48 -0500 Received: from mail-pl1-x62b.google.com (mail-pl1-x62b.google.com [IPv6:2607:f8b0:4864:20::62b]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 9F567C06161C for ; Thu, 20 Jan 2022 09:23:47 -0800 (PST) Received: by mail-pl1-x62b.google.com with SMTP id l7so2870945pls.6 for ; Thu, 20 Jan 2022 09:23:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=57MlWgTciyxXwlhqlF3nVQS9i7uH1Dz0RfKk3iP2XAw=; b=fIlwDTmIcIU6AGBGW573iDAcwDD1t0MyZPs0tsVV3oAwgz439OBuIOzcFqvWVdpxDK zVwuRWDBsD3Hj99e1DzG/p8ov+gBXjIbV2N5+yXDiPd0dFp8CwPQ7N3/VbQjhdWt+wzR 3eU8YcKKVktcwXCRaEfp7zta8VGkSXvN26O8Nvl0Y5aDLMOsh9ood7Lh8uZOzldDJ54c zGkWEkXGMx1Yz9JiErx/nmohmDgGnPQUpryyIhKhi4/cCvDJThBOorqf10PYf/JwgiM+ 9TEONCHRYLpc65FIUps7nnyj6hhOmLb6b1xyNbNEsyNM7/KsBCRZ1cTkIVxq1oaUe6uk SdGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=57MlWgTciyxXwlhqlF3nVQS9i7uH1Dz0RfKk3iP2XAw=; b=mtUhZ66gUM4UdiSbKRNghvTPzAXSfcGt+DJTBKwaig61DfC9GwejTpftt4YEoS7myW YH1mhrj6FlifSBSxwBBkOCJEn+d1xoKWUaAs0xBhIaVzMEHOuQmruOCD0tuh5NVzWS9d ZHdG3o2XyqCZDM3VkW0JE+60zEXiIHgF8cqywAKFZ3BFLWISoWAJkDEhb1Re6JK3YBfD fPX2Adoc5w1EzF5sJIdbicQTS/AjSesLlnhof8T58rSkkcR472z2hiPq458oB05xkwqH 3GRw8o3D3KxGHzk2j2VDuTU+FkXH5QhJwy3xMhYaRFM2Kz48BO/L1sTQpcs8eaSBCdQ+ ek5w== X-Gm-Message-State: AOAM531pyu1euvVufS+CpQq1UJkCVf76Vj5RYLGbYeYZ7U73PLV0jz2s rQP3kmPuWeHt4T0Tznu3szZqjQ== X-Google-Smtp-Source: ABdhPJwsKxXKcx7FolSUNG7zSGPWZFQs5W4Redl5G4sTK5OO76GZwZNbj86yHMbHr+IlQ75YdhmTOA== X-Received: by 2002:a17:90b:4c0e:: with SMTP id na14mr12192436pjb.84.1642699427041; Thu, 20 Jan 2022 09:23:47 -0800 (PST) Received: from p14s (S0106889e681aac74.cg.shawcable.net. [68.147.0.187]) by smtp.gmail.com with ESMTPSA id t23sm2935750pgg.30.2022.01.20.09.23.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jan 2022 09:23:45 -0800 (PST) Date: Thu, 20 Jan 2022 10:23:43 -0700 From: Mathieu Poirier To: "Peng Fan (OSS)" Cc: bjorn.andersson@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, linux-remoteproc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan Subject: Re: [PATCH 8/9] remoteproc: imx_rproc: support i.MX8QM Message-ID: <20220120172343.GA1338735@p14s> References: <20220111033333.403448-1-peng.fan@oss.nxp.com> <20220111033333.403448-11-peng.fan@oss.nxp.com> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <20220111033333.403448-11-peng.fan@oss.nxp.com> Precedence: bulk List-ID: X-Mailing-List: linux-remoteproc@vger.kernel.org On Tue, Jan 11, 2022 at 11:33:32AM +0800, Peng Fan (OSS) wrote: > From: Peng Fan > > Most logic are same as i.MX8QXP, but i.MX8QM has two general purpose > M4 cores: > Use the lower 16 bits specifying core, higher 16 bits for flags. > The 2nd core has different start address from SCFW view Are the cores running independently or in lockstep? This is relevant information that should be in the changelog. The above is an implementation detail that should be added as comments in the code. > > Signed-off-by: Peng Fan > --- > drivers/remoteproc/imx_rproc.c | 55 +++++++++++++++++++++++++++++++--- > 1 file changed, 51 insertions(+), 4 deletions(-) > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > index 09d2a06e5ed6..7bc274fbce9f 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -77,8 +77,11 @@ struct imx_rproc_mem { > > /* att flags */ > /* M4 own area. Can be mapped at probe */ > -#define ATT_OWN BIT(1) > -#define ATT_IOMEM BIT(2) > +#define ATT_OWN BIT(31) > +#define ATT_IOMEM BIT(30) ATT_OWN was defined in 2017 and has had the same value since. ATT_IOMEM was introduced by this commit [1] (that you signed off on), which as supposed to be a fix for another commit. Now, overnight, both bitfields are changed without any explanation other than a cryptic comments. What about all the other platforms that previously used those bitfields - was this change tested on those as well? I will stop here with this patchset - it needs to much work for me to continue reviewing it. Thanks, Mathieu [1]. 91bb26637353 remoteproc: imx_rproc: Fix TCM io memory type > +/* I = [0:7] */ > +#define ATT_CORE_MASK 0xffff > +#define ATT_CORE(I) BIT((I)) > > struct imx_rproc { > struct device *dev; > @@ -98,11 +101,25 @@ struct imx_rproc { > struct notifier_block proc_nb; > u32 rproc_pt; > u32 rsrc; > + u32 reg; > int num_pd; > struct device **pd_dev; > struct device_link **pd_dev_link; > }; > > +static const struct imx_rproc_att imx_rproc_att_imx8qm[] = { > + /* dev addr , sys addr , size , flags */ > + { 0x08000000, 0x08000000, 0x10000000, 0}, > + /* TCML */ > + { 0x1FFE0000, 0x34FE0000, 0x00020000, ATT_OWN | ATT_CORE(0)}, > + { 0x1FFE0000, 0x38FE0000, 0x00020000, ATT_OWN | ATT_CORE(1)}, > + /* TCMU */ > + { 0x20000000, 0x35000000, 0x00020000, ATT_OWN | ATT_CORE(0)}, > + { 0x20000000, 0x39000000, 0x00020000, ATT_OWN | ATT_CORE(1)}, > + /* DDR (Data) */ > + { 0x80000000, 0x80000000, 0x60000000, 0 }, > +}; > + > static const struct imx_rproc_att imx_rproc_att_imx8qxp[] = { > /* dev addr , sys addr , size , flags */ > { 0x08000000, 0x08000000, 0x10000000, 0}, > @@ -260,6 +277,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8ulp = { > .method = IMX_RPROC_NONE, > }; > > +static const struct imx_rproc_dcfg imx_rproc_cfg_imx8qm = { > + .att = imx_rproc_att_imx8qm, > + .att_size = ARRAY_SIZE(imx_rproc_att_imx8qm), > + .method = IMX_RPROC_SCU_API, > +}; > + > static const struct imx_rproc_dcfg imx_rproc_cfg_imx8qxp = { > .att = imx_rproc_att_imx8qxp, > .att_size = ARRAY_SIZE(imx_rproc_att_imx8qxp), > @@ -310,7 +333,10 @@ static int imx_rproc_start(struct rproc *rproc) > ret = res.a0; > break; > case IMX_RPROC_SCU_API: > - ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, true, 0x34fe0000); > + if (priv->reg) > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, true, 0x38fe0000); > + else > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, true, 0x34fe0000); > break; > default: > return -EOPNOTSUPP; > @@ -342,7 +368,10 @@ static int imx_rproc_stop(struct rproc *rproc) > dev_info(dev, "Not in wfi, force stopped\n"); > break; > case IMX_RPROC_SCU_API: > - ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, false, 0x34fe0000); > + if (priv->reg) > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, false, 0x38fe0000); > + else > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, false, 0x34fe0000); > break; > default: > return -EOPNOTSUPP; > @@ -364,6 +393,11 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, > for (i = 0; i < dcfg->att_size; i++) { > const struct imx_rproc_att *att = &dcfg->att[i]; > > + if (att->flags & ATT_CORE_MASK) { > + if (!((BIT(priv->reg)) & (att->flags & ATT_CORE_MASK))) > + continue; > + } > + > if (da >= att->da && da + len < att->da + att->size) { > unsigned int offset = da - att->da; > > @@ -594,6 +628,11 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > if (!(att->flags & ATT_OWN)) > continue; > > + if (att->flags & ATT_CORE_MASK) { > + if (!((BIT(priv->reg)) & (att->flags & ATT_CORE_MASK))) > + continue; > + } > + > if (b >= IMX_RPROC_MEM_MAX) > break; > > @@ -809,6 +848,13 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv) > return ret; > } > > + priv->reg = of_get_cpu_hwid(dev->of_node, 0); > + if (priv->reg == ~0U) > + priv->reg = 0; > + > + if (priv->reg > 1) > + return -EINVAL; > + > priv->has_clk = false; > /* > * If Mcore resource is not owned by Acore partition, It is kicked by ROM, > @@ -1005,6 +1051,7 @@ static const struct of_device_id imx_rproc_of_match[] = { > { .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn }, > { .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn }, > { .compatible = "fsl,imx8qxp-cm4", .data = &imx_rproc_cfg_imx8qxp }, > + { .compatible = "fsl,imx8qm-cm4", .data = &imx_rproc_cfg_imx8qm }, > { .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp }, > {}, > }; > -- > 2.25.1 > From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 9D793C433EF for ; Thu, 20 Jan 2022 17:25:12 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:In-Reply-To:MIME-Version:References: Message-ID:Subject:Cc:To:From:Date:Reply-To:Content-ID:Content-Description: Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID: List-Owner; bh=MFzeIwPgASycAJ51gMg27cEkrTsLDKc132FPEehwmVU=; b=d9gml+TaiF4cdz keBTzUeKCA7JPh3bdRn1GC2wyeiYlbCZY4g8IrcFbkQbdndjh+t0qy5ZZJSbVADT8XbNzTYrJjKp0 QGSvkgPHuuyaIb/5zbf/G1oscRIhaCfh7QD95AEJ+s5Z3iAEbsHE7tTAVAqvo7xIeR5qnFBvuKT7/ +fl79SKZGYOspmi4hREn3MAwfACxV+CVCmtQ1Zm/+J1bKxK/wWfU8H6s1OzOtngl2XMy0sDVrUTml /GwAWzic2/PkrfHyCZcV+T3/aAATlcBw8rwKdfhgGduYZgkQiGxBZkOh/u0X8du7rV1BicyLhdvWS oKQbu/uNrkLv9pVvcaGA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nAbAF-00CYhy-Rm; Thu, 20 Jan 2022 17:24:00 +0000 Received: from mail-pl1-x62c.google.com ([2607:f8b0:4864:20::62c]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nAbA4-00CYfT-AE for linux-arm-kernel@lists.infradead.org; Thu, 20 Jan 2022 17:23:49 +0000 Received: by mail-pl1-x62c.google.com with SMTP id n8so5722938plc.3 for ; Thu, 20 Jan 2022 09:23:47 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; h=date:from:to:cc:subject:message-id:references:mime-version :content-disposition:in-reply-to; bh=57MlWgTciyxXwlhqlF3nVQS9i7uH1Dz0RfKk3iP2XAw=; b=fIlwDTmIcIU6AGBGW573iDAcwDD1t0MyZPs0tsVV3oAwgz439OBuIOzcFqvWVdpxDK zVwuRWDBsD3Hj99e1DzG/p8ov+gBXjIbV2N5+yXDiPd0dFp8CwPQ7N3/VbQjhdWt+wzR 3eU8YcKKVktcwXCRaEfp7zta8VGkSXvN26O8Nvl0Y5aDLMOsh9ood7Lh8uZOzldDJ54c zGkWEkXGMx1Yz9JiErx/nmohmDgGnPQUpryyIhKhi4/cCvDJThBOorqf10PYf/JwgiM+ 9TEONCHRYLpc65FIUps7nnyj6hhOmLb6b1xyNbNEsyNM7/KsBCRZ1cTkIVxq1oaUe6uk SdGA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:date:from:to:cc:subject:message-id:references :mime-version:content-disposition:in-reply-to; bh=57MlWgTciyxXwlhqlF3nVQS9i7uH1Dz0RfKk3iP2XAw=; b=g/AK2pZo63IWNFItTiIMpMhpTuaLkdBhEOVxSrnf5jqxyBd8AQ2iKnO9JPKJPAqVqh rjI0K+26P9LFqvj6KkV8SBNOMVpYemEQ2MsbDJ18SBdEG33X18K+XvnYWOw2mvtPUE2u pIG174N9aQTuIhzdmwzS3EdzC4ze7hGHdTblbJiwNkN4rIIE1gdSc4NJ6Ob0OZIrpFzE +I+JlX/WK0ZgCI4bGtGi8BNlN+r0ESDR5Gbu6LPQA328aBLqzzgaWMnXlLDF0oxj1s9b LZVGg+I67WRBeeR0HRCcpVFt1Gpi7eCZBJhB+GZMgVrv937q9bDjp9wT7yoXxGx9JFSl 5MPw== X-Gm-Message-State: AOAM531MiSJTx6zEOQL7lXFXUnQtbZdSDlA6I2Pd4K8ufVGga3PclrjJ iK2ljEkSriH3/WbujwK5gS2rng== X-Google-Smtp-Source: ABdhPJwsKxXKcx7FolSUNG7zSGPWZFQs5W4Redl5G4sTK5OO76GZwZNbj86yHMbHr+IlQ75YdhmTOA== X-Received: by 2002:a17:90b:4c0e:: with SMTP id na14mr12192436pjb.84.1642699427041; Thu, 20 Jan 2022 09:23:47 -0800 (PST) Received: from p14s (S0106889e681aac74.cg.shawcable.net. [68.147.0.187]) by smtp.gmail.com with ESMTPSA id t23sm2935750pgg.30.2022.01.20.09.23.44 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 20 Jan 2022 09:23:45 -0800 (PST) Date: Thu, 20 Jan 2022 10:23:43 -0700 From: Mathieu Poirier To: "Peng Fan (OSS)" Cc: bjorn.andersson@linaro.org, shawnguo@kernel.org, s.hauer@pengutronix.de, kernel@pengutronix.de, festevam@gmail.com, linux-imx@nxp.com, linux-remoteproc@vger.kernel.org, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Peng Fan Subject: Re: [PATCH 8/9] remoteproc: imx_rproc: support i.MX8QM Message-ID: <20220120172343.GA1338735@p14s> References: <20220111033333.403448-1-peng.fan@oss.nxp.com> <20220111033333.403448-11-peng.fan@oss.nxp.com> MIME-Version: 1.0 Content-Disposition: inline In-Reply-To: <20220111033333.403448-11-peng.fan@oss.nxp.com> X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220120_092348_398390_1A88B758 X-CRM114-Status: GOOD ( 30.95 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org On Tue, Jan 11, 2022 at 11:33:32AM +0800, Peng Fan (OSS) wrote: > From: Peng Fan > > Most logic are same as i.MX8QXP, but i.MX8QM has two general purpose > M4 cores: > Use the lower 16 bits specifying core, higher 16 bits for flags. > The 2nd core has different start address from SCFW view Are the cores running independently or in lockstep? This is relevant information that should be in the changelog. The above is an implementation detail that should be added as comments in the code. > > Signed-off-by: Peng Fan > --- > drivers/remoteproc/imx_rproc.c | 55 +++++++++++++++++++++++++++++++--- > 1 file changed, 51 insertions(+), 4 deletions(-) > > diff --git a/drivers/remoteproc/imx_rproc.c b/drivers/remoteproc/imx_rproc.c > index 09d2a06e5ed6..7bc274fbce9f 100644 > --- a/drivers/remoteproc/imx_rproc.c > +++ b/drivers/remoteproc/imx_rproc.c > @@ -77,8 +77,11 @@ struct imx_rproc_mem { > > /* att flags */ > /* M4 own area. Can be mapped at probe */ > -#define ATT_OWN BIT(1) > -#define ATT_IOMEM BIT(2) > +#define ATT_OWN BIT(31) > +#define ATT_IOMEM BIT(30) ATT_OWN was defined in 2017 and has had the same value since. ATT_IOMEM was introduced by this commit [1] (that you signed off on), which as supposed to be a fix for another commit. Now, overnight, both bitfields are changed without any explanation other than a cryptic comments. What about all the other platforms that previously used those bitfields - was this change tested on those as well? I will stop here with this patchset - it needs to much work for me to continue reviewing it. Thanks, Mathieu [1]. 91bb26637353 remoteproc: imx_rproc: Fix TCM io memory type > +/* I = [0:7] */ > +#define ATT_CORE_MASK 0xffff > +#define ATT_CORE(I) BIT((I)) > > struct imx_rproc { > struct device *dev; > @@ -98,11 +101,25 @@ struct imx_rproc { > struct notifier_block proc_nb; > u32 rproc_pt; > u32 rsrc; > + u32 reg; > int num_pd; > struct device **pd_dev; > struct device_link **pd_dev_link; > }; > > +static const struct imx_rproc_att imx_rproc_att_imx8qm[] = { > + /* dev addr , sys addr , size , flags */ > + { 0x08000000, 0x08000000, 0x10000000, 0}, > + /* TCML */ > + { 0x1FFE0000, 0x34FE0000, 0x00020000, ATT_OWN | ATT_CORE(0)}, > + { 0x1FFE0000, 0x38FE0000, 0x00020000, ATT_OWN | ATT_CORE(1)}, > + /* TCMU */ > + { 0x20000000, 0x35000000, 0x00020000, ATT_OWN | ATT_CORE(0)}, > + { 0x20000000, 0x39000000, 0x00020000, ATT_OWN | ATT_CORE(1)}, > + /* DDR (Data) */ > + { 0x80000000, 0x80000000, 0x60000000, 0 }, > +}; > + > static const struct imx_rproc_att imx_rproc_att_imx8qxp[] = { > /* dev addr , sys addr , size , flags */ > { 0x08000000, 0x08000000, 0x10000000, 0}, > @@ -260,6 +277,12 @@ static const struct imx_rproc_dcfg imx_rproc_cfg_imx8ulp = { > .method = IMX_RPROC_NONE, > }; > > +static const struct imx_rproc_dcfg imx_rproc_cfg_imx8qm = { > + .att = imx_rproc_att_imx8qm, > + .att_size = ARRAY_SIZE(imx_rproc_att_imx8qm), > + .method = IMX_RPROC_SCU_API, > +}; > + > static const struct imx_rproc_dcfg imx_rproc_cfg_imx8qxp = { > .att = imx_rproc_att_imx8qxp, > .att_size = ARRAY_SIZE(imx_rproc_att_imx8qxp), > @@ -310,7 +333,10 @@ static int imx_rproc_start(struct rproc *rproc) > ret = res.a0; > break; > case IMX_RPROC_SCU_API: > - ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, true, 0x34fe0000); > + if (priv->reg) > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, true, 0x38fe0000); > + else > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, true, 0x34fe0000); > break; > default: > return -EOPNOTSUPP; > @@ -342,7 +368,10 @@ static int imx_rproc_stop(struct rproc *rproc) > dev_info(dev, "Not in wfi, force stopped\n"); > break; > case IMX_RPROC_SCU_API: > - ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, false, 0x34fe0000); > + if (priv->reg) > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, false, 0x38fe0000); > + else > + ret = imx_sc_pm_cpu_start(priv->ipc_handle, priv->rsrc, false, 0x34fe0000); > break; > default: > return -EOPNOTSUPP; > @@ -364,6 +393,11 @@ static int imx_rproc_da_to_sys(struct imx_rproc *priv, u64 da, > for (i = 0; i < dcfg->att_size; i++) { > const struct imx_rproc_att *att = &dcfg->att[i]; > > + if (att->flags & ATT_CORE_MASK) { > + if (!((BIT(priv->reg)) & (att->flags & ATT_CORE_MASK))) > + continue; > + } > + > if (da >= att->da && da + len < att->da + att->size) { > unsigned int offset = da - att->da; > > @@ -594,6 +628,11 @@ static int imx_rproc_addr_init(struct imx_rproc *priv, > if (!(att->flags & ATT_OWN)) > continue; > > + if (att->flags & ATT_CORE_MASK) { > + if (!((BIT(priv->reg)) & (att->flags & ATT_CORE_MASK))) > + continue; > + } > + > if (b >= IMX_RPROC_MEM_MAX) > break; > > @@ -809,6 +848,13 @@ static int imx_rproc_detect_mode(struct imx_rproc *priv) > return ret; > } > > + priv->reg = of_get_cpu_hwid(dev->of_node, 0); > + if (priv->reg == ~0U) > + priv->reg = 0; > + > + if (priv->reg > 1) > + return -EINVAL; > + > priv->has_clk = false; > /* > * If Mcore resource is not owned by Acore partition, It is kicked by ROM, > @@ -1005,6 +1051,7 @@ static const struct of_device_id imx_rproc_of_match[] = { > { .compatible = "fsl,imx8mn-cm7", .data = &imx_rproc_cfg_imx8mn }, > { .compatible = "fsl,imx8mp-cm7", .data = &imx_rproc_cfg_imx8mn }, > { .compatible = "fsl,imx8qxp-cm4", .data = &imx_rproc_cfg_imx8qxp }, > + { .compatible = "fsl,imx8qm-cm4", .data = &imx_rproc_cfg_imx8qm }, > { .compatible = "fsl,imx8ulp-cm33", .data = &imx_rproc_cfg_imx8ulp }, > {}, > }; > -- > 2.25.1 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel