[PATCH 2/9] ARM: mvebu: prepare set_cpu_coherent() for future extension

Gregory CLEMENT gregory.clement at free-electrons.com
Wed Jun 17 08:28:18 PDT 2015


Hi Thomas,

On 16/06/2015 14:12, Thomas Petazzoni wrote:
> From: Nadav Haklai <nadavh at marvell.com>
> 
> This patch prepares the set_cpu_coherent() function in coherency.c to
> be extended to support other SoCs than Armada XP. It will be needed on
> Armada 38x to re-enable the coherency after exiting from suspend to
> RAM.
> 
> This preparation simply moves the function further down in coherency.c
> so that it can use coherency_type(), and uses that function to only do
> the Armada XP specific work if we are on Armada XP.
> 
> Signed-off-by: Nadav Haklai <nadavh at marvell.com>
> Signed-off-by: Thomas Petazzoni <thomas.petazzoni at free-electrons.com>

Acked-by: Gregory CLEMENT <gregory.clement at free-electrons.com>


Thanks,

Gregory

> ---
>  arch/arm/mach-mvebu/coherency.c | 29 +++++++++++++++++------------
>  1 file changed, 17 insertions(+), 12 deletions(-)
> 
> diff --git a/arch/arm/mach-mvebu/coherency.c b/arch/arm/mach-mvebu/coherency.c
> index e46e9ea..44eedf3 100644
> --- a/arch/arm/mach-mvebu/coherency.c
> +++ b/arch/arm/mach-mvebu/coherency.c
> @@ -65,18 +65,6 @@ static const struct of_device_id of_coherency_table[] = {
>  int ll_enable_coherency(void);
>  void ll_add_cpu_to_smp_group(void);
>  
> -int set_cpu_coherent(void)
> -{
> -	if (!coherency_base) {
> -		pr_warn("Can't make current CPU cache coherent.\n");
> -		pr_warn("Coherency fabric is not initialized\n");
> -		return 1;
> -	}
> -
> -	ll_add_cpu_to_smp_group();
> -	return ll_enable_coherency();
> -}
> -
>  static int mvebu_hwcc_notifier(struct notifier_block *nb,
>  			       unsigned long event, void *__dev)
>  {
> @@ -206,6 +194,23 @@ static int coherency_type(void)
>  	return type;
>  }
>  
> +int set_cpu_coherent(void)
> +{
> +	int type = coherency_type();
> +
> +	if (type == COHERENCY_FABRIC_TYPE_ARMADA_370_XP) {
> +		if (!coherency_base) {
> +			pr_warn("Can't make current CPU cache coherent.\n");
> +			pr_warn("Coherency fabric is not initialized\n");
> +			return 1;
> +		}
> +		ll_add_cpu_to_smp_group();
> +		return ll_enable_coherency();
> +	}
> +
> +	return 0;
> +}
> +
>  int coherency_available(void)
>  {
>  	return coherency_type() != COHERENCY_FABRIC_TYPE_NONE;
> 


-- 
Gregory Clement, Free Electrons
Kernel, drivers, real-time and embedded Linux
development, consulting, training and support.
http://free-electrons.com



More information about the linux-arm-kernel mailing list