[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20190423175913.GD21070@xps15>
Date: Tue, 23 Apr 2019 11:59:13 -0600
From: Mathieu Poirier <mathieu.poirier@...aro.org>
To: Suzuki K Poulose <suzuki.poulose@....com>
Cc: linux-arm-kernel@...ts.infradead.org, linux-kernel@...r.kernel.org,
coresight@...ts.linaro.org, mike.leach@...aro.org,
rjw@...ysocki.net, robert.walker@....com
Subject: Re: [PATCH v2 31/36] coresight: stm: ACPI support for parsing
stimulus base
On Mon, Apr 15, 2019 at 05:04:14PM +0100, Suzuki K Poulose wrote:
> The stimulus base for STM device must be listed as the second memory
> resource, followed by the programming base address as described in
> "Section 2.3 Resources" in ACPI for CoreSightTM 1.0 Platform Design
> documen (DEN0067).
Thank you for adding more information.
>
> Add support for parsing the information for ACPI.
>
> Cc: Mathieu Poirier <mathieu.poirier@...aro.org>
> Cc: "Rafael J. Wysocki" <rjw@...ysocki.net>
> Signed-off-by: Suzuki K Poulose <suzuki.poulose@....com>
> ---
> drivers/hwtracing/coresight/coresight-stm.c | 43 +++++++++++++++++++++++++++++
> 1 file changed, 43 insertions(+)
>
> diff --git a/drivers/hwtracing/coresight/coresight-stm.c b/drivers/hwtracing/coresight/coresight-stm.c
> index 2d6ae00..7cf2fe4 100644
> --- a/drivers/hwtracing/coresight/coresight-stm.c
> +++ b/drivers/hwtracing/coresight/coresight-stm.c
> @@ -16,6 +16,7 @@
> * (C) 2015-2016 Chunyan Zhang <zhang.chunyan@...aro.org>
> */
> #include <asm/local.h>
> +#include <linux/acpi.h>
> #include <linux/amba/bus.h>
> #include <linux/bitmap.h>
> #include <linux/clk.h>
> @@ -716,10 +717,52 @@ static inline int of_stm_get_stimulus_area(struct device *dev,
> }
> #endif
>
> +#ifdef CONFIG_ACPI
> +static int acpi_stm_get_stimulus_area(struct device *dev, struct resource *res)
> +{
> + int rc;
> + bool found_base = false;
> + struct resource_entry *rent;
> + LIST_HEAD(res_list);
> +
> + struct acpi_device *adev = ACPI_COMPANION(dev);
> +
> + if (!adev)
> + return -ENODEV;
> + rc = acpi_dev_get_resources(adev, &res_list, NULL, NULL);
> + if (rc < 0)
> + return rc;
> +
> + rc = -ENOENT;
> + list_for_each_entry(rent, &res_list, node) {
> + if (resource_type(rent->res) != IORESOURCE_MEM)
> + continue;
> + if (found_base) {
> + *res = *rent->res;
> + rc = 0;
> + break;
> + }
> +
> + found_base = true;
> + }
I would copy the description in the changelog just before the
list_for_each_entry() loop.
> +
> + acpi_dev_free_resource_list(&res_list);
> + return rc;
> +}
> +#else
> +static inline int acpi_stm_get_stimulus_area(struct device *dev,
> + struct resource *res)
> +{
> + return -ENOENT;
> +}
> +#endif
> +
> static int stm_get_stimulus_area(struct device *dev, struct resource *res)
> {
> if (dev->of_node)
I noticed the direct access of ->of_node in patch 16 and thought it was a little
odd that is_of_node() wasn't used.
> return of_stm_get_stimulus_area(dev, res);
> + else if (is_acpi_node(dev->fwnode))
> + return acpi_stm_get_stimulus_area(dev, res);
> return -ENOENT;
With the above:
Reviewed-by: Mathieu Poirier <mathieu.poirier@...aro.org>
> }
>
> --
> 2.7.4
>
Powered by blists - more mailing lists