lkml.org 
[lkml]   [2019]   [Apr]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [PATCH v2 20/36] coresight: Make device to CPU mapping generic
    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
    >

    \
     
     \ /
      Last update: 2019-04-18 20:16    [W:4.164 / U:0.392 seconds]
    ©2003-2018 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site