Message ID | 1555344260-12375-21-git-send-email-suzuki.poulose@arm.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | coresight: Support for ACPI bindings | expand |
On Mon, Apr 15, 2019 at 05:04:03PM +0100, Suzuki K Poulose wrote: > 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. > > Cc: Mathieu Poirier <mathieu.poirier@linaro.org> > Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> > --- > drivers/hwtracing/coresight/coresight-cpu-debug.c | 3 +-- > drivers/hwtracing/coresight/coresight-platform.c | 18 +++++++++++++----- > include/linux/coresight.h | 7 +------ > 3 files changed, 15 insertions(+), 13 deletions(-) > > diff --git a/drivers/hwtracing/coresight/coresight-cpu-debug.c b/drivers/hwtracing/coresight/coresight-cpu-debug.c > index e8819d7..07a1367 100644 > --- a/drivers/hwtracing/coresight/coresight-cpu-debug.c > +++ b/drivers/hwtracing/coresight/coresight-cpu-debug.c > @@ -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); > diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c > index 25a1838..8a86ba3 100644 > --- a/drivers/hwtracing/coresight/coresight-platform.c > +++ b/drivers/hwtracing/coresight/coresight-platform.c > @@ -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 > @@ -241,8 +242,6 @@ 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); > > @@ -294,6 +293,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) > { > @@ -309,6 +316,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)) > return of_get_coresight_platform_data(dev, pdata); > diff --git a/include/linux/coresight.h b/include/linux/coresight.h > index 5b29255..a48cd9b 100644 > --- a/include/linux/coresight.h > +++ b/include/linux/coresight.h > @@ -291,12 +291,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); For patches 12, 13 and 15-20: Reviewed-by: Mathieu Poirier <mathieu.poirier@linaro.org> > > -- > 2.7.4 >
diff --git a/drivers/hwtracing/coresight/coresight-cpu-debug.c b/drivers/hwtracing/coresight/coresight-cpu-debug.c index e8819d7..07a1367 100644 --- a/drivers/hwtracing/coresight/coresight-cpu-debug.c +++ b/drivers/hwtracing/coresight/coresight-cpu-debug.c @@ -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); diff --git a/drivers/hwtracing/coresight/coresight-platform.c b/drivers/hwtracing/coresight/coresight-platform.c index 25a1838..8a86ba3 100644 --- a/drivers/hwtracing/coresight/coresight-platform.c +++ b/drivers/hwtracing/coresight/coresight-platform.c @@ -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 @@ -241,8 +242,6 @@ 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); @@ -294,6 +293,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) { @@ -309,6 +316,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)) return of_get_coresight_platform_data(dev, pdata); diff --git a/include/linux/coresight.h b/include/linux/coresight.h index 5b29255..a48cd9b 100644 --- a/include/linux/coresight.h +++ b/include/linux/coresight.h @@ -291,12 +291,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);
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. Cc: Mathieu Poirier <mathieu.poirier@linaro.org> Signed-off-by: Suzuki K Poulose <suzuki.poulose@arm.com> --- drivers/hwtracing/coresight/coresight-cpu-debug.c | 3 +-- drivers/hwtracing/coresight/coresight-platform.c | 18 +++++++++++++----- include/linux/coresight.h | 7 +------ 3 files changed, 15 insertions(+), 13 deletions(-)