Commit 7e8edf55 authored by Andrew Davis's avatar Andrew Davis Committed by Nishanth Menon
Browse files

ARM: keystone: Replace platform SMP with PSCI



The KS2 boot monitor supports PSCI commands. These are already defined
in DT for KS2. We can drop this platform override and remove related
code without changing SMP. Do this here.

Signed-off-by: default avatarAndrew Davis <afd@ti.com>
Signed-off-by: default avatarNishanth Menon <nm@ti.com>
Link: https://lore.kernel.org/r/20221026145033.17905-1-afd@ti.com
parent 9abf2313
Loading
Loading
Loading
Loading
+1 −3
Original line number Diff line number Diff line
# SPDX-License-Identifier: GPL-2.0
obj-y					:= keystone.o smc.o

obj-$(CONFIG_SMP)			+= platsmp.o
obj-y					:= keystone.o

# PM domain driver for Keystone SOCs
obj-$(CONFIG_ARCH_KEYSTONE)		+= pm_domain.o
+0 −2
Original line number Diff line number Diff line
@@ -18,7 +18,6 @@
#include <asm/mach/map.h>
#include <asm/mach/arch.h>
#include <asm/mach/time.h>
#include <asm/smp_plat.h>
#include <asm/memory.h>

#include "memory.h"
@@ -103,7 +102,6 @@ DT_MACHINE_START(KEYSTONE, "Keystone")
#if defined(CONFIG_ZONE_DMA) && defined(CONFIG_ARM_LPAE)
	.dma_zone_size	= SZ_2G,
#endif
	.smp		= smp_ops(keystone_smp_ops),
	.init_machine	= keystone_init,
	.dt_compat	= keystone_match,
	.pv_fixup	= keystone_pv_fixup,
+0 −5
Original line number Diff line number Diff line
@@ -8,13 +8,8 @@
#ifndef __KEYSTONE_H__
#define __KEYSTONE_H__

#define KEYSTONE_MON_CPU_UP_IDX		0x00

#ifndef __ASSEMBLER__

extern const struct smp_operations keystone_smp_ops;
extern void secondary_startup(void);
extern u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr);
extern int keystone_pm_runtime_init(void);

#endif /* __ASSEMBLER__ */

arch/arm/mach-keystone/platsmp.c

deleted100644 → 0
+0 −41
Original line number Diff line number Diff line
// SPDX-License-Identifier: GPL-2.0-only
/*
 * Keystone SOC SMP platform code
 *
 * Copyright 2013 Texas Instruments, Inc.
 *	Cyril Chemparathy <cyril@ti.com>
 *	Santosh Shilimkar <santosh.shillimkar@ti.com>
 *
 * Based on platsmp.c, Copyright (C) 2002 ARM Ltd.
 */

#include <linux/init.h>
#include <linux/smp.h>
#include <linux/io.h>
#include <linux/pgtable.h>

#include <asm/smp_plat.h>
#include <asm/prom.h>
#include <asm/tlbflush.h>

#include "keystone.h"

static int keystone_smp_boot_secondary(unsigned int cpu,
						struct task_struct *idle)
{
	unsigned long start = virt_to_idmap(&secondary_startup);
	int error;

	pr_debug("keystone-smp: booting cpu %d, vector %08lx\n",
		 cpu, start);

	error = keystone_cpu_smc(KEYSTONE_MON_CPU_UP_IDX, cpu, start);
	if (error)
		pr_err("CPU %d bringup failed with %d\n", cpu, error);

	return error;
}

const struct smp_operations keystone_smp_ops __initconst = {
	.smp_boot_secondary	= keystone_smp_boot_secondary,
};

arch/arm/mach-keystone/smc.S

deleted100644 → 0
+0 −26
Original line number Diff line number Diff line
/* SPDX-License-Identifier: GPL-2.0-only */
/*
 * Keystone Secure APIs
 *
 * Copyright (C) 2013 Texas Instruments, Inc.
 * 	Santosh Shilimkar <santosh.shilimkar@ti.com>
 */

#include <linux/linkage.h>

/**
 * u32 keystone_cpu_smc(u32 command, u32 cpu, u32 addr)
 *
 * Low level CPU monitor API
 * @command:	Monitor command.
 * @cpu:	CPU Number
 * @addr:	Kernel jump address for boot CPU
 *
 * Return: Non zero value on failure
 */
	.arch_extension sec
ENTRY(keystone_cpu_smc)
	stmfd   sp!, {r4-r11, lr}
	smc	#0
	ldmfd   sp!, {r4-r11, pc}
ENDPROC(keystone_cpu_smc)