Commit a5520eac authored by Mark Rutland's avatar Mark Rutland Committed by Catalin Marinas
Browse files

firmware/psci: use common SMCCC_CONDUIT_*



Now that we have common SMCCC_CONDUIT_* definitions, migrate the PSCI
code over to them, and kill off the old PSCI_CONDUIT_* definitions.

There should be no functional change as a result of this patch.

Signed-off-by: default avatarMark Rutland <mark.rutland@arm.com>
Acked-by: default avatarLorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Acked-by: default avatarWill Deacon <will.deacon@arm.com>
Signed-off-by: default avatarCatalin Marinas <catalin.marinas@arm.com>
parent 6848253d
Loading
Loading
Loading
Loading
+9 −16
Original line number Diff line number Diff line
@@ -53,7 +53,7 @@ bool psci_tos_resident_on(int cpu)
}

struct psci_operations psci_ops = {
	.conduit = PSCI_CONDUIT_NONE,
	.conduit = SMCCC_CONDUIT_NONE,
	.smccc_version = SMCCC_VERSION_1_0,
};

@@ -62,14 +62,7 @@ enum arm_smccc_conduit arm_smccc_1_1_get_conduit(void)
	if (psci_ops.smccc_version < SMCCC_VERSION_1_1)
		return SMCCC_CONDUIT_NONE;

	switch (psci_ops.conduit) {
	case PSCI_CONDUIT_SMC:
		return SMCCC_CONDUIT_SMC;
	case PSCI_CONDUIT_HVC:
		return SMCCC_CONDUIT_HVC;
	default:
		return SMCCC_CONDUIT_NONE;
	}
	return psci_ops.conduit;
}

typedef unsigned long (psci_fn)(unsigned long, unsigned long,
@@ -227,13 +220,13 @@ static unsigned long psci_migrate_info_up_cpu(void)
			      0, 0, 0);
}

static void set_conduit(enum psci_conduit conduit)
static void set_conduit(enum arm_smccc_conduit conduit)
{
	switch (conduit) {
	case PSCI_CONDUIT_HVC:
	case SMCCC_CONDUIT_HVC:
		invoke_psci_fn = __invoke_psci_fn_hvc;
		break;
	case PSCI_CONDUIT_SMC:
	case SMCCC_CONDUIT_SMC:
		invoke_psci_fn = __invoke_psci_fn_smc;
		break;
	default:
@@ -255,9 +248,9 @@ static int get_set_conduit_method(struct device_node *np)
	}

	if (!strcmp("hvc", method)) {
		set_conduit(PSCI_CONDUIT_HVC);
		set_conduit(SMCCC_CONDUIT_HVC);
	} else if (!strcmp("smc", method)) {
		set_conduit(PSCI_CONDUIT_SMC);
		set_conduit(SMCCC_CONDUIT_SMC);
	} else {
		pr_warn("invalid \"method\" property: %s\n", method);
		return -EINVAL;
@@ -598,9 +591,9 @@ int __init psci_acpi_init(void)
	pr_info("probing for conduit method from ACPI.\n");

	if (acpi_psci_use_hvc())
		set_conduit(PSCI_CONDUIT_HVC);
		set_conduit(SMCCC_CONDUIT_HVC);
	else
		set_conduit(PSCI_CONDUIT_SMC);
		set_conduit(SMCCC_CONDUIT_SMC);

	return psci_probe();
}
+2 −7
Original line number Diff line number Diff line
@@ -7,6 +7,7 @@
#ifndef __LINUX_PSCI_H
#define __LINUX_PSCI_H

#include <linux/arm-smccc.h>
#include <linux/init.h>
#include <linux/types.h>

@@ -18,12 +19,6 @@ bool psci_tos_resident_on(int cpu);
int psci_cpu_suspend_enter(u32 state);
bool psci_power_state_is_valid(u32 state);

enum psci_conduit {
	PSCI_CONDUIT_NONE,
	PSCI_CONDUIT_SMC,
	PSCI_CONDUIT_HVC,
};

enum smccc_version {
	SMCCC_VERSION_1_0,
	SMCCC_VERSION_1_1,
@@ -38,7 +33,7 @@ struct psci_operations {
	int (*affinity_info)(unsigned long target_affinity,
			unsigned long lowest_affinity_level);
	int (*migrate_info_type)(void);
	enum psci_conduit conduit;
	enum arm_smccc_conduit conduit;
	enum smccc_version smccc_version;
};