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 X-Spam-Level: X-Spam-Status: No, score=-9.8 required=3.0 tests=BAYES_00,DKIMWL_WL_HIGH, DKIM_SIGNED,DKIM_VALID,HEADER_FROM_DIFFERENT_DOMAINS,INCLUDES_PATCH, MAILING_LIST_MULTI,SIGNED_OFF_BY,SPF_HELO_NONE,SPF_PASS,URIBL_BLOCKED autolearn=unavailable autolearn_force=no version=3.4.0 Received: from mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id C8C2BC4363A for ; Tue, 27 Oct 2020 02:43:28 +0000 (UTC) Received: from merlin.infradead.org (merlin.infradead.org [205.233.59.134]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 68D1420872 for ; Tue, 27 Oct 2020 02:43:28 +0000 (UTC) Authentication-Results: mail.kernel.org; dkim=pass (2048-bit key) header.d=lists.infradead.org header.i=@lists.infradead.org header.b="CG0nmTtw"; dkim=fail reason="signature verification failed" (1024-bit key) header.d=chromium.org header.i=@chromium.org header.b="oBV6h+fG" DMARC-Filter: OpenDMARC Filter v1.3.2 mail.kernel.org 68D1420872 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=chromium.org Authentication-Results: mail.kernel.org; spf=none smtp.mailfrom=linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=merlin.20170209; h=Sender:Content-Transfer-Encoding: Content-Type:Cc:List-Subscribe:List-Help:List-Post:List-Archive: List-Unsubscribe:List-Id:To:Subject:Message-ID:Date:From:In-Reply-To: References:MIME-Version:Reply-To:Content-ID:Content-Description:Resent-Date: Resent-From:Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:List-Owner; bh=TTsWSlP//fJ14dHrqrTLbi9xoJOHx+ucK0TYSCHX8ZQ=; b=CG0nmTtwkVYcxC+p67ktYk7wG 6P5/FrWBcDLM0jg0Wd44FwlKPhSdgx7oqFYcDeN+es+3PQfg2oBH0DmIxXC5+ZIzG7yspBG91OUfc or6fe8t8S9/NNuPWNzMGUFENsz2qkWNnAuqBOwc9Or8xWpwE9o3MxaqQ4W3kSjCsx+ohhdxXB2nC9 wmamGcB4jMAFBc+tKApDhxaB1VCF9Ge6rw2oJZAy/JmjTnQ/cHRjmQpdNEuFC0j44HET5MPqcGlUK xLaQCpkco7puwoWDpwmFASzerNAnRdEJaohIqc8wdoWVi8VueU/ueOsqFRzWxxubsS4PyGWD1353F fNLczvU8A==; Received: from localhost ([::1] helo=merlin.infradead.org) by merlin.infradead.org with esmtp (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXEvR-0005Hf-Nu; Tue, 27 Oct 2020 02:41:29 +0000 Received: from mail-vs1-xe43.google.com ([2607:f8b0:4864:20::e43]) by merlin.infradead.org with esmtps (Exim 4.92.3 #3 (Red Hat Linux)) id 1kXEvO-0005Gh-Gb for linux-arm-kernel@lists.infradead.org; Tue, 27 Oct 2020 02:41:27 +0000 Received: by mail-vs1-xe43.google.com with SMTP id f4so53094vsk.7 for ; Mon, 26 Oct 2020 19:41:24 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=Bmk0UTS3x9Tp1HCmgDXGjH+YpS7EiLVNFjl9WtxBa50=; b=oBV6h+fG2Mxgvbs1jMZ3U+Dxxal0evBf3S3wH6YrlK/pFt5T+D1VlhP3XbltSFGRcA KzpitOQ+M8phttR+1pxWGAtS9qNRLYQT/6uK9ZbWQk29CBjo2W4v/iYMfh5Gl9P4GbZN AiiY05SllXB9izzEZiG8uONUBp2kiLuegya7I= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=Bmk0UTS3x9Tp1HCmgDXGjH+YpS7EiLVNFjl9WtxBa50=; b=lCSoc/kGFe2hmmIEfnXRPs7Wo0ES3m8PZG7OGVtFRAwB4RxpMxYtOkEe5LZrl37C4y pSf6TJs0N9dMAAdpBlNOM4lRC+DUzt1mpzErDiOJuWpiLm65w2TbM17LRDAJJl3R+ExE qLoHcJ6Mdjy8d9oyylnxCwcM0jo4dkKJILBGuMfi2uB1m8+fyBeo6v7EHNMwedoOAcGy o+CRwZgJFinz0bP1SvtB1uO2GWLhHaG/WOaWuTRTOMtqcJrmXDls1CvpN3/+wMa9QNi+ 5OET+v2+Dj304lsNXsud9ojhTQtnoUXyiziGboulTV+ozJp7K7vY9Ibg1LmBNrmq/5Yy 2XdQ== X-Gm-Message-State: AOAM531BkqpML5Qhtj/Iy7MUgU3fhvRLBk8ym/xNfhgctppyBPVRRO0O KmAweiTdR0pJnISyTH/6iAIMCZ8UxqUUM81jScjaWg== X-Google-Smtp-Source: ABdhPJx2W7iE7ZtLv3PQAdx32ue6WAArJMZ6rjaKeAAEEdusvUyHsnHXrL0Eekr9cHR06NHe8++RceLGNh3DACqb/8k= X-Received: by 2002:a67:15c6:: with SMTP id 189mr6110vsv.16.1603766483061; Mon, 26 Oct 2020 19:41:23 -0700 (PDT) MIME-Version: 1.0 References: <20201026175526.2915399-1-enric.balletbo@collabora.com> <20201026175526.2915399-6-enric.balletbo@collabora.com> In-Reply-To: <20201026175526.2915399-6-enric.balletbo@collabora.com> From: Nicolas Boichat Date: Tue, 27 Oct 2020 10:41:12 +0800 Message-ID: Subject: Re: [PATCH v3 05/16] soc: mediatek: pm_domains: Make bus protection generic To: Enric Balletbo i Serra X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20201026_224126_645433_8506AC39 X-CRM114-Status: GOOD ( 25.87 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Matthias Brugger , Weiyi Lu , lkml , Fabien Parent , Miles Chen , Joerg Roedel , "moderated list:ARM/Mediatek SoC support" , Hsin-Yi Wang , Matthias Brugger , Collabora Kernel ML , linux-arm Mailing List 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, Oct 27, 2020 at 1:55 AM Enric Balletbo i Serra wrote: > > From: Matthias Brugger > > Bus protection is not exclusively done by calling the infracfg misc driver. > Make the calls for setting and clearing the bus protection generic so > that we can use other blocks for it as well. > > Signed-off-by: Matthias Brugger > Signed-off-by: Enric Balletbo i Serra > --- > > Changes in v3: None > Changes in v2: None > > drivers/soc/mediatek/mtk-infracfg.c | 5 --- > drivers/soc/mediatek/mtk-pm-domains.c | 53 +++++++++++++++++++++------ > include/linux/soc/mediatek/infracfg.h | 5 +++ > 3 files changed, 47 insertions(+), 16 deletions(-) > > diff --git a/drivers/soc/mediatek/mtk-infracfg.c b/drivers/soc/mediatek/mtk-infracfg.c > index 4a123796aad3..0590b68e0d78 100644 > --- a/drivers/soc/mediatek/mtk-infracfg.c > +++ b/drivers/soc/mediatek/mtk-infracfg.c > @@ -12,11 +12,6 @@ > #define MTK_POLL_DELAY_US 10 > #define MTK_POLL_TIMEOUT (jiffies_to_usecs(HZ)) > > -#define INFRA_TOPAXI_PROTECTEN 0x0220 > -#define INFRA_TOPAXI_PROTECTSTA1 0x0228 > -#define INFRA_TOPAXI_PROTECTEN_SET 0x0260 > -#define INFRA_TOPAXI_PROTECTEN_CLR 0x0264 > - > /** > * mtk_infracfg_set_bus_protection - enable bus protection > * @infracfg: The infracfg regmap > diff --git a/drivers/soc/mediatek/mtk-pm-domains.c b/drivers/soc/mediatek/mtk-pm-domains.c > index 2121e05cb9a4..92c61e59255b 100644 > --- a/drivers/soc/mediatek/mtk-pm-domains.c > +++ b/drivers/soc/mediatek/mtk-pm-domains.c > @@ -87,18 +87,24 @@ static int scpsys_sram_disable(struct scpsys_domain *pd) > MTK_POLL_TIMEOUT); > } > > -static int scpsys_bus_protect_enable(struct scpsys_domain *pd) > +static int _scpsys_bus_protect_enable(const struct scpsys_bus_prot_data *bpd, struct regmap *regmap) > { > - const struct scpsys_bus_prot_data *bpd = pd->data->bp_infracfg; > int i, ret; > > for (i = 0; i < SPM_MAX_BUS_PROT_DATA; i++) { > - if (!bpd[i].bus_prot_mask) > + u32 val, mask = bpd[i].bus_prot_mask; > + > + if (!mask) > break; > > - ret = mtk_infracfg_set_bus_protection(pd->infracfg, > - bpd[i].bus_prot_mask, > - bpd[i].bus_prot_reg_update); > + if (bpd[i].bus_prot_reg_update) > + regmap_update_bits(regmap, INFRA_TOPAXI_PROTECTEN, mask, mask); > + else > + regmap_write(regmap, INFRA_TOPAXI_PROTECTEN_SET, mask); > + > + ret = regmap_read_poll_timeout(regmap, INFRA_TOPAXI_PROTECTSTA1, > + val, (val & mask) == mask, > + MTK_POLL_DELAY_US, MTK_POLL_TIMEOUT); > if (ret) > return ret; > } > @@ -106,18 +112,34 @@ static int scpsys_bus_protect_enable(struct scpsys_domain *pd) > return 0; > } > > -static int scpsys_bus_protect_disable(struct scpsys_domain *pd) > +static int scpsys_bus_protect_enable(struct scpsys_domain *pd) > { > const struct scpsys_bus_prot_data *bpd = pd->data->bp_infracfg; > + int ret; > + > + ret = _scpsys_bus_protect_enable(bpd, pd->infracfg); > + return ret; > +} > + > +static int _scpsys_bus_protect_disable(const struct scpsys_bus_prot_data *bpd, > + struct regmap *regmap) > +{ > int i, ret; > > for (i = 0; i < SPM_MAX_BUS_PROT_DATA; i++) { > - if (!bpd[i].bus_prot_mask) > + u32 val, mask = bpd[i].bus_prot_mask; > + > + if (!mask) > return 0; > > - ret = mtk_infracfg_clear_bus_protection(pd->infracfg, > - bpd[i].bus_prot_mask, > - bpd[i].bus_prot_reg_update); > + if (bpd[i].bus_prot_reg_update) > + regmap_update_bits(regmap, INFRA_TOPAXI_PROTECTEN, mask, 0); > + else > + regmap_write(regmap, INFRA_TOPAXI_PROTECTEN_CLR, mask); > + > + ret = regmap_read_poll_timeout(regmap, INFRA_TOPAXI_PROTECTSTA1, > + val, !(val & mask), > + MTK_POLL_DELAY_US, MTK_POLL_TIMEOUT); > if (ret) > return ret; > } > @@ -125,6 +147,15 @@ static int scpsys_bus_protect_disable(struct scpsys_domain *pd) > return 0; > } > > +static int scpsys_bus_protect_disable(struct scpsys_domain *pd) > +{ > + const struct scpsys_bus_prot_data *bpd = pd->data->bp_infracfg; More of a nit: The next patch gets rid of this line, so maybe you don't need to add it here. Also `int ret` isn't really needed, but I think that's ok since the next CL needs to add another call. > + int ret; > + > + ret = _scpsys_bus_protect_disable(bpd, pd->infracfg); > + return ret; > +} > + > static int scpsys_power_on(struct generic_pm_domain *genpd) > { > struct scpsys_domain *pd = container_of(genpd, struct scpsys_domain, genpd); > diff --git a/include/linux/soc/mediatek/infracfg.h b/include/linux/soc/mediatek/infracfg.h > index 233463d789c6..5bcaab767f6a 100644 > --- a/include/linux/soc/mediatek/infracfg.h > +++ b/include/linux/soc/mediatek/infracfg.h > @@ -32,6 +32,11 @@ > #define MT7622_TOP_AXI_PROT_EN_WB (BIT(2) | BIT(6) | \ > BIT(7) | BIT(8)) > > +#define INFRA_TOPAXI_PROTECTEN 0x0220 > +#define INFRA_TOPAXI_PROTECTSTA1 0x0228 > +#define INFRA_TOPAXI_PROTECTEN_SET 0x0260 > +#define INFRA_TOPAXI_PROTECTEN_CLR 0x0264 > + > #define REG_INFRA_MISC 0xf00 > #define F_DDR_4GB_SUPPORT_EN BIT(13) > > -- > 2.28.0 > _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel