aboutsummaryrefslogtreecommitdiffstats
path: root/meta-seattle/recipes-kernel/linux/files/412-6-styx-linux-tracking.git-1c9b07fb461d87b41854fef3a07fff65e0d95113.patch
diff options
context:
space:
mode:
Diffstat (limited to 'meta-seattle/recipes-kernel/linux/files/412-6-styx-linux-tracking.git-1c9b07fb461d87b41854fef3a07fff65e0d95113.patch')
-rw-r--r--meta-seattle/recipes-kernel/linux/files/412-6-styx-linux-tracking.git-1c9b07fb461d87b41854fef3a07fff65e0d95113.patch163
1 files changed, 0 insertions, 163 deletions
diff --git a/meta-seattle/recipes-kernel/linux/files/412-6-styx-linux-tracking.git-1c9b07fb461d87b41854fef3a07fff65e0d95113.patch b/meta-seattle/recipes-kernel/linux/files/412-6-styx-linux-tracking.git-1c9b07fb461d87b41854fef3a07fff65e0d95113.patch
deleted file mode 100644
index 345218ca..00000000
--- a/meta-seattle/recipes-kernel/linux/files/412-6-styx-linux-tracking.git-1c9b07fb461d87b41854fef3a07fff65e0d95113.patch
+++ /dev/null
@@ -1,163 +0,0 @@
-From 4f0837d4d1274b6e25d6bd76ac448e25592d6ea0 Mon Sep 17 00:00:00 2001
-From: Adrian Calianu <adrian.calianu@enea.com>
-Date: Tue, 11 Aug 2015 13:37:41 +0200
-Subject: [PATCH] [PATCH] DO NOT UPSTREAM YET: irqdomain
-
-From: Suravee Suthikulpanit <Suravee.Suthikulpanit@amd.com>
-Date: Tue, 20 Jan 2015 20:02:28 -0600
-
-Upstream-Status: Pending
-
-Ported from 3.19 kernel, patch provided by AMD.
-
-Signed-off-by: Adrian Calianu <adrian.calianu@enea.com>
----
- include/linux/irqdomain.h | 14 +++++++++++++-
- kernel/irq/irqdomain.c | 44 ++++++++++++++++++++++++++++++++++++--------
- 2 files changed, 49 insertions(+), 9 deletions(-)
-
-diff --git a/include/linux/irqdomain.h b/include/linux/irqdomain.h
-index 676d730..ddd6602 100644
---- a/include/linux/irqdomain.h
-+++ b/include/linux/irqdomain.h
-@@ -45,6 +45,11 @@ struct irq_data;
- /* Number of irqs reserved for a legacy isa controller */
- #define NUM_ISA_INTERRUPTS 16
-
-+enum irq_domain_ref_type {
-+ IRQ_DOMAIN_REF_OF_DEV_NODE = 0,
-+ IRQ_DOMAIN_REF_ACPI_MSI_FRAME,
-+};
-+
- /**
- * struct irq_domain_ops - Methods for irq_domain objects
- * @match: Match an interrupt controller device node to a host, returns
-@@ -61,7 +66,7 @@ struct irq_data;
- * to setup the irq_desc when returning from map().
- */
- struct irq_domain_ops {
-- int (*match)(struct irq_domain *d, struct device_node *node);
-+ int (*match)(struct irq_domain *d, enum irq_domain_ref_type type, void *data);
- int (*map)(struct irq_domain *d, unsigned int virq, irq_hw_number_t hw);
- void (*unmap)(struct irq_domain *d, unsigned int virq);
- int (*xlate)(struct irq_domain *d, struct device_node *node,
-@@ -116,6 +121,11 @@ struct irq_domain {
-
- /* Optional data */
- struct device_node *of_node;
-+ enum irq_domain_ref_type type;
-+ union {
-+ struct device_node *of_node;
-+ void *acpi_ref;
-+ };
- struct irq_domain_chip_generic *gc;
- #ifdef CONFIG_IRQ_DOMAIN_HIERARCHY
- struct irq_domain *parent;
-@@ -163,6 +173,8 @@ struct irq_domain *irq_domain_add_legacy(struct device_node *of_node,
- void *host_data);
- extern struct irq_domain *irq_find_host(struct device_node *node);
- extern void irq_set_default_host(struct irq_domain *host);
-+extern struct irq_domain *irq_find_domain(enum irq_domain_ref_type type,
-+ void *ref);
-
- /**
- * irq_domain_add_linear() - Allocate and register a linear revmap irq_domain.
-diff --git a/kernel/irq/irqdomain.c b/kernel/irq/irqdomain.c
-index 7fac311..0f0559f 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/interrupt.h>
-@@ -187,10 +188,11 @@ struct irq_domain *irq_domain_add_legacy(struct device_node *of_node,
- EXPORT_SYMBOL_GPL(irq_domain_add_legacy);
-
- /**
-- * irq_find_host() - Locates a domain for a given device node
-- * @node: device-tree node of the interrupt controller
-+ * irq_find_domain() - Locates a domain for a given a refence pointer
-+ * @type: specify irq domain reference pointer type to be match
-+ * @ref: pointer to the reference data structure to be matched
- */
--struct irq_domain *irq_find_host(struct device_node *node)
-+struct irq_domain *irq_find_domain(enum irq_domain_ref_type type, void *ref)
- {
- struct irq_domain *h, *found = NULL;
- int rc;
-@@ -202,10 +204,16 @@ struct irq_domain *irq_find_host(struct device_node *node)
- */
- mutex_lock(&irq_domain_mutex);
- list_for_each_entry(h, &irq_domain_list, link) {
-- if (h->ops->match)
-- rc = h->ops->match(h, node);
-- else
-- rc = (h->of_node != NULL) && (h->of_node == node);
-+ if (h->ops->match) {
-+ rc = h->ops->match(h, type, ref);
-+ } else if (type == IRQ_DOMAIN_REF_OF_DEV_NODE ||
-+ type == IRQ_DOMAIN_REF_ACPI_MSI_FRAME) {
-+ /* Here, we just need to compare reference pointer */
-+ rc = (h->of_node != NULL) && (h->of_node == ref);
-+ } else {
-+ /* For non-DT and non-ACPI reference, must specify match */
-+ BUG();
-+ }
-
- if (rc) {
- found = h;
-@@ -215,6 +223,16 @@ struct irq_domain *irq_find_host(struct device_node *node)
- mutex_unlock(&irq_domain_mutex);
- return found;
- }
-+EXPORT_SYMBOL_GPL(irq_find_domain);
-+
-+/**
-+ * irq_find_host() - Locates a domain for a given device node
-+ * @node: device-tree node of the interrupt controller
-+ */
-+struct irq_domain *irq_find_host(struct device_node *node)
-+{
-+ return irq_find_domain(IRQ_DOMAIN_REF_OF_DEV_NODE, node);
-+}
- EXPORT_SYMBOL_GPL(irq_find_host);
-
- /**
-@@ -464,12 +482,16 @@ int irq_create_strict_mappings(struct irq_domain *domain, unsigned int irq_base,
- }
- EXPORT_SYMBOL_GPL(irq_create_strict_mappings);
-
-+//SURAVEE: HACK
-+#include <linux/irqchip/arm-gic.h>
-+
- unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)
- {
- struct irq_domain *domain;
- irq_hw_number_t hwirq;
- unsigned int type = IRQ_TYPE_NONE;
- int virq;
-+ struct gic_irq_alloc_info info;
-
- domain = irq_data->np ? irq_find_host(irq_data->np) : irq_default_domain;
- if (!domain) {
-@@ -496,7 +518,13 @@ unsigned int irq_create_of_mapping(struct of_phandle_args *irq_data)
- if (virq)
- return virq;
-
-- virq = irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, irq_data);
-+//SURAVEE: TODO: Need to make this as part of irqdomain ops
-+ if (gic_init_irq_alloc_info(irq_data->args[0], irq_data->args[1],
-+ irq_data->args[2], irq_data->np,
-+ &info))
-+ return 0;
-+
-+ virq = irq_domain_alloc_irqs(domain, 1, NUMA_NO_NODE, &info);
- if (virq <= 0)
- return 0;
- } else {
---
-1.9.1
-