All of lore.kernel.org
 help / color / mirror / Atom feed
From: "pankaj.dubey" <pankaj.dubey@samsung.com>
To: Jisheng Zhang <jszhang@marvell.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>,
	Wei Xu <xuwei5@hisilicon.com>,
	Michal Simek <michal.simek@xilinx.com>,
	vireshk@kernel.org, magnus.damm@gmail.com,
	Russell King <linux@armlinux.org.uk>,
	krzk@kernel.org, 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,
	Jun Nie <jun.nie@linaro.org>,
	linux-arm-kernel@lists.infradead.org,
	shiraz.linux.kernel@gmail.com, linux-kernel@vger.kernel.org,
	Dinh Nguyen <dinguyen@opensource.altera.com>,
	Shawn Guo <shawnguo@kernel.org>,
	cpgs@samsung.com
Subject: Re: [PATCH 01/16] ARM: scu: Provide support for parsing SCU device node to enable SCU
Date: Mon, 14 Nov 2016 13:53:36 +0530	[thread overview]
Message-ID: <a1b322bf-b31b-5a30-aa1a-14bcbd265f6b@samsung.com> (raw)
In-Reply-To: <20161114145459.63c23391@xhacker>

Hi Jisheng,

On Monday 14 November 2016 12:24 PM, Jisheng Zhang wrote:
> 
> On Mon, 14 Nov 2016 14:12:51 +0800 Jisheng Zhang wrote:
> 
>> Hi Pankaj,
>>

<snip>

>>> + * 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?
> 

To adopt new generic API I have submitted a patch for Berlin (along with
other various platforms) here:

https://patchwork.kernel.org/patch/9426457/

Please review and if possible test and let me know feedback.

Thanks,
Pankaj Dubey

