From: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> To: linux-acpi@vger.kernel.org Cc: linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org, Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>, "Rafael J. Wysocki" <rjw@rjwysocki.net>, Will Deacon <will.deacon@arm.com>, Robert Moore <robert.moore@intel.com>, Robin Murphy <robin.murphy@arm.com>, Hanjun Guo <hanjun.guo@linaro.org>, Feng Kan <fkan@apm.com>, Jon Masters <jcm@redhat.com>, Zhang Rui <rui.zhang@intel.com>, Nate Watterson <nwatters@codeaurora.org> Subject: [PATCH v3 2/5] ACPI: Make acpi_dev_get_resources() method agnostic Date: Thu, 3 Aug 2017 13:32:36 +0100 [thread overview] Message-ID: <20170803123239.11359-3-lorenzo.pieralisi@arm.com> (raw) In-Reply-To: <20170803123239.11359-1-lorenzo.pieralisi@arm.com> The function acpi_dev_get_resources() is completely generic and can be used to parse resource objects that are not necessarily coming from the _CRS method but also from other objects eg _DMA that have the same _CRS resource format. Create an acpi_dev_get_resources() helper, internal to the ACPI resources parsing compilation unit, __acpi_dev_get_resources(), that takes a const char* parameter to detect which ACPI method should be called to retrieve the resources list and make acpi_dev_get_resources() call it with a method name _CRS leaving the API behaviour unchanged. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net> --- drivers/acpi/resource.c | 53 +++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c index cd4c427..93f1b5c 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c @@ -573,6 +573,35 @@ static acpi_status acpi_dev_process_resource(struct acpi_resource *ares, return AE_OK; } +static int __acpi_dev_get_resources(struct acpi_device *adev, + struct list_head *list, + int (*preproc)(struct acpi_resource *, void *), + void *preproc_data, char *method) +{ + struct res_proc_context c; + acpi_status status; + + if (!adev || !adev->handle || !list_empty(list)) + return -EINVAL; + + if (!acpi_has_method(adev->handle, method)) + return 0; + + c.list = list; + c.preproc = preproc; + c.preproc_data = preproc_data; + c.count = 0; + c.error = 0; + status = acpi_walk_resources(adev->handle, method, + acpi_dev_process_resource, &c); + if (ACPI_FAILURE(status)) { + acpi_dev_free_resource_list(list); + return c.error ? c.error : -EIO; + } + + return c.count; +} + /** * acpi_dev_get_resources - Get current resources of a device. * @adev: ACPI device node to get the resources for. @@ -601,28 +630,8 @@ int acpi_dev_get_resources(struct acpi_device *adev, struct list_head *list, int (*preproc)(struct acpi_resource *, void *), void *preproc_data) { - struct res_proc_context c; - acpi_status status; - - if (!adev || !adev->handle || !list_empty(list)) - return -EINVAL; - - if (!acpi_has_method(adev->handle, METHOD_NAME__CRS)) - return 0; - - c.list = list; - c.preproc = preproc; - c.preproc_data = preproc_data; - c.count = 0; - c.error = 0; - status = acpi_walk_resources(adev->handle, METHOD_NAME__CRS, - acpi_dev_process_resource, &c); - if (ACPI_FAILURE(status)) { - acpi_dev_free_resource_list(list); - return c.error ? c.error : -EIO; - } - - return c.count; + return __acpi_dev_get_resources(adev, list, preproc, preproc_data, + METHOD_NAME__CRS); } EXPORT_SYMBOL_GPL(acpi_dev_get_resources); -- 2.10.0
WARNING: multiple messages have this Message-ID (diff)
From: lorenzo.pieralisi@arm.com (Lorenzo Pieralisi) To: linux-arm-kernel@lists.infradead.org Subject: [PATCH v3 2/5] ACPI: Make acpi_dev_get_resources() method agnostic Date: Thu, 3 Aug 2017 13:32:36 +0100 [thread overview] Message-ID: <20170803123239.11359-3-lorenzo.pieralisi@arm.com> (raw) In-Reply-To: <20170803123239.11359-1-lorenzo.pieralisi@arm.com> The function acpi_dev_get_resources() is completely generic and can be used to parse resource objects that are not necessarily coming from the _CRS method but also from other objects eg _DMA that have the same _CRS resource format. Create an acpi_dev_get_resources() helper, internal to the ACPI resources parsing compilation unit, __acpi_dev_get_resources(), that takes a const char* parameter to detect which ACPI method should be called to retrieve the resources list and make acpi_dev_get_resources() call it with a method name _CRS leaving the API behaviour unchanged. Signed-off-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com> Cc: "Rafael J. Wysocki" <rjw@rjwysocki.net> --- drivers/acpi/resource.c | 53 +++++++++++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 22 deletions(-) diff --git a/drivers/acpi/resource.c b/drivers/acpi/resource.c index cd4c427..93f1b5c 100644 --- a/drivers/acpi/resource.c +++ b/drivers/acpi/resource.c @@ -573,6 +573,35 @@ static acpi_status acpi_dev_process_resource(struct acpi_resource *ares, return AE_OK; } +static int __acpi_dev_get_resources(struct acpi_device *adev, + struct list_head *list, + int (*preproc)(struct acpi_resource *, void *), + void *preproc_data, char *method) +{ + struct res_proc_context c; + acpi_status status; + + if (!adev || !adev->handle || !list_empty(list)) + return -EINVAL; + + if (!acpi_has_method(adev->handle, method)) + return 0; + + c.list = list; + c.preproc = preproc; + c.preproc_data = preproc_data; + c.count = 0; + c.error = 0; + status = acpi_walk_resources(adev->handle, method, + acpi_dev_process_resource, &c); + if (ACPI_FAILURE(status)) { + acpi_dev_free_resource_list(list); + return c.error ? c.error : -EIO; + } + + return c.count; +} + /** * acpi_dev_get_resources - Get current resources of a device. * @adev: ACPI device node to get the resources for. @@ -601,28 +630,8 @@ int acpi_dev_get_resources(struct acpi_device *adev, struct list_head *list, int (*preproc)(struct acpi_resource *, void *), void *preproc_data) { - struct res_proc_context c; - acpi_status status; - - if (!adev || !adev->handle || !list_empty(list)) - return -EINVAL; - - if (!acpi_has_method(adev->handle, METHOD_NAME__CRS)) - return 0; - - c.list = list; - c.preproc = preproc; - c.preproc_data = preproc_data; - c.count = 0; - c.error = 0; - status = acpi_walk_resources(adev->handle, METHOD_NAME__CRS, - acpi_dev_process_resource, &c); - if (ACPI_FAILURE(status)) { - acpi_dev_free_resource_list(list); - return c.error ? c.error : -EIO; - } - - return c.count; + return __acpi_dev_get_resources(adev, list, preproc, preproc_data, + METHOD_NAME__CRS); } EXPORT_SYMBOL_GPL(acpi_dev_get_resources); -- 2.10.0
next prev parent reply other threads:[~2017-08-03 12:32 UTC|newest] Thread overview: 45+ messages / expand[flat|nested] mbox.gz Atom feed top 2017-08-03 12:32 [PATCH v3 0/5] ACPI: DMA ranges management Lorenzo Pieralisi 2017-08-03 12:32 ` Lorenzo Pieralisi 2017-08-03 12:32 ` [PATCH v3 1/5] ACPICA: resource_mgr: Allow _DMA method in walk resources Lorenzo Pieralisi 2017-08-03 12:32 ` Lorenzo Pieralisi 2017-08-03 12:32 ` Lorenzo Pieralisi [this message] 2017-08-03 12:32 ` [PATCH v3 2/5] ACPI: Make acpi_dev_get_resources() method agnostic Lorenzo Pieralisi 2017-08-03 12:32 ` [PATCH v3 3/5] ACPI: Introduce DMA ranges parsing Lorenzo Pieralisi 2017-08-03 12:32 ` Lorenzo Pieralisi 2017-08-06 5:12 ` kbuild test robot 2017-08-06 5:12 ` kbuild test robot 2017-08-06 5:12 ` kbuild test robot 2017-08-06 9:42 ` Lorenzo Pieralisi 2017-08-06 9:42 ` Lorenzo Pieralisi 2017-08-06 11:21 ` Rafael J. Wysocki 2017-08-06 11:21 ` Rafael J. Wysocki 2017-08-06 11:21 ` Rafael J. Wysocki 2017-08-03 12:32 ` [PATCH v3 4/5] ACPI: Make acpi_dma_configure() DMA regions aware Lorenzo Pieralisi 2017-08-03 12:32 ` Lorenzo Pieralisi 2017-08-03 12:32 ` [PATCH v3 5/5] ACPI/IORT: Add IORT named component memory address limits Lorenzo Pieralisi 2017-08-03 12:32 ` Lorenzo Pieralisi 2017-08-03 13:25 ` [PATCH v3 0/5] ACPI: DMA ranges management Hanjun Guo 2017-08-03 13:25 ` Hanjun Guo 2017-08-03 13:25 ` Hanjun Guo 2017-08-03 15:16 ` Will Deacon 2017-08-03 15:16 ` Will Deacon 2017-08-03 15:45 ` Nate Watterson 2017-08-03 15:45 ` Nate Watterson 2017-08-03 17:21 ` Robin Murphy 2017-08-03 17:21 ` Robin Murphy 2017-08-09 21:14 ` Jeremy Linton 2017-08-09 21:14 ` Jeremy Linton 2017-08-11 8:52 ` Lorenzo Pieralisi 2017-08-11 8:52 ` Lorenzo Pieralisi 2017-08-14 18:41 ` Feng Kan 2017-08-14 18:41 ` Feng Kan 2017-08-14 18:41 ` Feng Kan 2017-11-30 7:28 ` Feng Kan 2017-11-30 7:28 ` Feng Kan 2017-11-30 7:28 ` Feng Kan 2017-12-01 0:43 ` Feng Kan 2017-12-01 0:43 ` Feng Kan 2017-12-01 0:43 ` Feng Kan 2017-12-01 10:39 ` Lorenzo Pieralisi 2017-12-01 10:39 ` Lorenzo Pieralisi 2017-12-01 10:39 ` Lorenzo Pieralisi
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20170803123239.11359-3-lorenzo.pieralisi@arm.com \ --to=lorenzo.pieralisi@arm.com \ --cc=fkan@apm.com \ --cc=hanjun.guo@linaro.org \ --cc=jcm@redhat.com \ --cc=linux-acpi@vger.kernel.org \ --cc=linux-arm-kernel@lists.infradead.org \ --cc=linux-kernel@vger.kernel.org \ --cc=nwatters@codeaurora.org \ --cc=rjw@rjwysocki.net \ --cc=robert.moore@intel.com \ --cc=robin.murphy@arm.com \ --cc=rui.zhang@intel.com \ --cc=will.deacon@arm.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.