All of lore.kernel.org
 help / color / mirror / Atom feed
From: jszhang@marvell.com (Jisheng Zhang)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU
Date: Mon, 14 Nov 2016 16:47:06 +0800	[thread overview]
Message-ID: <20161114164706.02545789@xhacker> (raw)
In-Reply-To: <20161114145459.63c23391@xhacker>

Hi Pankaj,

On Mon, 14 Nov 2016 14:54:59 +0800 Jisheng Zhang wrote:

> On Mon, 14 Nov 2016 14:12:51 +0800 Jisheng Zhang wrote:
> 
> > Hi Pankaj,
> > 
> > On Mon, 14 Nov 2016 10:31:56 +0530 Pankaj Dubey wrote:
> >   
> > > Many platforms are duplicating code for enabling SCU, lets add
> > > common code to enable SCU by parsing SCU device node so the duplication
> > > in each platform can be avoided.
> > > 
> > > CC: Krzysztof Kozlowski <krzk@kernel.org>
> > > CC: Jisheng Zhang <jszhang@marvell.com>
> > > CC: Russell King <linux@armlinux.org.uk>
> > > CC: Dinh Nguyen <dinguyen@opensource.altera.com>
> > > CC: Patrice Chotard <patrice.chotard@st.com>
> > > CC: Linus Walleij <linus.walleij@linaro.org>
> > > CC: Liviu Dudau <liviu.dudau@arm.com>
> > > CC: Ray Jui <rjui@broadcom.com>
> > > CC: Stephen Warren <swarren@wwwdotorg.org>
> > > CC: Heiko Stuebner <heiko@sntech.de>
> > > CC: Shawn Guo <shawnguo@kernel.org>
> > > CC: Michal Simek <michal.simek@xilinx.com>
> > > CC: Wei Xu <xuwei5@hisilicon.com>
> > > CC: Andrew Lunn <andrew@lunn.ch>
> > > CC: Jun Nie <jun.nie@linaro.org> 
> > > Suggested-by: Arnd Bergmann <arnd@arndb.de>
> > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > > ---
> > >  arch/arm/include/asm/smp_scu.h |  4 +++
> > >  arch/arm/kernel/smp_scu.c      | 56 ++++++++++++++++++++++++++++++++++++++++++
> > >  2 files changed, 60 insertions(+)
> > > 
> > > diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h
> > > index bfe163c..fdeec07 100644
> > > --- a/arch/arm/include/asm/smp_scu.h
> > > +++ b/arch/arm/include/asm/smp_scu.h
> > > @@ -39,8 +39,12 @@ static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode)
> > >  
> > >  #if defined(CONFIG_SMP) && defined(CONFIG_HAVE_ARM_SCU)
> > >  void scu_enable(void __iomem *scu_base);
> > > +void __iomem *of_scu_get_base(void);
> > > +int of_scu_enable(void);
> > >  #else
> > >  static inline void scu_enable(void __iomem *scu_base) {}
> > > +static inline void __iomem *of_scu_get_base(void) {return NULL; }
> > > +static inline int of_scu_enable(void) {return 0; }
> > >  #endif
> > >  
> > >  #endif
> > > diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c
> > > index 72f9241..d0ac3ed 100644
> > > --- a/arch/arm/kernel/smp_scu.c
> > > +++ b/arch/arm/kernel/smp_scu.c
> > > @@ -10,6 +10,7 @@
> > >   */
> > >  #include <linux/init.h>
> > >  #include <linux/io.h>
> > > +#include <linux/of_address.h>
> > >  
> > >  #include <asm/smp_plat.h>
> > >  #include <asm/smp_scu.h>
> > > @@ -70,6 +71,61 @@ void scu_enable(void __iomem *scu_base)
> > >  	 */
> > >  	flush_cache_all();
> > >  }
> > > +
> > > +static const struct of_device_id scu_match[] = {
> > > +	{ .compatible = "arm,cortex-a9-scu", },
> > > +	{ .compatible = "arm,cortex-a5-scu", },
> > > +	{ }
> > > +};
> > > +
> > > +/*
> > > + * Helper API to get SCU base address
> > > + * In case platform DT do not have SCU node, or iomap fails
> > > + * this call will fallback and will try to map via call to
> > > + * scu_a9_get_base.
> > > + * This will return ownership of scu_base to the caller
> > > + */
> > > +void __iomem *of_scu_get_base(void)
> > > +{
> > > +	unsigned long base = 0;
> > > +	struct device_node *np;
> > > +	void __iomem *scu_base;
> > > +
> > > +	np = of_find_matching_node(NULL, scu_match);    
> > 
> > could we check np before calling of_iomap()?
> >   
> > > +	scu_base = of_iomap(np, 0);
> > > +	of_node_put(np);
> > > +	if (!scu_base) {
> > > +		pr_err("%s failed to map scu_base via DT\n", __func__);    
> > 
> > For non-ca5, non-ca9 based SoCs, we'll see this error msg. We understand
> > what does it mean, but it may confuse normal users. In current version,
> > berlin doesn't complain like this for non-ca9 SoCs  
> 
> oops, I just realized that the non-ca9 berlin arm SoC version isn't upstreamed.
> Below is the draft version I planed. Basically speaking, the code tries to
> find "arm,cortex-a9-scu" node from DT, if can't, we think we don't need to
> worry about SCU. Is there any elegant solution for my situation?

I just realized that (another realized :D) we uses PSCI enable method for
non-ca9 base SoCs, so "marvell,berlin-smp" enable method is only for the SoCs
which have CA9 compatible SCU. Sorry for the noise, your patch looks good to me.

WARNING: multiple messages have this Message-ID (diff)
From: Jisheng Zhang <jszhang@marvell.com>
To: Pankaj Dubey <pankaj.dubey@samsung.com>
Cc: Andrew Lunn <andrew@lunn.ch>, Heiko Stuebner <heiko@sntech.de>,
	<geert+renesas@glider.be>,
	Linus Walleij <linus.walleij@linaro.org>,
	"Liviu Dudau" <liviu.dudau@arm.com>,
	Patrice Chotard <patrice.chotard@st.com>, <krzk@kernel.org>,
	Russell King <linux@armlinux.org.uk>, <vireshk@kernel.org>,
	<magnus.damm@gmail.com>, Michal Simek <michal.simek@xilinx.com>,
	Wei Xu <xuwei5@hisilicon.com>, <thomas.ab@samsung.com>,
	<arnd@arndb.de>, Stephen Warren <swarren@wwwdotorg.org>,
	Ray Jui <rjui@broadcom.com>, <rmk+kernel@armlinux.org.uk>,
	<horms@verge.net.au>,
	Dinh Nguyen <dinguyen@opensource.altera.com>,
	<linux-arm-kernel@lists.infradead.org>,
	Shawn Guo <shawnguo@kernel.org>, <linux-kernel@vger.kernel.org>,
	Jun Nie <jun.nie@linaro.org>, <shiraz.linux.kernel@gmail.com>
Subject: Re: [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU
Date: Mon, 14 Nov 2016 16:47:06 +0800	[thread overview]
Message-ID: <20161114164706.02545789@xhacker> (raw)
In-Reply-To: <20161114145459.63c23391@xhacker>

Hi Pankaj,

On Mon, 14 Nov 2016 14:54:59 +0800 Jisheng Zhang wrote:

> On Mon, 14 Nov 2016 14:12:51 +0800 Jisheng Zhang wrote:
> 
> > Hi Pankaj,
> > 
> > On Mon, 14 Nov 2016 10:31:56 +0530 Pankaj Dubey wrote:
> >   
> > > Many platforms are duplicating code for enabling SCU, lets add
> > > common code to enable SCU by parsing SCU device node so the duplication
> > > in each platform can be avoided.
> > > 
> > > CC: Krzysztof Kozlowski <krzk@kernel.org>
> > > CC: Jisheng Zhang <jszhang@marvell.com>
> > > CC: Russell King <linux@armlinux.org.uk>
> > > CC: Dinh Nguyen <dinguyen@opensource.altera.com>
> > > CC: Patrice Chotard <patrice.chotard@st.com>
> > > CC: Linus Walleij <linus.walleij@linaro.org>
> > > CC: Liviu Dudau <liviu.dudau@arm.com>
> > > CC: Ray Jui <rjui@broadcom.com>
> > > CC: Stephen Warren <swarren@wwwdotorg.org>
> > > CC: Heiko Stuebner <heiko@sntech.de>
> > > CC: Shawn Guo <shawnguo@kernel.org>
> > > CC: Michal Simek <michal.simek@xilinx.com>
> > > CC: Wei Xu <xuwei5@hisilicon.com>
> > > CC: Andrew Lunn <andrew@lunn.ch>
> > > CC: Jun Nie <jun.nie@linaro.org> 
> > > Suggested-by: Arnd Bergmann <arnd@arndb.de>
> > > Signed-off-by: Pankaj Dubey <pankaj.dubey@samsung.com>
> > > ---
> > >  arch/arm/include/asm/smp_scu.h |  4 +++
> > >  arch/arm/kernel/smp_scu.c      | 56 ++++++++++++++++++++++++++++++++++++++++++
> > >  2 files changed, 60 insertions(+)
> > > 
> > > diff --git a/arch/arm/include/asm/smp_scu.h b/arch/arm/include/asm/smp_scu.h
> > > index bfe163c..fdeec07 100644
> > > --- a/arch/arm/include/asm/smp_scu.h
> > > +++ b/arch/arm/include/asm/smp_scu.h
> > > @@ -39,8 +39,12 @@ static inline int scu_power_mode(void __iomem *scu_base, unsigned int mode)
> > >  
> > >  #if defined(CONFIG_SMP) && defined(CONFIG_HAVE_ARM_SCU)
> > >  void scu_enable(void __iomem *scu_base);
> > > +void __iomem *of_scu_get_base(void);
> > > +int of_scu_enable(void);
> > >  #else
> > >  static inline void scu_enable(void __iomem *scu_base) {}
> > > +static inline void __iomem *of_scu_get_base(void) {return NULL; }
> > > +static inline int of_scu_enable(void) {return 0; }
> > >  #endif
> > >  
> > >  #endif
> > > diff --git a/arch/arm/kernel/smp_scu.c b/arch/arm/kernel/smp_scu.c
> > > index 72f9241..d0ac3ed 100644
> > > --- a/arch/arm/kernel/smp_scu.c
> > > +++ b/arch/arm/kernel/smp_scu.c
> > > @@ -10,6 +10,7 @@
> > >   */
> > >  #include <linux/init.h>
> > >  #include <linux/io.h>
> > > +#include <linux/of_address.h>
> > >  
> > >  #include <asm/smp_plat.h>
> > >  #include <asm/smp_scu.h>
> > > @@ -70,6 +71,61 @@ void scu_enable(void __iomem *scu_base)
> > >  	 */
> > >  	flush_cache_all();
> > >  }
> > > +
> > > +static const struct of_device_id scu_match[] = {
> > > +	{ .compatible = "arm,cortex-a9-scu", },
> > > +	{ .compatible = "arm,cortex-a5-scu", },
> > > +	{ }
> > > +};
> > > +
> > > +/*
> > > + * Helper API to get SCU base address
> > > + * In case platform DT do not have SCU node, or iomap fails
> > > + * this call will fallback and will try to map via call to
> > > + * scu_a9_get_base.
> > > + * This will return ownership of scu_base to the caller
> > > + */
> > > +void __iomem *of_scu_get_base(void)
> > > +{
> > > +	unsigned long base = 0;
> > > +	struct device_node *np;
> > > +	void __iomem *scu_base;
> > > +
> > > +	np = of_find_matching_node(NULL, scu_match);    
> > 
> > could we check np before calling of_iomap()?
> >   
> > > +	scu_base = of_iomap(np, 0);
> > > +	of_node_put(np);
> > > +	if (!scu_base) {
> > > +		pr_err("%s failed to map scu_base via DT\n", __func__);    
> > 
> > For non-ca5, non-ca9 based SoCs, we'll see this error msg. We understand
> > what does it mean, but it may confuse normal users. In current version,
> > berlin doesn't complain like this for non-ca9 SoCs  
> 
> oops, I just realized that the non-ca9 berlin arm SoC version isn't upstreamed.
> Below is the draft version I planed. Basically speaking, the code tries to
> find "arm,cortex-a9-scu" node from DT, if can't, we think we don't need to
> worry about SCU. Is there any elegant solution for my situation?

I just realized that (another realized :D) we uses PSCI enable method for
non-ca9 base SoCs, so "marvell,berlin-smp" enable method is only for the SoCs
which have CA9 compatible SCU. Sorry for the noise, your patch looks good to me.

  parent reply	other threads:[~2016-11-14  8:47 UTC|newest]

Thread overview: 97+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-11-14  5:01 [PATCH 00/16] Provide support of generic function for SCU enable Pankaj Dubey
2016-11-14  5:01 ` Pankaj Dubey
2016-11-14  5:01 ` [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU Pankaj Dubey
2016-11-14  5:01   ` Pankaj Dubey
2016-11-14  6:12   ` Jisheng Zhang
2016-11-14  6:12     ` Jisheng Zhang
2016-11-14  6:54     ` Jisheng Zhang
2016-11-14  6:54       ` Jisheng Zhang
2016-11-14  8:23       ` pankaj.dubey
2016-11-14  8:23         ` pankaj.dubey
2016-11-14  8:47       ` Jisheng Zhang [this message]
2016-11-14  8:47         ` Jisheng Zhang
2016-11-14  8:40     ` pankaj.dubey
2016-11-14  8:40       ` pankaj.dubey
2016-11-14 12:03       ` Arnd Bergmann
2016-11-14 12:03         ` Arnd Bergmann
2016-11-14 13:50         ` Russell King - ARM Linux
2016-11-14 13:50           ` Russell King - ARM Linux
2016-11-14 14:37           ` Arnd Bergmann
2016-11-14 14:37             ` Arnd Bergmann
2016-11-14 14:51             ` Russell King - ARM Linux
2016-11-14 14:51               ` Russell King - ARM Linux
2016-11-17  4:20               ` pankaj.dubey
2016-11-17  4:20                 ` pankaj.dubey
2016-11-17 17:03                 ` Arnd Bergmann
2016-11-17 17:03                   ` Arnd Bergmann
2016-11-18  3:24                   ` pankaj.dubey
2016-11-18  3:24                     ` pankaj.dubey
2016-11-18 12:14                     ` Arnd Bergmann
2016-11-18 12:14                       ` Arnd Bergmann
2016-11-18 12:48                       ` Russell King - ARM Linux
2016-11-18 12:48                         ` Russell King - ARM Linux
2016-11-18 13:32                         ` Arnd Bergmann
2016-11-18 13:32                           ` Arnd Bergmann
2016-12-08 15:18                           ` Pankaj Dubey
2016-12-08 15:18                             ` Pankaj Dubey
2016-11-14 13:48   ` Russell King - ARM Linux
2016-11-14 13:48     ` Russell King - ARM Linux
2016-11-17  2:22     ` pankaj.dubey
2016-11-17  2:22       ` pankaj.dubey
2016-11-14  5:01 ` [PATCH 02/16] ARM: EXYNOS: use generic API " Pankaj Dubey
2016-11-14  5:01   ` Pankaj Dubey
2016-11-14  5:01   ` Pankaj Dubey
2016-11-15 18:59   ` Krzysztof Kozlowski
2016-11-15 18:59     ` Krzysztof Kozlowski
2016-11-17  2:15     ` pankaj.dubey
2016-11-17  2:15       ` pankaj.dubey
2016-11-14  5:01 ` [PATCH 03/16] ARM: berlin: use generic API for enabling SCU Pankaj Dubey
2016-11-14  5:01   ` Pankaj Dubey
2016-11-14  8:51   ` Jisheng Zhang
2016-11-14  8:51     ` Jisheng Zhang
2016-11-14 16:20     ` Pankaj Dubey
2016-11-14 16:20       ` Pankaj Dubey
2016-11-14  5:01 ` [PATCH 04/16] ARM: realview: " Pankaj Dubey
2016-11-14  5:01   ` Pankaj Dubey
2016-11-14 11:56   ` Arnd Bergmann
2016-11-14 11:56     ` Arnd Bergmann
2016-11-14 12:06     ` pankaj.dubey
2016-11-14 12:06       ` pankaj.dubey
2016-11-14 14:28       ` Arnd Bergmann
2016-11-14 14:28         ` Arnd Bergmann
2016-11-14 13:19     ` Pankaj Dubey
2016-11-14 13:19       ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 05/16] ARM: socfpga: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 06/16] ARM: STi: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 07/16] ARM: ux500: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 08/16] ARM: vexpress: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-16 14:34   ` Sudeep Holla
2016-11-16 14:34     ` Sudeep Holla
2016-11-17  2:12     ` pankaj.dubey
2016-11-17  2:12       ` pankaj.dubey
2016-11-14  5:02 ` [PATCH 09/16] ARM: BCM: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  6:10   ` Florian Fainelli
2016-11-14  6:10     ` Florian Fainelli
2016-11-14  5:02 ` [PATCH 10/16] ARM: tegra: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 11/16] ARM: rockchip: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 12/16] ARM: imx: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14 14:26   ` Shawn Guo
2016-11-14 14:26     ` Shawn Guo
2016-11-17  4:29     ` pankaj.dubey
2016-11-17  4:29       ` pankaj.dubey
2016-11-14  5:02 ` [PATCH 13/16] ARM: zynq: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 14/16] ARM: hisi: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 15/16] ARM: mvebu: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey
2016-11-14  5:02 ` [PATCH 16/16] ARM: zx: " Pankaj Dubey
2016-11-14  5:02   ` Pankaj Dubey

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=20161114164706.02545789@xhacker \
    --to=jszhang@marvell.com \
    --cc=linux-arm-kernel@lists.infradead.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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.