[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