From: Russell King - ARM Linux <linux@armlinux.org.uk>
To: Anson Huang <Anson.Huang@nxp.com>
Cc: mark.rutland@arm.com, devicetree@vger.kernel.org,
linux-kernel@vger.kernel.org, robh+dt@kernel.org,
kernel@pengutronix.de, fabio.estevam@nxp.com,
shawnguo@kernel.org, linux-arm-kernel@lists.infradead.org
Subject: Re: [PATCH 2/3] ARM: imx: add gpcv2 support
Date: Fri, 26 Aug 2016 12:17:58 +0100 [thread overview]
Message-ID: <20160826111758.GN1041@n2100.armlinux.org.uk> (raw)
In-Reply-To: <1472209971-32469-3-git-send-email-Anson.Huang@nxp.com>
On Fri, Aug 26, 2016 at 07:12:50PM +0800, Anson Huang wrote:
> diff --git a/arch/arm/mach-imx/gpcv2.c b/arch/arm/mach-imx/gpcv2.c
> new file mode 100644
> index 0000000..98577c4
> --- /dev/null
> +++ b/arch/arm/mach-imx/gpcv2.c
> @@ -0,0 +1,66 @@
> +/*
> + * Copyright 2016 Freescale Semiconductor, Inc.
> + *
> + * The code contained herein is licensed under the GNU General Public
> + * License. You may obtain a copy of the GNU General Public License
> + * Version 2 or later at the following locations:
> + *
> + * http://www.opensource.org/licenses/gpl-license.html
> + * http://www.gnu.org/copyleft/gpl.html
> + */
> +
> +#include <linux/clk.h>
> +#include <linux/delay.h>
> +#include <linux/io.h>
> +#include <linux/of.h>
> +#include <linux/of_address.h>
> +
> +#include "common.h"
> +
> +#define GPC_CPU_PGC_SW_PUP_REQ 0xf0
> +#define GPC_CPU_PGC_SW_PDN_REQ 0xfc
> +#define GPC_PGC_C1 0x840
> +
> +#define BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7 0x2
> +#define BM_GPC_PGC_PCG 0x1
> +
> +static void __iomem *gpcv2_base;
> +
> +static void imx_gpcv2_set_m_core_pgc(bool enable, u32 offset)
> +{
> + u32 val = readl_relaxed(gpcv2_base + offset) & (~BM_GPC_PGC_PCG);
Unnecessary parens, and the code doesn't flow with the bit clearance
here...
> +
> + if (enable)
> + val |= BM_GPC_PGC_PCG;
My first read of this lead me to think "okay, so what's the point of
enable=false". It would be clearer with:
u32 val = readl_relaxed(gpcv2_base + offset);
if (enable)
val |= BM_GPC_PGC_PCG;
else
val &= ~BM_GPC_PGC_PCG;
here.
> +
> + writel_relaxed(val, gpcv2_base + offset);
> +}
> +
> +void imx_gpcv2_set_core1_pdn_pup_by_software(bool pdn)
> +{
> + u32 val = readl_relaxed(gpcv2_base + (pdn ?
> + GPC_CPU_PGC_SW_PDN_REQ : GPC_CPU_PGC_SW_PUP_REQ));
> +
> + imx_gpcv2_set_m_core_pgc(true, GPC_PGC_C1);
> + val |= BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7;
> + writel_relaxed(val, gpcv2_base + (pdn ?
> + GPC_CPU_PGC_SW_PDN_REQ : GPC_CPU_PGC_SW_PUP_REQ));
> +
> + while ((readl_relaxed(gpcv2_base + (pdn ?
> + GPC_CPU_PGC_SW_PDN_REQ : GPC_CPU_PGC_SW_PUP_REQ)) &
> + BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7) != 0)
> + ;
> + imx_gpcv2_set_m_core_pgc(false, GPC_PGC_C1);
> +}
> +
> +void __init imx_gpcv2_check_dt(void)
> +{
> + struct device_node *np;
> +
> + np = of_find_compatible_node(NULL, NULL, "fsl,imx7d-gpc");
> + if (WARN_ON(!np))
> + return;
> +
> + gpcv2_base = of_iomap(np, 0);
> + WARN_ON(!gpcv2_base);
What happens if gpcv2_base is NULL (apart from the obvious warning
from the above line)? I guess a bit later in the boot,
imx_gpcv2_set_core1_pdn_pup_by_software() oopses the kernel,
probably before the console has been initialised. Probably not
nice behaviour.
> +}
> --
> 1.9.1
>
--
RMK's Patch system: http://www.armlinux.org.uk/developer/patches/
FTTC broadband for 0.8mile line: currently at 9.6Mbps down 400kbps up
according to speedtest.net.
next prev parent reply other threads:[~2016-08-26 11:17 UTC|newest]
Thread overview: 15+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-08-26 11:12 [PATCH 0/3] Add SMP support for i.MX7D Anson Huang
2016-08-26 11:12 ` [PATCH 1/3] ARM: dts: imx7: support SMP boot up Anson Huang
2016-08-26 11:12 ` [PATCH 2/3] ARM: imx: add gpcv2 support Anson Huang
2016-08-26 11:17 ` Russell King - ARM Linux [this message]
[not found] ` <20160826111758.GN1041-l+eeeJia6m9URfEZ8mYm6t73F7V6hmMc@public.gmane.org>
2016-08-26 12:25 ` Yongcai Huang
2016-08-26 11:12 ` [PATCH 3/3] ARM: imx: add SMP support for i.MX7D Anson Huang
[not found] ` <1472209971-32469-4-git-send-email-Anson.Huang-3arQi8VN3Tc@public.gmane.org>
2016-08-26 8:59 ` Arnd Bergmann
2016-08-26 10:28 ` Yongcai Huang
2016-08-26 11:13 ` Russell King - ARM Linux
2016-08-26 12:20 ` Yongcai Huang
[not found] ` <AM3PR04MB13154FA0116D397AABD75E10F5EC0-f56W/S9L6NR9w2ZlgAudoc9NdZoXdze2vxpqHgZTriW3zl9H0oFU5g@public.gmane.org>
2016-08-26 12:35 ` Russell King - ARM Linux
2016-08-26 13:48 ` Arnd Bergmann
2016-08-26 13:00 ` kbuild test robot
[not found] ` <1472209971-32469-1-git-send-email-Anson.Huang-3arQi8VN3Tc@public.gmane.org>
2016-08-26 12:43 ` [PATCH 0/3] Add " Fabio Estevam
2016-08-26 13:02 ` Yongcai Huang
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160826111758.GN1041@n2100.armlinux.org.uk \
--to=linux@armlinux.org.uk \
--cc=Anson.Huang@nxp.com \
--cc=devicetree@vger.kernel.org \
--cc=fabio.estevam@nxp.com \
--cc=kernel@pengutronix.de \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=mark.rutland@arm.com \
--cc=robh+dt@kernel.org \
--cc=shawnguo@kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).