Commit 91824db2 authored by Suzuki K Poulose's avatar Suzuki K Poulose Committed by Greg Kroah-Hartman
Browse files

coresight: Make device to CPU mapping generic



The CoreSight components ETM and CPU-Debug are always associated
with CPUs. Replace the of_coresight_get_cpu() with a platform
agnostic helper, in preparation to add ACPI support.

Signed-off-by: default avatarSuzuki K Poulose <suzuki.poulose@arm.com>
Signed-off-by: default avatarMathieu Poirier <mathieu.poirier@linaro.org>
Signed-off-by: default avatarGreg Kroah-Hartman <gregkh@linuxfoundation.org>
parent f03631da
Loading
Loading
Loading
Loading
+1 −2
Original line number Diff line number Diff line
@@ -572,14 +572,13 @@ static int debug_probe(struct amba_device *adev, const struct amba_id *id)
	struct device *dev = &adev->dev;
	struct debug_drvdata *drvdata;
	struct resource *res = &adev->res;
	struct device_node *np = adev->dev.of_node;
	int ret;

	drvdata = devm_kzalloc(dev, sizeof(*drvdata), GFP_KERNEL);
	if (!drvdata)
		return -ENOMEM;

	drvdata->cpu = np ? of_coresight_get_cpu(np) : 0;
	drvdata->cpu = coresight_get_cpu(dev);
	if (per_cpu(debug_drvdata, drvdata->cpu)) {
		dev_err(dev, "CPU%d drvdata has already been initialized\n",
			drvdata->cpu);
+13 −5
Original line number Diff line number Diff line
@@ -151,12 +151,14 @@ static void of_coresight_get_ports(const struct device_node *node,
	}
}

int of_coresight_get_cpu(const struct device_node *node)
static int of_coresight_get_cpu(struct device *dev)
{
	int cpu;
	struct device_node *dn;

	dn = of_parse_phandle(node, "cpu", 0);
	if (!dev->of_node)
		return 0;
	dn = of_parse_phandle(dev->of_node, "cpu", 0);
	/* Affinity defaults to CPU0 */
	if (!dn)
		return 0;
@@ -166,7 +168,6 @@ int of_coresight_get_cpu(const struct device_node *node)
	/* Affinity to CPU0 if no cpu nodes are found */
	return (cpu < 0) ? 0 : cpu;
}
EXPORT_SYMBOL_GPL(of_coresight_get_cpu);

/*
 * of_coresight_parse_endpoint : Parse the given output endpoint @ep
@@ -240,8 +241,6 @@ static int of_get_coresight_platform_data(struct device *dev,
	bool legacy_binding = false;
	struct device_node *node = dev->of_node;

	pdata->cpu = of_coresight_get_cpu(node);

	/* Get the number of input and output port for this component */
	of_coresight_get_ports(node, &pdata->nr_inport, &pdata->nr_outport);

@@ -300,6 +299,14 @@ of_get_coresight_platform_data(struct device *dev,
}
#endif

int coresight_get_cpu(struct device *dev)
{
	if (is_of_node(dev->fwnode))
		return of_coresight_get_cpu(dev);
	return 0;
}
EXPORT_SYMBOL_GPL(coresight_get_cpu);

struct coresight_platform_data *
coresight_get_platform_data(struct device *dev)
{
@@ -318,6 +325,7 @@ coresight_get_platform_data(struct device *dev)

	/* Use device name as sysfs handle */
	pdata->name = dev_name(dev);
	pdata->cpu = coresight_get_cpu(dev);

	if (is_of_node(fwnode))
		ret = of_get_coresight_platform_data(dev, pdata);
+1 −6
Original line number Diff line number Diff line
@@ -292,12 +292,7 @@ static inline void coresight_disclaim_device_unlocked(void __iomem *base) {}

#endif

#ifdef CONFIG_OF
extern int of_coresight_get_cpu(const struct device_node *node);
#else
static inline int of_coresight_get_cpu(const struct device_node *node)
{ return 0; }
#endif
extern int coresight_get_cpu(struct device *dev);

struct coresight_platform_data *coresight_get_platform_data(struct device *dev);