> Thanks,
> Jisheng
> 
> 
> ------------8<-------------------
> --- a/arch/arm/mach-berlin/platsmp.c
> +++ b/arch/arm/mach-berlin/platsmp.c
> @@ -56,22 +56,25 @@ static void __init berlin_smp_prepare_cpus(unsigned int max_cpus)
>  	void __iomem *vectors_base;
>  
>  	np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu");
> -	scu_base = of_iomap(np, 0);
> -	of_node_put(np);
> -	if (!scu_base)
> -		return;
> +	if (np) {
> +		scu_base = of_iomap(np, 0);
> +		of_node_put(np);
> +		if (!scu_base)
> +			return;
> +		scu_enable(scu_base);
> +		iounmap(scu_base);
> +	}
>  
>  	np = of_find_compatible_node(NULL, NULL, "marvell,berlin-cpu-ctrl");
>  	cpu_ctrl = of_iomap(np, 0);
>  	of_node_put(np);
>  	if (!cpu_ctrl)
> -		goto unmap_scu;
> +		return;
>  
>  	vectors_base = ioremap(CONFIG_VECTORS_BASE, SZ_32K);
>  	if (!vectors_base)
> -		goto unmap_scu;
> +		return;
>  
> -	scu_enable(scu_base);
>  	flush_cache_all();
>  
>  	/*
> @@ -87,8 +90,6 @@ static void __init berlin_smp_prepare_cpus(unsigned int max_cpus)
>  	writel(virt_to_phys(secondary_startup), vectors_base + SW_RESET_ADDR);
>  
>  	iounmap(vectors_base);
> -unmap_scu:
> -	iounmap(scu_base);
>  }
>  
>  static struct smp_operations berlin_smp_ops __initdata = {
> 
> 
>>
>>> +		if (scu_a9_has_base()) {
>>> +			base = scu_a9_get_base();
>>> +			scu_base = ioremap(base, SZ_4K);
>>> +		}
>>> +		if (!scu_base) {
>>> +			pr_err("%s failed to map scu_base\n", __func__);  
>>
>> ditto
>>
>>> +			return IOMEM_ERR_PTR(-ENOMEM);
>>> +		}
>>> +	}
>>> +	return scu_base;
>>> +}
>>> +
>>> +/*
>>> + * Enable SCU via mapping scu_base DT
>>> + * If scu_base mapped successfully scu will be enabled and in case of
>>> + * failure if will return non-zero error code
>>> + */
>>> +int of_scu_enable(void)
>>> +{
>>> +	void __iomem *scu_base;
>>> +
>>> +	scu_base = of_scu_get_base();
>>> +	if (!IS_ERR(scu_base)) {
>>> +		scu_enable(scu_base);
>>> +		iounmap(scu_base);
>>> +		return 0;
>>> +	}
>>> +	return PTR_ERR(scu_base);
>>> +}
>>> +
>>>  #endif
>>>  
>>>  /*  
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel@lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> 
> 
> 

WARNING: multiple messages have this Message-ID (diff)
From: pankaj.dubey@samsung.com (pankaj.dubey)
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 13:53:36 +0530	[thread overview]
Message-ID: <a1b322bf-b31b-5a30-aa1a-14bcbd265f6b@samsung.com> (raw)
In-Reply-To: <20161114145459.63c23391@xhacker>

Hi Jisheng,

On Monday 14 November 2016 12:24 PM, Jisheng Zhang wrote:
> 
> On Mon, 14 Nov 2016 14:12:51 +0800 Jisheng Zhang wrote:
> 
>> Hi Pankaj,
>>

<snip>

>>> + * 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?
> 

To adopt new generic API I have submitted a patch for Berlin (along with
other various platforms) here:

https://patchwork.kernel.org/patch/9426457/

Please review and if possible test and let me know feedback.

Thanks,
Pankaj Dubey

> Thanks,
> Jisheng
> 
> 
> ------------8<-------------------
> --- a/arch/arm/mach-berlin/platsmp.c
> +++ b/arch/arm/mach-berlin/platsmp.c
> @@ -56,22 +56,25 @@ static void __init berlin_smp_prepare_cpus(unsigned int max_cpus)
>  	void __iomem *vectors_base;
>  
>  	np = of_find_compatible_node(NULL, NULL, "arm,cortex-a9-scu");
> -	scu_base = of_iomap(np, 0);
> -	of_node_put(np);
> -	if (!scu_base)
> -		return;
> +	if (np) {
> +		scu_base = of_iomap(np, 0);
> +		of_node_put(np);
> +		if (!scu_base)
> +			return;
> +		scu_enable(scu_base);
> +		iounmap(scu_base);
> +	}
>  
>  	np = of_find_compatible_node(NULL, NULL, "marvell,berlin-cpu-ctrl");
>  	cpu_ctrl = of_iomap(np, 0);
>  	of_node_put(np);
>  	if (!cpu_ctrl)
> -		goto unmap_scu;
> +		return;
>  
>  	vectors_base = ioremap(CONFIG_VECTORS_BASE, SZ_32K);
>  	if (!vectors_base)
> -		goto unmap_scu;
> +		return;
>  
> -	scu_enable(scu_base);
>  	flush_cache_all();
>  
>  	/*
> @@ -87,8 +90,6 @@ static void __init berlin_smp_prepare_cpus(unsigned int max_cpus)
>  	writel(virt_to_phys(secondary_startup), vectors_base + SW_RESET_ADDR);
>  
>  	iounmap(vectors_base);
> -unmap_scu:
> -	iounmap(scu_base);
>  }
>  
>  static struct smp_operations berlin_smp_ops __initdata = {
> 
> 
>>
>>> +		if (scu_a9_has_base()) {
>>> +			base = scu_a9_get_base();
>>> +			scu_base = ioremap(base, SZ_4K);
>>> +		}
>>> +		if (!scu_base) {
>>> +			pr_err("%s failed to map scu_base\n", __func__);  
>>
>> ditto
>>
>>> +			return IOMEM_ERR_PTR(-ENOMEM);
>>> +		}
>>> +	}
>>> +	return scu_base;
>>> +}
>>> +
>>> +/*
>>> + * Enable SCU via mapping scu_base DT
>>> + * If scu_base mapped successfully scu will be enabled and in case of
>>> + * failure if will return non-zero error code
>>> + */
>>> +int of_scu_enable(void)
>>> +{
>>> +	void __iomem *scu_base;
>>> +
>>> +	scu_base = of_scu_get_base();
>>> +	if (!IS_ERR(scu_base)) {
>>> +		scu_enable(scu_base);
>>> +		iounmap(scu_base);
>>> +		return 0;
>>> +	}
>>> +	return PTR_ERR(scu_base);
>>> +}
>>> +
>>>  #endif
>>>  
>>>  /*  
>>
>>
>> _______________________________________________
>> linux-arm-kernel mailing list
>> linux-arm-kernel at lists.infradead.org
>> http://lists.infradead.org/mailman/listinfo/linux-arm-kernel
> 
> 
> 
> 

  reply	other threads:[~2016-11-14  8:50 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 [this message]
2016-11-14  8:23         ` pankaj.dubey
2016-11-14  8:47       ` Jisheng Zhang
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=a1b322bf-b31b-5a30-aa1a-14bcbd265f6b@samsung.com \
    --to=pankaj.dubey@samsung.com \
    --cc=andrew@lunn.ch \
    --cc=arnd@arndb.de \
    --cc=cpgs@samsung.com \
    --cc=dinguyen@opensource.altera.com \
    --cc=geert+renesas@glider.be \
    --cc=heiko@sntech.de \
    --cc=horms@verge.net.au \
    --cc=jszhang@marvell.com \
    --cc=jun.nie@linaro.org \
    --cc=krzk@kernel.org \
    --cc=linus.walleij@linaro.org \
    --cc=linux-arm-kernel@lists.infradead.org \
    --cc=linux-kernel@vger.kernel.org \
    --cc=linux@armlinux.org.uk \
    --cc=liviu.dudau@arm.com \
    --cc=magnus.damm@gmail.com \
    --cc=michal.simek@xilinx.com \
    --cc=patrice.chotard@st.com \
    --cc=rjui@broadcom.com \
    --cc=rmk+kernel@armlinux.org.uk \
    --cc=shawnguo@kernel.org \
    --cc=shiraz.linux.kernel@gmail.com \
    --cc=swarren@wwwdotorg.org \
    --cc=thomas.ab@samsung.com \
    --cc=vireshk@kernel.org \
    --cc=xuwei5@hisilicon.com \
    /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.