linux-arm-kernel.lists.infradead.org archive mirror
 help / color / mirror / Atom feed
From: marc.zyngier@arm.com (Marc Zyngier)
To: linux-arm-kernel@lists.infradead.org
Subject: [PATCH v3 4/8] genirq: irqdomain: Add irq_create_acpi_mapping
Date: Mon, 14 Sep 2015 17:44:03 +0100	[thread overview]
Message-ID: <1442249047-21182-5-git-send-email-marc.zyngier@arm.com> (raw)
In-Reply-To: <1442249047-21182-1-git-send-email-marc.zyngier@arm.com>

In order to help ACPI on arm64 to make use of most of the irqdomain
goodies, add a new entry point (irq_create_acpi_mapping) which
mimics irq_create_of_mapping, except that it takes a new
struct acpi_gsi_descriptor, which is the pendent of of_phandle_args
in the OF world.

We assume that the way the acpi_gsi_descriptor is populated matches
that of of_phandle_args, as the latter is still the building block
for interrupt descriptor in the whole kernel.

Eventually, these two representations should be merged in a single
structure, but that's probably for another day.

Signed-off-by: Marc Zyngier <marc.zyngier@arm.com>
---
 include/linux/acpi.h   |  9 +++++++++
 kernel/irq/irqdomain.c | 18 ++++++++++++++++++
 2 files changed, 27 insertions(+)

diff --git a/include/linux/acpi.h b/include/linux/acpi.h
index 7235c48..4db2f01 100644
--- a/include/linux/acpi.h
+++ b/include/linux/acpi.h
@@ -201,6 +201,15 @@ int acpi_register_gsi (struct device *dev, u32 gsi, int triggering, int polarity
 int acpi_gsi_to_irq (u32 gsi, unsigned int *irq);
 int acpi_isa_irq_to_gsi (unsigned isa_irq, u32 *gsi);
 
+#define MAX_GSI_DESC_PARAMS 16
+struct acpi_gsi_descriptor {
+	int param_count;
+	u32 param[MAX_GSI_DESC_PARAMS];
+};
+
+unsigned int irq_create_acpi_mapping(struct irq_domain *d,
+				     struct acpi_gsi_descriptor *irq_data);
+
 #ifdef CONFIG_X86_IO_APIC
 extern int acpi_get_override_irq(u32 gsi, int *trigger, int *polarity);
 #else
diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
index 619552a..ca1301b 100644
--- a/kernel/irq/irqdomain.c
+++ b/kernel/irq/irqdomain.c
@@ -1,5 +1,6 @@
 #define pr_fmt(fmt)  "irq: " fmt
 
+#include <linux/acpi.h>
 #include <linux/debugfs.h>
 #include <linux/hardirq.h>
 #include <linux/idr.h>
@@ -687,6 +688,23 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)
 }
 EXPORT_SYMBOL_GPL(irq_create_of_mapping);
 
+#ifdef CONFIG_ACPI
+unsigned int irq_create_acpi_mapping(struct irq_domain *d,
+				     struct acpi_gsi_descriptor *irq_data)
+{
+	struct of_phandle_args args;
+	int i;
+
+	for (i = 0; i < min(irq_data->param_count, MAX_PHANDLE_ARGS); i++)
+		args.args[i] = irq_data->param[i];
+
+	args.np = d ? d->domain_token : NULL;
+	args.args_count = i;
+
+	return irq_create_of_mapping(&args);
+}
+#endif
+
 /**
  * irq_dispose_mapping() - Unmap an interrupt
  * @virq: linux irq number of the interrupt to unmap
-- 
2.1.4

  parent reply	other threads:[~2015-09-14 16:44 UTC|newest]

Thread overview: 19+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-09-14 16:43 [PATCH v3 0/8] Making the generic ACPI GSI layer irqdomain aware Marc Zyngier
2015-09-14 16:44 ` [PATCH v3 1/8] genirq: irqdomain: Use an accessor for the of_node field Marc Zyngier
2015-09-14 16:44 ` [PATCH v3 2/8] genirq: irqdomain: Remove irqdomain dependency on struct device_node Marc Zyngier
2015-09-14 23:15   ` Rafael J. Wysocki
2015-09-15  9:18     ` Marc Zyngier
2015-09-16  1:53       ` Rafael J. Wysocki
2015-09-16  7:49         ` Marc Zyngier
2015-09-16  9:00           ` Thomas Gleixner
2015-09-16 12:57           ` Rafael J. Wysocki
2015-09-15 10:58   ` Tomasz Nowicki
2015-09-15 12:04     ` Thomas Gleixner
2015-09-15 12:08       ` Tomasz Nowicki
2015-09-15 12:22     ` Marc Zyngier
2015-09-14 16:44 ` [PATCH v3 3/8] genirq: irqdomain: Allow a domain to be identified with non-DT data Marc Zyngier
2015-09-14 16:44 ` Marc Zyngier [this message]
2015-09-14 16:44 ` [PATCH v3 5/8] acpi: gsi: Always perform an irq domain lookup Marc Zyngier
2015-09-14 16:44 ` [PATCH v3 6/8] acpi: gsi: Add acpi_set_irq_model to initialize the GSI layer Marc Zyngier
2015-09-14 16:44 ` [PATCH v3 7/8] irqchip: GIC: Switch ACPI support to stacked domains Marc Zyngier
2015-09-14 16:44 ` [PATCH v3 8/8] acpi: gsi: Cleanup acpi_register_gsi Marc Zyngier

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=1442249047-21182-5-git-send-email-marc.zyngier@arm.com \
    --to=marc.zyngier@arm.com \
    --cc=linux-arm-kernel@lists.infradead.org \
    /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: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).